GNU/Linux >> Linux の 問題 >  >> Panels >> Docker

GitHubでDockerイメージの自動ビルドを設定する方法

GitHubには、リポジトリに変更を加えるたびに自動ビルド、テスト、その他のスクリプトを実行するGitHubアクションと呼ばれる機能があります。この便利なユースケースの1つは、Dockerコンテナを自動的にビルドしてコンテナレジストリにプッシュすることです。

GitHubの新しいコンテナレジストリ

GitHub Container Registryと呼ばれるGitHubの新しいコンテナレジストリは、DockerHubなどのほとんどのレジストリとは少し異なります。これは、パッケージをソースコードリポジトリに関連付けるパッケージストレージシステムであるGitHubパッケージの拡張機能として機能します。パッケージは、リポジトリからビルドしてプッシュできます。多くの場合、GitHubActionsパイプラインを使用して自動的にプッシュされます。

GitHub Container Registryは、Docker固有の互換性をGitHubパッケージに追加するだけで、docker pullを実行するためのコンテナーレジストリのように機能します。 およびその他のCLIコマンド。

GitHubのコンテナレジストリに公開する必要はありません。いくつかの構成を使用して、アクションからDockerHubに公開できます。ただし、事前に作成されたアクションは、そのままGHC​​Rで機能するため、設定がはるかに簡単です。

GitHubパッケージへの自動ビルドを設定する方法

まず、リポジトリが必要です。パッケージのみを公開している場合でも、GHCRの形式は次のとおりであるため、リポジトリが必要です。

ghcr.io/username/repository/image:version

リポジトリを設定し、「アクション」をクリックして新しいアクションを作成します。 [より継続的インテグレーションワークフロー]で、[Dockerコンテナの公開]をクリックします。

これにより、スターターテンプレートが生成されます。これを機能させるには、いくつかの変更が必要です。まず、IMAGE_NAME 変数を画像名に変更する必要があります。

次に、39行目で、GHCRにログインする場所を確認できます。

run: echo "${{ secrets.CR_PAT }}" | docker login https://ghcr.io -u ${{ github.actor }} --password-stdin

現在、サポートされている認証スキームはパーソナルアクセストークン(PAT)のみです。これは、アカウント全体のアクセスを許可するため、セキュリティには適していません。 GitHubはこれを認識しており、将来に向けてより良い修正に取り組んでいますが、それまでの間、GitHub ActionsワークフローからGHCRを使用する場合は、リポジトリのシークレットにPATを保存する必要があります。ここにあるのは恐ろしいことです。

まず、[設定]>[開発者設定]>[パーソナルアクセストークン]に移動して、新しいトークンを作成する必要があります。このトークンにはwrite:packagesが必要です およびdelete:packages 設定。何らかの理由で、書き込みパッケージを選択すると、「リポジトリのフルコントロール」が自動的に選択されます。これをオフにする必要があります。

次に、リポジトリの設定に移動し、CR_PATという新しいシークレットを作成します 、アクションに一致します。

アクションに戻り、[コミットの開始]をクリックしてリポジトリにプッシュします。

コミットされると、パッケージを実行およびビルドするワークフローがトリガーされます。 [アクション]タブで、実行中のすべてのワークフローのステータスを監視できます。ここでは、デフォルトのアクションでは、このイメージにはなかったテストの実行が想定されているため、失敗しました。

成功すると、レジストリ、リポジトリのメインページの[パッケージ]、またはプロファイルのパッケージの下にコンテナが表示されます。


Docker
  1. LinuxでDockerイメージを検索、プル、リスト、および削除する方法

  2. Dockerイメージを他の人と共有する方法

  3. Dockerイメージを変更する方法

  1. ホスト間でDockerイメージを移動する方法

  2. Windows 10 の Windows System for Linux (WSL2) 内で Docker をセットアップする方法

  3. 新しい irssi 接続にデフォルトのニックネームを設定するにはどうすればよいですか?

  1. 自動バックアップの設定方法

  2. Trivyを使用してDockerコンテナイメージの脆弱性をスキャンする方法

  3. 信頼を高めるためにDockerイメージに署名する方法