GitHub Packages と GitHub Container Registry に公開する

完了

ここでは、ワークフローを使用して GitHub Packages に公開する方法と、Docker イメージをビルド、認証、タグ付けし、GitHub Container Registry にプッシュするために必要な手順について説明します。

ワークフローを使用して GitHub Packages に公開する

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 などの名前を付けておくのが一般的です。

上記のワークフローでは、新しいリリースが作成された後、いくつかの処理が行われます。

  1. build という名前のジョブにより npm ci ("ci" は継続的インテグレーションを表す) が実行され、package-lock.json ファイルから依存関係が直接インストールされ、プロジェクトのテストも行われます。
  2. build ジョブが成功すると、publish-gpr という名前のジョブによってパッケージが公開されます。
  3. このワークフローでは、認証用のアクセス トークンを使用して 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

Note

GitHub Actions ワークフローを使って認証する場合は、以下に対して GITHUB_TOKEN を使用できます。

  • PACKAGE-REGISTRY.pkg.github.com のパッケージ レジストリ。
  • ghcr.io/OWNER/IMAGE-NAME のコンテナー レジストリ。