へっぽこITエンジニア@名古屋のブログ

Follow me on GitHub

Pushの複数のbuild-args

Github Actionsで複数のbuild-argsを設定する際の方法について記載しまします。

記載した理由ですが、調べるのに少しかかったためです。あるサイトのはカンマ区切りで記載すると記載されていましたが、 それを実施してもうまくいかず、何度もコミットしなおしました。

Gtihub ActionsでのDockerのPush

まずですが、Github ActionsをつかってTagを作った時にDocker hubに自動でPushするときには以下のように書きます。

name: Publish Docker image

on:
  push:
    branches-ignore:
      - '**'
    tags:
      - '*'

jobs:
  push_to_registry:
    name: Push Docker image to Docker Hub
    runs-on: ubuntu-latest
    steps:
      - name: Check out the repo
        uses: actions/checkout@v2
      - name: Docker meta
        id: meta
        uses: docker/metadata-action@v3
        with:
          images: mtaketani113/spring-boot-demo
      - name: Log in to Docker Hub
        uses: docker/login-action@v1
        with:
          username: $
          password: $
      - name: Build and Push to Docker Hub
        uses: docker/build-push-action@v2
        with:
          context: .
          push: true
          tags: $
          labels: $

secrets.XXXというのは、GithubのSettingsで設定できます。

ここでは、DOCKER_USERNAMEDOCKER_PASSWORDを設定しています。 これがDocker hubのユーザ名とパスワードです。

build-push-actionでArgを設定

DockerでARGを設定することがあると思います。 環境変数を渡したりする場合です。

その方法ですが、複数設定する場合、調べてるとカンマ区切りで実施していたのでそれでOKなのかとやってたのですが、うまくわたりませんでした。

どうも以下のように書かないといけないダメなようです。

          build-args: |
            GITHUB_ACTOR=$
            GITHUB_TOKEN=$

全体だと以下のような感じです。

name: Publish Docker image

on:
  push:
    branches-ignore:
      - '**'
    tags:
      - '*'

jobs:
  push_to_registry:
    name: Push Docker image to Docker Hub
    runs-on: ubuntu-latest
    steps:
      - name: Check out the repo
        uses: actions/checkout@v2
      - name: Docker meta
        id: meta
        uses: docker/metadata-action@v3
        with:
          images: mtaketani113/spring-boot-demo
      - name: Log in to Docker Hub
        uses: docker/login-action@v1
        with:
          username: $
          password: $
      - name: Build and Push to Docker Hub
        uses: docker/build-push-action@v2
        with:
          context: .
          push: true
          tags: $
          labels: $
          build-args: |
            GITHUB_ACTOR=$
            GITHUB_TOKEN=$

こちらのリンクに実際のコードを配置しています。 0.0.12

まとめ

build-argsですが、複数ある場合、カンマ区切りではうまく動きません。パイプを利用して複数記載しましょう。