パッケージの公開

完了

GitHub Packages にパッケージを発行すると、コード ライブラリ、コンテナー イメージ、依存関係をチームまたはパブリックと共有できます。 GitHub Packages では ネイティブ パッケージ ツール コマンドが使用されるため、既に知っているのと同じツールとワークフローを使用してパッケージを発行できます。

パッケージ レジストリについて

GitHub Packages では 、複数のパッケージ エコシステムがサポートされており、それぞれに独自の形式とクライアント ツールがあります。

Language パッケージの形式 パッケージ クライアント
JavaScript package.json npm
Ruby Gemfile 宝石
Java pom.xml mvn
Java build.gradle または build.gradle.kts gradle
.NET nupkg dotnet CLI(.NET コマンドラインインターフェース)
該当なし Dockerfile Docker

パッケージのメタデータとドキュメント

パッケージを作成するときに、パッケージ ページで 豊富なメタデータ を提供できます。

  • 説明: パッケージの動作の明確な説明
  • インストール手順: コンシューマー向けのステップ バイ ステップ ガイド
  • 使用例: 一般的なユース ケースを示すコード サンプル
  • 依存 関係: 必要なパッケージとバージョン
  • ライセンス情報: パッケージの使用に関する法的条件
  • バージョン履歴: 更新プログラムと修正プログラムの変更ログ

適切なドキュメント は、パッケージを使用するユーザーがパッケージの使用方法とその目的を理解するのに役立ちます。 次の点を考慮してください。

  • クイック スタート ガイド: ユーザーが迅速に利用を開始できるようにする
  • API リファレンス: パブリック インターフェイスの詳細なドキュメント
  • トラブルシューティングのヒント: 一般的な問題と解決策
  • 移行ガイド: メジャー バージョン間でアップグレードする方法

セキュリティ アドバイザリ

新しいパッケージ バージョンで セキュリティの脆弱性が修正された場合は、リポジトリに セキュリティ アドバイザリ を発行できます。 これにより、ユーザーに脆弱性が通知され、セキュリティで保護されたバージョンへのアップグレードに関するガイダンスが提供されます。

ヒント

リポジトリを 複数のパッケージに接続できます。 たとえば、monorepo では、NuGet パッケージと共に複数の npm パッケージまたは Docker イメージを発行できます。 混乱を避けるために、README と説明に各パッケージに関する情報が提供されていることを確認します。

発行ワークフロー

GitHub Packages にパッケージを発行するには、次の 3 つの主要な手順に従います。

1. 個人用アクセス トークン (PAT) を作成する

パッケージを発行するには認証が必要です。 適切なスコープを持つ 個人用アクセス トークン を作成します。

  • write:packages: パッケージを発行するために必要です
  • read:packages: パッケージをダウンロードするために必要です
  • delete:packages: パッケージのバージョンを削除するために必要です
  • repo: プライベート リポジトリをスコープとするパッケージに必要

PAT を作成するには:

  1. 個人用アクセス トークン→開発者向け設定→設定に移動します
  2. [新しいトークンの生成 (クラシック)] をクリックします
  3. ニーズに基づいて必要なスコープを選択する
  4. 有効期限を設定する (より短い方が安全)
  5. トークンをすぐにコピーします (もう表示されません)

詳細な手順については、 個人用アクセス トークンの作成を参照してください。

2. GitHub パッケージに対する認証

PAT を使用して、パッケージ クライアントで認証します。 認証方法はパッケージの種類によって異なりますが、通常は資格情報ファイルまたは環境変数を構成する必要があります。

セキュリティのベスト プラクティス:

  • ソース コードにトークンをコミットしないでください。 環境変数またはセキュリティで保護された資格情報ストレージを使用する
  • 最低限必要なスコープを使用します。 必要以上のアクセス許可を付与しない
  • トークンを定期的にローテーションする: 有効期限を設定し、定期的に更新する
  • 組織のシークレットを使用する: GitHub Actions の場合は、暗号化されたシークレットとして PAT を格納します

3. パッケージを発行する

パッケージ クライアントの ネイティブ コマンド を使用して発行します。 特定のコマンドは、パッケージの種類 (npm、NuGet、Maven、Docker など) によって異なります。

発行チェックリスト:

  • バージョン番号はセマンティック バージョン管理 (MAJOR.MINOR.PATCH) に従います。
  • パッケージ メタデータが完成しました (説明、作成者、ライセンス)
  • バージョン制約で依存関係が正しく指定されている
  • ドキュメントが含まれています (README、API リファレンス)
  • 発行前にテストが正常に成功する
  • パッケージ名が既存のパッケージと競合しない

レジストリ固有の手順については、「 GitHub Packages レジストリの操作」を参照してください。

NuGet パッケージの発行

NuGet パッケージ は、.NET アプリケーションとライブラリに使用されます。 dotnet CLI を使用して発行できます。

認証を構成する

プロジェクト ディレクトリに nuget.config ファイルを作成して、GitHub Packages をソースとして指定します。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <packageSources>
        <clear />
        <add key="github" value="https://nuget.pkg.github.com/OWNER/index.json" />
    </packageSources>
    <packageSourceCredentials>
        <github>
            <add key="Username" value="USERNAME" />
            <add key="ClearTextPassword" value="TOKEN" />
        </github>
    </packageSourceCredentials>
</configuration>

