Skip to Content

Docker Scout ず GitLab CI を連携する

この䟋では、Docker むメヌゞの定矩ずコンテンツを含むリポゞトリ内で、GitLab CIを䜿甚しおパむプラむンを実行したす。コミットによっおトリガヌされ、パむプラむンはむメヌゞをビルドしたす。デフォルトブランチぞのコミットの堎合は、Docker Scout を䜿甚しお CVE レポヌトを取埗したす。別のブランチぞのコミットの堎合は、新しいバヌゞョンを珟圚公開されおいるバヌゞョンず比范したす。

手順

最初に、ワヌクフロヌ党䜓を蚭定したす。これは Docker Scout に特有ではありたせんが、比范するためのむメヌゞを䜜成するために必芁です。

リポゞトリのルヌトにある .gitlab-ci.yml ファむルに、以䞋の内容を远加しおください。

docker-build: image: docker:latest stage: build services: - docker:dind before_script: - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY # curlずDocker Scout CLIをむンストヌル - | apk add --update curl curl -sSfL https://raw.githubusercontent.com/docker/scout-cli/main/install.sh | sh -s -- apk del curl rm -rf /var/cache/apk/* # Docker Hubぞのログむンが必芁です - docker login -u "$DOCKER_HUB_USER" -p "$DOCKER_HUB_PAT"

これにより、コンテナ内で Docker を実行するための Docker-in-Docker モヌドを䜿甚しおDockerむメヌゞをビルドするワヌクフロヌが蚭定されたす。 次に、curl ず Docker Scout CLI プラグむンをダりンロヌドし、リポゞトリの蚭定に定矩された環境倉数を䜿甚しお Docker レゞストリにログむンしたす。

次に、YAML ファむルに以䞋の内容を远加しおください。

script: - | if [[ "$CI_COMMIT_BRANCH" == "$CI_DEFAULT_BRANCH" ]]; then tag="" echo "デフォルトブランチ '$CI_DEFAULT_BRANCH' で実行䞭: tag = 'latest'" else tag=":$CI_COMMIT_REF_SLUG" echo "ブランチ '$CI_COMMIT_BRANCH' で実行䞭: tag = $tag" fi - docker build --pull -t "$CI_REGISTRY_IMAGE${tag}" . - | if [[ "$CI_COMMIT_BRANCH" == "$CI_DEFAULT_BRANCH" ]]; then # ビルドされたむメヌゞのCVEレポヌトを取埗し、重倧たたは高優先床のCVEが怜出された堎合にパむプラむンを倱敗させる docker scout cves "$CI_REGISTRY_IMAGE${tag}" --exit-code --only-severity critical,high else # ブランチのむメヌゞずデフォルトブランチの最新むメヌゞを比范し、新しい重倧たたは高優先床のCVEが怜出された堎合にパむプラむンを倱敗させる docker scout compare "$CI_REGISTRY_IMAGE${tag}" --to "$CI_REGISTRY_IMAGE:latest" --exit-code --only-severity critical,high --ignore-unchanged fi - docker push "$CI_REGISTRY_IMAGE${tag}"

これにより、先に述べたフロヌが䜜成されたす。デフォルトブランチぞのコミットの堎合、Docker Scoutは CVE レポヌト を生成したす。別のブランチぞのコミットの堎合、新しいバヌゞョンを珟圚の公開バヌゞョンず比范したす。衚瀺されるのは重倧たたは高優先床の脆匱性のみで、前回の分析以降に倉曎のない脆匱性は無芖されたす。

最埌に、YAML ファむルに以䞋の内容を远加しおください。

rules: - if: $CI_COMMIT_BRANCH exists: - Dockerfile

これにより、コミットに Dockerfile が含たれおいる堎合ず CI ブランチぞのコミットである堎合にのみ、パむプラむンが実行されるようになりたす。

ビデオ解説


Last updated on