CloudBuildでは$TAG_NAMEなど予め用意された環境変数が使えるが,それでは足りないときがある.コマンドの実行結果を使いたいときはentrypoint
をshellにしてあげればよい.substitutionの仕組みもあるが,毎回コマンドでsubstitutionの値を指定して実行する必要があり,CloudBuild Trigger経由では静的な値しか使えず使い勝手が悪い.
Docker image builderとしてkaniko/executorの例を挙げる. VERSIONというファイルをプロジェクトルートディレクトリに用意して. $(cat /workspace/VERSION)
にてタグ名を指定している.
VERSION
1.0.0
cloudbuild.yaml
steps:
- name: gcr.io/kaniko-project/executor:debug
entrypoint: sh
args:
- -c
- |
/kaniko/executor \
--destination=gcr.io/$PROJECT_ID/example:$(cat /workspace/VERSION)
なお,kaniko/executorはscratchベースのためsh
が使えない.公式でsh
が使えるdebug版が用意されていたのでdebug版を使用した.