GitHub Container Registryそのものやコマンドによるpushは、GitHub Container Registry(ghcr.io)にDockerイメージをpushする手順で詳しく説明されていますので、そちらをご覧ください。
手順
概要
GitHub ActionsからDockerHubにDockerイメージをpushする手順がGitHub Docsにあります(手順のドキュメント)。
今回はそれを流用し、push先をGitHub Container Registry(ghcr.io)に向けるだけです。
GitHub Container Registry(ghcr.io)へのログイン情報の設定
GitHubアカウントの設定からPersonal Access Token(PAT)を作成します(手順のドキュメント)。
権限として、read:packages
と write:packages
にチェックします。
作成したPATをGitHubリポジトリに暗号化されたシークレットとして保存します(手順のドキュメント)。
ここでは CR_PAT
というキーで保存します。
ワークフロー(GitHub Actions)の作成
GitHub Packagesへのイメージの公開ドキュメントを参考にワークフローを作成します。
変更するポイントは
-
GitHub Packages
をGitHub Container Registry
に置換 -
docker.pkg.github.com
をghcr.io
に置換 -
${{ secrets.GITHUB_TOKEN }}
を${{ secrets.CR_PAT }}
に置換 -
repository:
の値を${{ github.repository }}
に変更
以下にGitHub Container Registry(ghcr.io)にpushするワークフローを示します。
name: Publish Docker image
on:
release:
types: [published]
jobs:
push_to_registry:
name: Push Docker image to GitHub Container Registry
runs-on: ubuntu-latest
steps:
- name: Check out the repo
uses: actions/checkout@v2
- name: Push to GitHub Container Registry
uses: docker/build-push-action@v1
with:
username: ${{ github.actor }}
password: ${{ secrets.CR_PAT }}
registry: ghcr.io
repository: ${{ github.repository }}
tag_with_ref: true
env:
DOCKER_BUILDKIT: 1
検証
上記のワークフローの例では、GitHub リリースの公開をトリガーに動作するため、公開して検証します。
検証の内容もGitHub Container Registry(ghcr.io)にDockerイメージをpushする手順でされていますので、そちらをご覧ください。
まとめ
GitHub Container Registry(ghcr.io)の説明など諸々と省きましたが、GitHub ActionsでGitHub Container Registry(ghcr.io)にpushするワークフローを紹介しました。
とても簡単にできますので、ぜひ活用ください。