コンテナイメージをビルド・プッシュ
kanikoがメンテナンスされなくなったため、BuildKitを使ってコンテナイメージを作成するためのGitLab CI向け設定を記載します。
cf.
設定
環境変数
GitLab上に、下記要領で環境変数を登録しておいてください:
HARBOR_HOST: {harborサーバのIP}:80HARBOR_USERNAME:robot$noboなどアカウント名HARBOR_PASSWORD: アクセストークンHARBOR_PROJECT: harbor上のプロジェクト名
config.toml
GitLab Runnerサーバ上のコンフィグファイルについて、下記修正を入れてください:
[runners.docker]
privileged = true # false -> trueに変更して特権モードを許可
.gitlab-ci.yml
stages:
- test
- build
- push
variables:
MODULE: easyapp # アプリのモジュール名
ARTIFACT_PATH: main # ビルド成果物のパス
push:
stage: push
image:
name: moby/buildkit:rootless
entrypoint: [""]
variables:
BUILDKITD_FLAGS: --oci-worker-no-process-sandbox
before_script:
- mkdir -p ~/.docker
- echo "{\"auths\":{\"$HARBOR_HOST\":{\"username\":\"$HARBOR_USERNAME\",\"password\":\"$HARBOR_PASSWORD\"}}}" > ~/.docker/config.json
script: # registry.insecure=trueを付与してHTTP通信を許可
- |
buildctl-daemonless.sh build \
--frontend dockerfile.v0 \
--local context=. \
--local dockerfile=. \
--opt build-arg:ARTIFACT_PATH=${ARTIFACT_PATH} \
--output type=image,name=${HARBOR_HOST}/${HARBOR_PROJECT}/${MODULE}:${CI_COMMIT_TAG},push=true,registry.insecure=true
rules:
- if: $CI_COMMIT_TAG