iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 15
0

簡介

我們把 Docker 整合到 Jenkins CI/CD 的步驟,讓 Jenkins 幫我們自動建置專案 Docker Image,這樣我們只要管理好我們的 Dockerfile ,自動化建置、測試、建置Docker Image,最後在上傳到 Google Registry 倉庫.

Jenkins Docker

更新APT

sudo apt update

安裝必要插件

sudo apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common

安裝 官方 Docker repository

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

增加 Docker repository 到 APT

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"

安裝 docker-ce

sudo apt install docker-ce

檢查是否正常取動

sudo systemctl status docker

解決 Jenkins build permission denied

sudo usermod -aG docker jenkins
sudo chmod 777 /var/run/docker.sock

Jenkin Project 整合 docker build

執行 Shell Script

bash prepare.sh
env/bin/py.test --junitxml=pytest_result.xml --cov=ithome_pellok_2018 --cov-report=xml
rm -f ithome_pellok_2018.sqlite
docker build --rm -t ithome_pellok_2018:${BUILD_NUMBER} .

Jenkins gcloud

安裝 gcloud

# Create environment variable for correct distribution
export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"

# Add the Cloud SDK distribution URI as a package source
echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list

# Import the Google Cloud Platform public key
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -

# Update the package list and install the Cloud SDK
sudo apt-get update && sudo apt-get install google-cloud-sdk

初始化 gcloud

gcloud init

初始化 gcloud

螢幕快照 2018-10-16 下午9.43.24.png

複製連結到 瀏覽器登入 Google 帳號

螢幕快照 2018-10-16 下午9.44.24.png
螢幕快照 2018-10-16 下午9.44.41.png
螢幕快照 2018-10-16 下午9.44.50.png

複製授權碼到 Concole

螢幕快照 2018-10-16 下午9.46.11.png

選擇專案和資料中心

螢幕快照 2018-10-16 下午9.46.32.png

測試上傳

docker tag ithome_pellok_2018:28 asia.gcr.io/tidal-surf-219013/ithome_pellok_2018:28
gcloud docker -- push asia.gcr.io/tidal-surf-219013/ithome_pellok_2018:28

https://ithelp.ithome.com.tw/upload/images/20181016/20072651Mv4N3SMOLV.png

整合 Jenkins Docker Google Regestry

# 安裝專案環境
bash prepare.sh
# 執行測試
env/bin/py.test --junitxml=pytest_result.xml --cov=ithome_pellok_2018 --cov-report=xml
rm -f ithome_pellok_2018.sqlite
# 建置 Docker
docker build --rm -t ithome_pellok_2018:${BUILD_NUMBER} .
# Doker Image 打標籤
docker tag ithome_pellok_2018:${BUILD_NUMBER} asia.gcr.io/tidal-surf-219013/ithome_pellok_2018:${BUILD_NUMBER}
# 上傳到 google cloud
gcloud docker -- push asia.gcr.io/tidal-surf-219013/ithome_pellok_2018:${BUILD_NUMBER}

檢查 Google Registry

螢幕快照 2018-10-16 下午10.04.01.png

結論

在這邊把 Docker 整合到 CI/CD 的流程中,再來就是部署到 Kubernetes 叢集架構.Jenkins 還有 Pipeline 模式,只是還沒有研究,好像也是不錯用,有時間來試試看.

參考

How to Install and Use Docker on Debian 9
Debian 和 Ubuntu 快速入門


上一篇
Day 14 Google Cloud 自動建置 Docker Image
下一篇
Day 16 部署到 Kubernetes
系列文
DevOps學習之旅30

尚未有邦友留言

立即登入留言