GAミント至上主義

Web Monomaniacal Developer.

CircleCI Orb + Cloud BuildでArtifact Registryにイメージをプッシュする際にタグにコミットハッシュを使う

CircleCIでCloud Runにデプロイする際、下記のOrbを使ったけどトリガー経由ではないので、コミットハッシュをCloud Build側で使うのがちょっとややこしかったのでメモ。
CircleCIから--substitutions を使って渡す必要がありました。

CircleCI Developer Hub - circleci/gcp-cloud-run


config.yml

version: 2.1
orbs:
  gcp-cloud-run: circleci/gcp-cloud-run@1.0.2

// 省略
jobs:
  deploy-server:
    docker:
      - image: 'cimg/base:stable'
    steps:
      - checkout
      - gcp-cloud-run/init:
          gcloud-service-key: GCLOUD_SERVICE_KEY
          google-project-id: GOOGLE_PROJECT_ID
      - gcp-cloud-run/build:
          args: --substitutions=COMMIT_SHA=${CIRCLE_SHA1}
          config: ./cloudbuild.yml
// 省略

GCLOUD_SERVICE_KEY、GOOGLE_PROJECT_IDは環境変数

モノレポ構成でDockerfileの場所を変えるためcloudbuild.ymlを使用しています。

上記の設定でCOMMIT_SHAを渡したのでCloud Build側で使えるようになっています。

cloudbulld.yml

steps:
  - id: "build the container image"
    name: "gcr.io/cloud-builders/docker"
    args: ["build", "-t", "location-docker.pkg.dev/${PROJECT_ID}/api/image-name:${COMMIT_SHA}", "-f", "./Dockerfiles/api/Dockerfile", "."]

  - id: "push container image"
    name: "gcr.io/cloud-builders/docker"
    args: ["push", "location-docker.pkg.dev/${PROJECT_ID}/api/image-name:${COMMIT_SHA}"]

タグ名もArtifact Registryの設定よります。
https://cloud.google.com/artifact-registry?hl=ja


COMMIT_SHA以外を使いたい場合はこちら
https://cloud.google.com/build/docs/build-config-file-schema#substitutions