コンテンツへスキップ

Cloud Run+Cloud Buildで、GitのCommitIDをコンテナ内に詰めてデプロイされている内容を確認しやすく

Google Cloudを使ったアプリケーション開発において、「簡単にデプロイされているアプリのバージョンを確認したい」という要望があったので、gitのCommit IDやpushしたタグをコンテナに詰める方法をメモっておきます。

なお、メインはCloud Buildのため、Cloud RunとSource Repogitriesについては省略しています。

ディレクトリ構成

┣cloudbuild
┃┗cloudbuild.yaml
┗container
 ┣Dockerfile
 ┗html
  ┗index.html

cloudbuild/cloudbuild.yamlの中身(の一部)

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
steps:
- name: gcr.io/cloud-builders/docker
args:
- build
- '--no-cache'
- '-t'
- '$_GCR_HOSTNAME/$PROJECT_ID/$REPO_NAME/$_SERVICE_NAME:$COMMIT_SHA'
- container
- '-f'
- container/Dockerfile
- '--build-arg'
- COMMIT_SHA=$COMMIT_SHA
- '--build-arg'
- TAG_NAME=$TAG_NAME
id: Build
(長いので以下略/Cloud RunをWebコンソールから作ったときに作成されるものと同じ)
steps: - name: gcr.io/cloud-builders/docker args: - build - '--no-cache' - '-t' - '$_GCR_HOSTNAME/$PROJECT_ID/$REPO_NAME/$_SERVICE_NAME:$COMMIT_SHA' - container - '-f' - container/Dockerfile - '--build-arg' - COMMIT_SHA=$COMMIT_SHA - '--build-arg' - TAG_NAME=$TAG_NAME id: Build (長いので以下略/Cloud RunをWebコンソールから作ったときに作成されるものと同じ)
steps:
  - name: gcr.io/cloud-builders/docker
    args:
      - build
      - '--no-cache'
      - '-t'
      - '$_GCR_HOSTNAME/$PROJECT_ID/$REPO_NAME/$_SERVICE_NAME:$COMMIT_SHA'
      - container
      - '-f'
      - container/Dockerfile
      - '--build-arg'
      - COMMIT_SHA=$COMMIT_SHA
      - '--build-arg'
      - TAG_NAME=$TAG_NAME
    id: Build
    (長いので以下略/Cloud RunをWebコンソールから作ったときに作成されるものと同じ)

container/Dockerfile の中身

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
FROM nginx
COPY ./html /usr/share/nginx/html
ARG COMMIT_SHA
ARG TAG_NAME
ENV COMMIT_SHA ${COMMIT_SHA:-local}
ENV TAG_NAME ${TAG_NAME:-local}
RUN echo ${COMMIT_SHA} > /usr/share/nginx/html/commit.txt
RUN echo ${TAG_NAME} > /usr/share/nginx/html/tag.txt
FROM nginx COPY ./html /usr/share/nginx/html ARG COMMIT_SHA ARG TAG_NAME ENV COMMIT_SHA ${COMMIT_SHA:-local} ENV TAG_NAME ${TAG_NAME:-local} RUN echo ${COMMIT_SHA} > /usr/share/nginx/html/commit.txt RUN echo ${TAG_NAME} > /usr/share/nginx/html/tag.txt
FROM nginx

COPY ./html /usr/share/nginx/html

ARG COMMIT_SHA
ARG TAG_NAME

ENV COMMIT_SHA ${COMMIT_SHA:-local}
ENV TAG_NAME ${TAG_NAME:-local}

RUN echo ${COMMIT_SHA} > /usr/share/nginx/html/commit.txt
RUN echo ${TAG_NAME} > /usr/share/nginx/html/tag.txt

--build-arg を使ってCOMMIT_SHAとTAG_NAMEを渡します。

ビルド時にARGで受け取った後、環境変数に格納して公開ディレクトリのテキストファイルに書き出しています。

1.0.2のタグが付いたCommit IDが42e23d5のコミット

上記画像の場合、[URL]/commit.txtにアクセスすると、「42e23d574a162804813b1a5dee1da7cb8247f734」
[URL]/tag.txtにアクセスすると、「1.0.2」のテキストが表示されます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA