Dockerイメージをレジストリに登録する作業を自動化したい場合、build-push-actionというワークフローを利用することが多いと思います。このワークフローを使って、2020/09/03にオープンベータになったGitHub Container Registryにイメージをpushしたい場合は、おおよそ以下のようにすればよいです。
name: Publish Docker image
on: push
jobs:
publish_image:
runs-on: ubuntu-latest
steps:
- name: Push to GitHub Container Registry
uses: docker/build-push-action@v1
with:
username: ${{ github.actor }}
password: ${{ secrets.ACCESS_TOKEN }}
registry: ghcr.io
repository: example/example
ポイントは次の通りです。
-
registry
はghcr.io
を指定します。 -
username
はレポジトリにアクセスできるユーザを指定してください。なおここではワークフロー実行ユーザ名を格納するgithub.actor
を利用しています。 -
password
には、レポジトリへの読み取り・書き込み権限を有するアクセストークン(★)を指定する必要があります。
(★) アクセストークンを作成し、Github Actions内で利用できるようになるまでの手順は以下の通りです。
- https://github.com/settings/tokens/new へアクセス。認証が求められる場合がある。
- アクセストークン作成画面では、
write:packages
とread:packages
に最低限チェックを付けて、Genereate Token
を押下する。必要な場合はほかの権限も付与すること。 - 作成したアクセストークンを控えておく
- Github Actionsを使うレポジトリに移動。
-
Settings > Secrets > New Secret
の順番に移動。 - Secret作成画面では、Name="任意の名前"(上記のサンプルでは
ACCESS_TOKEN
)、VALUE="3.で控えておいたアクセストークン"を指定して、Add Secret
を押下。 - これでワークフロー内で
${{ secrets.任意の名前 }}
という変数が利用できるようになります。