Google Cloud Build 教學 (一) — 透過本地端完成 GCP Cloud Build 服務

楊承翰
7 min readJan 15, 2019

--

本篇重點:此篇為 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 的方式來實作簡單的範例。

選擇 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.shDockerfile ,如下圖

開始實作 — 專案建立

在這之前,我們必須要再 GCP 上面新開好一個測試的專案,步驟如下:

創建測試專案

創建專案

專案名稱

這邊要記住專案ID,之後會用到

開始創建 Docker filfe,這邊有兩種方法,一種是 Dockerfile,一種是用 yaml,以下兩種都會示範

開始實作 — 建立 Docker Image

在 Cloud Build中有兩種方式可以制定流程, 一種是直接使用 Dockerfile, 另一種是使用 YAML/JSON的設定檔。 (延伸閱讀)

Dockerfile

在本機使用 gcloud 的指令創建,這邊的 [PROJECT_ID] 就是上面有提到的專案的 ID,在這邊填入您自己的 ID 即可。

先透過本地的 command line 登入 GCP 取得權限,指令如下:

gcloud auth login

之後會開啟網頁要求登入取得權限

選擇自己在GCP上的帳號
點擊允許
看到此畫面表示已經授權成功

選擇要用哪個 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(部署)的部分,根據專案的需求會有不同的設計和設定,進階的部分留到下一篇再來說明示範吧~!。

參考文件

  1. https://cloud.google.com/sdk/docs/quickstart-macos
  2. https://cloud.google.com/cloud-build/docs/quickstarts?hl=zh-tw

--

--