GitHub ActionsでDockerイメージをビルドしてDockleを実行するようにした
GitHub ActionsでDockerイメージをビルドして、コンテナイメージのセキュリティ診断ツールDockleを実行するようにしました。
GitHub Actionsの設定ファイルは下記になります(Docker BuildとDockleの実行部分のみ抜粋)。
env: TEST_TAG: textlint-articles:1.0.0 jobs: dockle: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: docker/setup-buildx-action@v2 - name: Cache Docker layers uses: actions/cache@v3 with: path: /tmp/.buildx-cache key: ${{ runner.os }}-buildx-${{ github.sha }} restore-keys: | ${{ runner.os }}-buildx- - name: Only docker build uses: docker/build-push-action@v3 with: context: . load: true tags: ${{ env.TEST_TAG }} cache-from: type=local,src=/tmp/.buildx-cache cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max - name: Move cache run: | rm -rf /tmp/.buildx-cache mv /tmp/.buildx-cache-new /tmp/.buildx-cache - uses: hands-lab/dockle-action@v1 with: image: ${{ env.TEST_TAG }} exit-code: '1' exit-level: WARN
ちなみに設定ファイル全体は下記の通りで、Dockerfile自体のLintツールであるhadolintも実行するようにしています(記事管理用のリポジトリなのでtextlintも)。
Dockleを実行するうえでの工夫点は2つあります。
1つ目は、docker/build-push-action@v3
を使ってイメージをビルドしたあとにload
オプションでDockerイメージとして出力するようにしている点です。
https://github.com/docker/build-push-action/blob/master/docs/advanced/export-docker.md
2つ目は、hands-lab/dockle-action@v1
のexit-code
オプションに1
を設定している点です。これにより、DockleのチェックでWARNレベル以上の項目に引っかかればCIが失敗します。