構成パラメーター:

  • 所有者: リポジトリを所有する GitHub ユーザー名または組織名
  • USERNAME: GitHub ユーザー名
  • トークン:write:packagesスコープを持つ個人用アクセス トークン

注意

USERNAME は GitHub での自分の個人アカウントの名前、TOKEN は自分の PAT、OWNER はプロジェクトのリポジトリを所有しているユーザーまたは組織アカウントの名前に、それぞれ置き換えます。

パッケージを発行する

次の 2 つの方法を使用して発行できます。

方法 1: nuget.config ファイルを使用する

dotnet nuget push "bin/Release/OctocatApp.1.0.0.nupkg" --source "github"

方法 2: --api-key オプションを使用する

dotnet nuget push "bin/Release/OctocatApp.1.0.0.nupkg" --api-key YOUR_GITHUB_PAT --source "github"

NuGet 発行のベスト プラクティス:

  • リリース構成を使用する: 最適化されたパッケージの dotnet pack -c Release を使用してビルドする
  • シンボルを含める: デバッグのサポートのためにシンボル パッケージ (.snupkg) を発行する
  • 自動バージョン管理: MSBuild プロパティを使用して Git タグからバージョンを取得する
  • パッケージの検証: 発行前にパッケージのインストールをテストする
  • ドキュメントの互換性を損なう変更: メジャーバージョンの変更に伴いリリースノートを更新する

npm パッケージの発行

npm パッケージ は、JavaScript および Node.js アプリケーションに使用されます。 npm CLI を使用して発行できます。

認証を構成する

次の 2 つの認証オプションがあります

オプション 1: ~/.npmrc ファイルを編集する

PAT をユーザーごとの .npmrc ファイルに追加します。

//npm.pkg.github.com/:_authToken=TOKEN

存在しない場合は、新しい ~/.npmrc ファイルを作成します。 このメソッドは、すべてのプロジェクトの資格情報をグローバルに格納します。

オプション 2: コマンド ライン経由でログインする

対話型認証には npm login コマンドを使用します。

$ npm login --scope=@OWNER --registry=https://npm.pkg.github.com

> Username: USERNAME
> Password: TOKEN
> Email: PUBLIC-EMAIL-ADDRESS

認証パラメーター:

  • USERNAME: GitHub ユーザー名
  • トークン:write:packagesスコープを持つ個人用アクセス トークン
  • PUBLIC-EMAIL-ADDRESS: メール アドレス (パブリックまたはプライベート)
  • 所有者: スコープ付きパッケージの GitHub ユーザー名または組織

注意

USERNAME は自分の GitHub ユーザー名、TOKEN は自分の PAT、PUBLIC-EMAIL-ADDRESS は自分のメール アドレスに、それぞれ置き換えます。

package.json の構成

package.json に適切なレジストリとスコープが含まれていることを確認します。

{
  "name": "@OWNER/package-name",
  "version": "1.0.0",
  "repository": {
    "type": "git",
    "url": "https://github.com/OWNER/REPOSITORY.git"
  },
  "publishConfig": {
    "registry": "https://npm.pkg.github.com"
  }
}

パッケージを発行する

標準の npm publish コマンドを使用します。

npm publish

npm パブリッシングのベストプラクティス:

  • スコープ付きパッケージを使用する: 名前の競合を回避するために、プレフィックスに @owner/ を付ける
  • 発行前にテストする:npm packを実行し、.tgz ファイルをローカルでテストする
  • .npmignore を使用します。 不要なファイルを除外してパッケージ サイズを小さくする
  • npm のバージョン:npm version patch/minor/majorを使用してバージョンを更新する
  • CI/CD から発行する: GitHub Actions を使用して発行を自動化する

発行済みパッケージの表示

パッケージを発行したら、 GitHub で表示できます。

  1. リポジトリに移動する
  2. サイドバーで [パッケージ ] をクリックする
  3. パッケージを選択して、詳細、バージョン、およびダウンロードの統計情報を表示する

例については、 Codertocat/hello-world-npm を参照してください。

完全な手順については、「 npm レジストリの操作」を参照してください。

GitHub Actions を使用したパッケージの発行の自動化

GitHub Actions ワークフローを使用して、パッケージの発行を自動化できます。 これにより、コードが変更されたときにパッケージが自動的に発行されるようになります。

npm のワークフロー例

name: Publish Package

on:
  release:
    types: [created]

jobs:
  publish:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      packages: write
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: "18"
          registry-url: "https://npm.pkg.github.com"
      - run: npm ci
      - run: npm publish
        env:
          NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

NuGet のワークフロー例

name: Publish Package

on:
  release:
    types: [created]

jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-dotnet@v4
        with:
          dotnet-version: "8.0.x"
      - run: dotnet pack -c Release
      - run: dotnet nuget push "**/*.nupkg" --source github --api-key ${{ secrets.GITHUB_TOKEN }}

自動発行の利点:

  • 一貫性: すべてのリリースでパッケージが自動的に作成されます
  • 速度: 発行に手動の手順は必要ありません
  • トレーサビリティ: パッケージのバージョンが Git タグと一致する
  • 品質ゲート: 発行前にテストを実行する
  • セキュリティ: 個人用アクセストークンの代わりに組み込みのGITHUB_TOKENを使用する

その他のリソース

詳細については、次を参照してください。