本篇重點:此篇為 Cloud Build 簡易教學,用官方提供的範例示範從無到有,透過在本地端手動跑完整個 Cloud Build 流程。
Cloud Build 介紹
GCP 的 Cloud Build,是一個很方便的服務,簡單來說,以前我們必須要在本地端,根據我們的需求來去處理有關測試和部署的部分,現在只要透過GCP 的 Cloud Build 就可以完成全部自動化的測試和部署的服務。
以 Laravel 舉例來說,以前要跑單元測試必須要自己手動下指令,在本機端等待跑完,如果專案較為龐大或複雜的情況下,往往都會要等很久。
電腦比較不好的人,就必須浪費時間在等待結果,但現在可以透過 GCP 的 Cloud Build 直接在我們本地變更 push 上 Git 的同時,自動幫我們在線上建立我們測試的環境,並跑單元測試,非常的方便。
預知更多詳細的說明可以參考 Cloud Build 官方網站說明
開始實作 — 初步準備
先安裝好 google 的 SDK,詳細安裝教學 →點我
本篇是按照 GCP 上的官方快速開始範例所撰寫的,以下相關的程式碼跟說明可參閱 → GCP官方快速開始說明
有兩種選擇,我們用 Docker 的方式來實作簡單的範例。
這邊會使用 Cloud Build 構建 Docker image 並將 image 推送到 Container Registry。首先使用 Dockerfile
構建映像,然後使用 Cloud Build 的構建配置文件構建相同的映像。
- 首先在本地的根目錄先創建一個測試用的資料夾,這邊取名為
gcp
- 新增
quickstart.sh
#!/bin/sh
echo "Hello, world! The time is $(date)."
- 新增一個
Dockerfile
FROM alpine
COPY quickstart.sh /
CMD ["/quickstart.sh"]
- 給
quickstart.sh
執行權限
chmod +x quickstart.sh
結果在根目錄會有 quickstart.sh
和 Dockerfile
,如下圖
開始實作 — 專案建立
在這之前,我們必須要再 GCP 上面新開好一個測試的專案,步驟如下:
創建測試專案
專案名稱
開始創建 Docker filfe,這邊有兩種方法,一種是 Dockerfile,一種是用 yaml,以下兩種都會示範
開始實作 — 建立 Docker Image
在 Cloud Build中有兩種方式可以制定流程, 一種是直接使用 Dockerfile, 另一種是使用 YAML/JSON的設定檔。 (延伸閱讀)
Dockerfile
在本機使用 gcloud 的指令創建,這邊的 [PROJECT_ID]
就是上面有提到的專案的 ID,在這邊填入您自己的 ID 即可。
先透過本地的 command line 登入 GCP 取得權限,指令如下:
gcloud auth login
之後會開啟網頁要求登入取得權限
選擇要用哪個 project,指令如下:
gcloud config set project [PROJECT_ID]
下面指令的意思是,創建 docker image 並且 push 到線上的 Container Registry
gcloud builds submit --tag gcr.io/[PROJECT_ID]/quickstart-image .
創建 docker image 中:
成功的話會如下回應:
Yaml
創建一個 cloudbuild.yaml
,加入以下程式碼(其中 project ID 請依據個人的專案 ID 填入)
steps:
- name: 'gcr.io/cloud-builders/docker'
args: [ 'build', '-t', 'gcr.io/$PROJECT_ID/quickstart-image', '.' ]
images:
- 'gcr.io/$PROJECT_ID/quickstart-image'
開始創建 docker image
gcloud builds submit --config cloudbuild.yaml .
我們可以到 GCP 上確認剛剛兩種方式所產生的 image 有沒有正確的被推送到 Container Registry。
- Container Registry
- Cloud Build
可以看到,透過剛剛兩種方式所創建的 docker image 都以正確被建立並 推送到 Container Registry 儲存起來。
開始實作 — 執行 Docker Image
最後一步就是要直接執行剛剛所創建並儲存好的 docker image,看看是否會如預期的在 command 印出預期的內容。
根據官網的說明,在本地執行儲存在 Container Registry 的 doocker image 時,需要 Container Registry 憑據(這邊只需要執行此操作一次)
輸入以下指令:
gcloud auth configure-docker
之後會跑出如下,案 Y 即可
到這邊就完成設定了。
開始執行,這邊就是去執行剛剛上面步驟所創建好的 docker image,預期要印出 Hello word 和時間,指令如下:
docker run gcr.io/[PROJECT_ID]/quickstart-image
成功的話,結果如下
可以看到 Hello, word 和當下的年、月、日和時間,到這邊一個簡單的範例以及 Cloud Build 流程就成功的結束囉~!
總結
到此為此,我們就完整的跑過 Cloud Build 的流程,之後就是較為進階的用法,結合 Git、Bitbucket,簡單來說,就是可以透過本地的變更來去觸發 Cloud Build,先創建 docker image,並執行 CI (單元測試、自動測試…等),確定沒問題的話,在進行後面的 CD(部署)的部分,根據專案的需求會有不同的設計和設定,進階的部分留到下一篇再來說明示範吧~!。