iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 27
0
DevOps

誤入 DevOps 叢林的後端工程師系列 第 27

Day27 - 用 Cloud Build 實作 CI 部分

GCP 裡面有一個服務叫 Cloud Build,它可以幫你做持續建構、測試和部署,你可以把它想像成一個簡易版的 Jenkins,更棒的是它也完美整合了 GKE,從整個映像檔打包到部署上去,只是幾分鐘的時間而已,而且官方已經內建了許多指令,如果不夠的話,也可以往社群的部分找找。

https://cloud.google.com/cloud-build/

費用定價

每天前 120 分鐘建構時間免費,超出的部分每分鐘 0.003 美元

官方提供內建的指令

  • bazel
  • curl
  • docker
  • dotnet
  • gcloud
  • git
  • go
  • gradle
  • gsutil
  • kubectl
  • mvn
  • npm
  • wget
  • yarn

新增觸發條件

語法說明

- name: 'gcr.io/cloud-builders/npm'
  id: api-test
  args: ['test']
  • 步驟的 name 都是一個 docker 映像檔
  • 每個步驟的 id 不能重複
  • 以上面的例子來說,整個指令組合起來就是 npm test

cloudbuild.yaml

這個建構會首先會先跑 npm test 指令做測試,然後接著,透過 docker 指令打包映像檔,最後再將映像檔上傳至 Container Registry。

steps:
  # 測試
  - name: 'gcr.io/cloud-builders/npm'
    id: api-test
    args: ['test']

  # 編譯映像檔
  - name: 'gcr.io/cloud-builders/docker'
    id: api-build
    env: ['NODE_ENV=$_NODE_ENV']
    args:
      - 'build'
      - '-f'
      - 'docker/api-server.Dockerfile'
      - '--build-arg'
      - 'NODE_ENV=$_NODE_ENV'
      - '-t'
      - 'gcr.io/$PROJECT_ID/api-server:ci-$_NODE_ENV-$SHORT_SHA'
      - '.'

  # 上傳映像檔
  - name: 'gcr.io/cloud-builders/docker'
    id: api-push
    args:
      - 'push'
      - 'gcr.io/$PROJECT_ID/api-server:ci-$_NODE_ENV-$SHORT_SHA'

延伸閱讀


上一篇
Day26 - Kubernetes API version
下一篇
Day28 - 透過 Cloud Build 自動部署到 GKE
系列文
誤入 DevOps 叢林的後端工程師30

尚未有邦友留言

立即登入留言