GitHubでDockerイメージの自動ビルドを設定する方法
GitHubには、リポジトリに変更を加えるたびに自動的にビルド、テスト、その他のスクリプトを実行するGitHub Actionsという機能があります。その便利な使い方の一つは、Dockerコンテナを自動的にビルドしてコンテナレジストリにプッシュすることです。
GitHubの新しいコンテナレジストリ
GitHubの新しいコンテナレジストリであるGitHub Container Registryは、Docker Hubのようなほとんどのレジストリとは少し異なります。これは、パッケージをそのソースコードリポジトリに関連付けるパッケージストレージシステムであるGitHub Packagesの拡張として機能します。パッケージはリポジトリから構築およびプッシュでき、しばしばGitHub Actionsのパイプラインの助けを借りて自動的に行われます。
GitHubコンテナレジストリは、GitHubパッケージにDocker特有の互換性を追加しており、コンテナレジストリとして機能するようになっています。
docker pull
および他のCLIコマンド。
GitHubのコンテナレジストリに公開する必要はありません---いくつかの設定を行うことで、アクションからDocker Hubに公開することは可能です。ただし、事前構築されたアクションはGHCRとすぐに連携できるため、設定はずっと簡単です。
GitHubパッケージに自動ビルドを設定する方法
まず最初に、リポジトリが必要です。たとえパッケージを公開するだけであっても、GHCRのフォーマットがあるため、リポジトリが必要です。
ghcr.io/username/repository/image:versionリポジトリを設定し、次に「Actions」をクリックして新しいアクションを作成します。「More Continuous Integration Workflows」の下で、「Publish Docker Container」をクリックします。
これはスタートテンプレートを生成しますが、動作するためにはいくつかの変更が必要です。まず、IMAGE_NAME変数をあなたの画像名に変更する必要があります。
それから、39行目でそれがGHCRにログインする場所を見つけることができます。
run: echo "${{ secrets.CR_PAT }}" | docker login https://ghcr.io -u ${{ github.actor }} --password-stdin現在、サポートされている認証スキームは個人用アクセストークン(PAT)のみであり、これはアカウント全体へのアクセスを許可するため、セキュリティ上あまり良いとはいえません。GitHubはこれを認識しており、将来的により良い解決策に取り組んでいますが、その間にGitHub ActionsのワークフローからGHCRを使用したい場合は、リポジトリのSecretsにPATを保存する必要があります。もちろん、ここに直接ペーストするのは非常に良くありません。
まず最初に、設定 > 開発者設定 > パーソナルアクセストークンに移動し、新しいトークンを作成する必要があります。このトークンには、write:packages と delete:packages の設定が必要です。何らかの理由で、書き込みパッケージを選択すると自動的に「リポジトリの完全制御」が選択されるため、これをチェックから外す必要があります。
次に、リポジトリの設定に移動し、アクションに一致するように CR_PAT という新しいシークレットを作成してください。
アクションに戻り、"コミット開始"をクリックしてリポジトリにプッシュします。
一度コミットされると、ワークフローが実行されてパッケージがビルドされます。すべての実行中のワークフローのステータスは「アクション」タブで監視できます。ここでは、デフォルトのアクションが実行するテストがあることを期待しているため、失敗しましたが、この画像にはテストがありませんでした。
成功すると、リポジトリのメインページの「パッケージ」の下、またはあなたのプロフィールのパッケージの下にコンテナがレジストリに表示されるはずです。








