GitHub パッケージと GitHub Container Registry に発行する
ここでは、ワークフローを使用して GitHub Packages に発行する基本と、Docker イメージをビルド、認証、タグ付け、GitHub Container Registry にプッシュするために必要な手順について説明します。
ワークフローを使用して GitHub パッケージに発行する
GitHub Packages を使用すると、パッケージを安全に発行して使用したり、コードと共にパッケージを保存したり、パッケージをチームとプライベートに共有したり、オープンソース コミュニティとパブリックに共有したりできます。 GitHub Actions を使用してパッケージを自動化することもできます。
リポジトリに新しいリリースが作成されるたびに実行される基本的なワークフローの例を次に示します。 テストに合格した場合、パッケージは GitHub Packages に発行されます。
name: Node.js Package
on:
release:
types: [created]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 12
- run: npm ci
- run: npm test
publish-gpr:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 12
registry-url: https://npm.pkg.github.com/
- run: npm ci
- run: npm publish
env:
NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}
最初に、ワークフロー ファイルは .github/workflows ディレクトリに存在する必要があります。 新しいリリースが作成されるたびに新しいパッケージを発行するワークフローに release-package.yml などの名前を付けて、プロジェクトコラボレーターがワークフロー ファイルに移動せずに目的を簡単に理解できるようにするのが一般的です。
前のワークフローでは、新しいリリースが作成された後に、いくつかの処理が行われます。
-
buildという名前のジョブは、npm ci(継続的インテグレーションの場合は "ci" ) を実行して、package-lock.jsonファイルとプロジェクトのテストから直接依存関係をインストールします。 -
buildジョブが成功すると、publish-gprという名前のジョブによってパッケージが発行されます。 - ワークフローは、認証にアクセス トークンを使用してパッケージを
registry-url: https://npm.pkg.github.com/に発行します。
GitHub Container Registry を使用して Docker コンテナー イメージをホストおよび管理する
GitHub Packages では、コンテナー、Kubernetes、およびその他のクラウドネイティブ テクノロジを使用して、運用運用、開発、リリース、デプロイなどのアプリケーション ライフサイクル全体を管理できます。 GitHub Packages には、コンテナー イメージの固有のニーズをサポートするように設計されたコンテナー レジストリも用意されています。 GitHub Container Registry を使用して、GitHub 組織または個人用ユーザー アカウントで Docker コンテナー イメージをシームレスにホストおよび管理できます。 GitHub Container Registry を使用すると、きめ細かいアクセス許可を使用してパッケージを管理およびアクセスできるユーザーを構成できます。
コンテナー レジストリを使用すると、次のことができます。
- リポジトリではなく、組織内のコンテナー イメージとユーザー アカウントを格納します。
- コンテナー イメージの詳細なアクセス許可を設定します。
- パブリック コンテナー イメージに匿名でアクセスします。
イメージをビルドし、 ghcr.ioで GitHub Container Registry サービスに認証してサインインした後、次のコマンドを使用して、最新バージョンのイメージにタグを付けてコンテナー レジストリにプッシュできます。
echo $GITHUB_TOKEN | docker login ghcr.io -u USERNAME --password-stdin
docker tag IMAGE_ID ghcr.io/OWNER/IMAGE_NAME:latest
docker push ghcr.io/OWNER/IMAGE_NAME:latest
注
GitHub Actions ワークフローを使用して認証するには、GITHUB_TOKENを使用できます。
-
PACKAGE-REGISTRY.pkg.github.comのパッケージ レジストリの場合。 -
ghcr.io/OWNER/IMAGE-NAMEのコンテナー レジストリの場合。