💨

GitHub Actionsのdocker/build-push-actionにはcontext指定をする

2024/11/01に公開

こんにちはムーザルちゃんねるの@zaruです。GitHub Actionsの docker/build-push-action にはcontext指定をしたほうが良いケースがあります。それは・・・

GitHub Actionsのステップで生成したファイルをDockerイメージに含めたい時

なぜかというと、contextが指定されていない docker/build-push-action のデフォルト挙動は該当リポジトリからソースファイルを自動でcheckoutするからです。つまり、いくら前段のステップでファイルを作成したり更新したりしても全部無視されます。

そういう意味では、そもそも actions/checkout すら必要ありません。自動でやってくれるので。

ただ、それだと困るケースもあると思うので、そういうときにはちゃんとcontextを指定しましょう。

jobs:
  build_and_push:
    name: Build and Push Docker Image
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: なんらかの処理をして foo.txt を生成する
        run: foo.sh > foo.txt

      - name: Dockerイメージをビルドしてプッシュ
        uses: docker/build-push-action@v6
        with:
          context: . # これ! この指定がないと foo.txt は含まれない
          push: true
          tags: |
            foo-registory:${{ github.sha }}

基本的なことですが、完全に頭から抜けててハマったので書いておきます。

ムーザルちゃんねる

Discussion