GitLab CI/CD パイプラインで kaniko を使用してビルドできる Dockerfile があります。現在、build
ステージはコンテナーを構築し、それをリモートの Docker リポジトリーにプッシュします。
CI/CD パイプラインのステージの概念を利用してイメージを構築し、自動テストを実行してコンテナー セキュリティ分析ツール ( Trivy ) を実行し、最後のステップとして、すべての前のステップが成功した場合は、レジストリにプッシュします。
- ビルドイメージ
- 自動テストの実行 (作成されたイメージに基づく)
- 作成したイメージのセキュリティを分析する (Trivy を使用)
- 前の手順が成功した場合にのみイメージをレジストリにプッシュし、イメージを再構築しない
イメージをビルドしてプッシュするコマンドは次のとおりです。
build:latest-master:
stage: build
image:
name: gcr.io/kaniko-project/executor:debug
entrypoint: [""]
script:
- echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
- /kaniko/executor --cache=true --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination $CI_REGISTRY_IMAGE:latest
only:
- master
プッシュを実行しないオプション/コマンド ライン フラグと、イメージの tarball のみを生成する--no-push
フラグがあります。--tar-path
これらのフラグとコマンドを組み合わせて、レジストリにプッシュせずにイメージのみを作成するにはどうすればよいでしょうか。セキュリティ チェックが実行されている場合にのみイメージをプッシュする必要があるからです。そして、プッシュ ステージ (GitLab CI ジョブ) はどのように見えますか。特に正確な kaniko コマンド ラインです。
最後のプッシュ ステージ/ジョブが、以前にビルドされたイメージまたはキャッシュを再利用し、再構築しないようにできれば素晴らしいことです。 tarball は何とか使えると思いますが、kaniko がそれを使用するためのフラグは何でしょうか? それとも、その tarball を使用し、docker コマンドを使用して tarball をレジストリにプッシュするだけですか?