Skip to content

Docker Scout を Microsoft Azure DevOps パイプラインに統合する

trigger:
  - main
 
resources:
  - repo: self
 
variables:
  tag: "$(Build.BuildId)"
  image: "vonwig/nodejs-service"

これにより、アプリケーションに特定のコンテナイメージを使用し、各新しいイメージビルドにビルドIDでタグを付けるためのワークフローが設定されます。

次に、YAMLファイルに以下を追加します:

stages:
  - stage: Build
    displayName: Build image
    jobs:
      - job: Build
        displayName: Build
        pool:
          vmImage: ubuntu-latest
        steps:
          - task: Docker@2
            displayName: Build an image
            inputs:
              command: build
              dockerfile: "$(Build.SourcesDirectory)/Dockerfile"
              repository: $(image)
              tags: |
                $(tag)
          - task: CmdLine@2
            displayName: Find CVEs on image
            inputs:
              script: |
                # Docker Scout CLIをインストール
                curl -sSfL https://raw.githubusercontent.com/docker/scout-cli/main/install.sh | sh -s --
                # Docker Scout CLIに必要なDocker Hubへのログイン
                docker login -u $(DOCKER_HUB_USER) -p $(DOCKER_HUB_PAT)
                # ビルドされたイメージのCVEレポートを取得し、重大または高優先度のCVEが検出された場合にパイプラインを失敗させる
                docker scout cves $(image):$(tag) --exit-code --only-severity critical,high

これにより、先述のフローが作成されます。チェックアウトされた Dockerfile を使用してイメージをビルドおよびタグ付けし、Docker Scout CLI をダウンロードしてから、新しいタグに対して cves コマンドを実行して CVE レポートを生成します。表示されるのは重大または高優先度の脆弱性のみです。