GitHub Packages について
GitHub Packagesはパッケージホスティングサービスで、GitHubと完全に統合されています。 GitHub Packagesは、ソースコードとパッケージを一カ所にまとめ、統合された権限管理と支払いを提供し、GitHub上でのソフトウェア開発を一元化できるようにします。
GitHub Packagesは、GitHub API、GitHub Actions、webhookと統合して、コード、CI、デプロイメントのソリューションを含むエンドツーエンドのDevOpsワークフローを作成できます。
1つのリポジトリで複数のパッケージをホストし、各パッケージのREADMEを見たり、統計をダウンロードしたり、バージョン履歴を見たりすることで、各パッケージに関する詳しい情報を見ることができます。
GitHub Actionsワークフローを作成する際には、GITHUB_TOKEN
を使ってGitHub Packagesにパッケージを公開してインストールでき、個人アクセストークンを保存して管理する必要はありません。 詳しい情報については「GitHub Container Registryについて」を参照してください。
注釈: GitHub Container Registry は現在パブリックベータであり、変更されることがあります。 ベータ期間中は、ストレージおよび帯域幅の制限はありません。 GitHub Container Registryを使用するには、機能プレビューを有効化しなければなりません。 詳しい情報については「GitHub Container Registryについて」及び「改善されたコンテナサポートの有効化」を参照してください。
パッケージの表示
パッケージの README や、ライセンス、ダウンロード統計、バージョン履歴などのメタデータを GitHub 上で確認できます。 詳しい情報については「パッケージの表示」を参照してください。
パッケージの権限と可視性について
パッケージレジストリ | |
---|---|
ホスト場所 | 1 つのリポジトリに複数のパッケージをホストできます。 |
権限 | You can publish packages in a public repository (public packages) to share with all of GitHub, or in a private repository (private packages) to share with collaborators or an organization. パッケージはリポジトリの権限を継承するので、GitHubのロールとTeamを使い、各パッケージをインストールしたり公開したりできる人を制限できます。 リポジトリの読み取り権限を持っている人は、パッケージを依存関係としてプロジェクトにインストールでき、書き込み権限を持っている人は新しいパッケージのバージョンを公開できます。 |
可視性 | You can publish packages in a public repository (public packages) to share with all of GitHub, or in a private repository (private packages) to share with collaborators or an organization. |
GitHub Packagesの支払いについて
GitHub Packagesの利用は、パブリックパッケージについては無料です。 プライベートパッケージについては、それぞれのGitHubアカウントは一定量の無料のストレージとデータ転送を、そのアカウントで使っている製品に応じて受け取ります。 含まれる金額を超える利用については、支出制限によって管理されます。 月額料金のお客様の場合、デフォルトではアカウントの料金の上限は$0になっており、含まれている量に達した後に追加でストレージやデータ転送が利用されないようになっています。 請求書でアカウントの支払いを行う場合、アカウントのデフォルトの支払い制限は無制限になります。 詳細は、「GitHub Packagesの支払いについて」を参照してください。
コンテナイメージのストレージの支払いに関するアップデート: GitHub Container Registryのベータ期間は、古いdocker.pkg.github.com
及び新しいghcr.io
ホスティングサービスにおいて、Dockerイメージのストレージと帯域は無料です。 詳しい情報については「GitHub Container Registryについて」を参照してください。
サポートされているクライアントとフォーマット
GitHub Packagesは、パッケージのバージョンの公開とインストールに、すでにおなじみのネイティブのパッケージツールコマンドを使います。
パッケージレジストリのサポート
パッケージレジストリは、PACKAGE-TYPE.pkg.github.com/OWNER/REPOSITORY/IMAGE-NAME
をパッケージのホスト URL として使用します。PACKAGE-TYPE
は、パッケージの名前空間に置き換えます。 たとえば、Gemfile は rubygems.pkg.github.com/OWNER/REPOSITORY/IMAGE-NAME
にホストされます。
言語 | 説明 | パッケージフォーマット | パッケージクライアント | パッケージ名前空間 |
---|---|---|---|---|
JavaScript | Nodeのパッケージマネージャー | package.json | npm | npm.pkg.github.com/OWNER/REPOSITORY/IMAGE-NAME |
Ruby | RubyGemsパッケージマネージャー | Gemfile | gem | rubygems.pkg.github.com/OWNER/REPOSITORY/IMAGE-NAME |
Java | Apache Mavenのプロジェクト管理及び包括的ツール | pom.xml | mvn | maven.pkg.github.com/OWNER/REPOSITORY/IMAGE-NAME |
Java | Java用のGradleビルド自動化ツール | build.gradle または build.gradle.kts | gradle | maven.pkg.github.com/OWNER/REPOSITORY/IMAGE-NAME |
.NET | .NET用のNuGetパッケージ管理 | nupkg | dotnet CLI | nuget.pkg.github.com/OWNER/REPOSITORY/IMAGE-NAME |
For more information about configuring your package client for use with GitHub Packages, see "Package client guides for GitHub Packages."
For more information about Docker and GitHub Container Registry, see "Container guides for GitHub Packages."
GitHub Packages への認証を行う
GitHub Packagesでパッケージを公開、インストール、削除するにはアクセストークンが必要です。 GitHub Packagesに直接、あるいはGitHub APIでユーザ名で認証を受けるのに、個人のアクセストークンが利用できます。 個人トークンを作成する際には、必要に応じて様々なスコープをトークンに割り当てできます。
認証を GitHub Actionsのワークフローで行うには:
- パッケージレジストリの場合(
PACKAGE-REGISTRY.pkg.github.com
)は、GITHUB_TOKEN
を利用できます。 - コンテナレジストリ(
ghcr.io/OWNER/IMAGE-NAME
)の場合は、GITHUB_TOKEN
もしくは個人アクセストークンを利用できます。GITHUB_TOKEN
を利用し、リポジトリに不要なアクセスをしないようにすることを強くおすすめします。
GitHub Actionsワークフローで使われるGITHUB_TOKEN
に関する情報については、「暗号化されたシークレット」及び「ワークフロー内での認証」を参照してください。
パッケージの管理
パッケージをインストールあるいは公開するには、適切なスコープを持つトークンを使い、ユーザアカウントがそのリポジトリに対する適切な権限を持っていなければなりません。
例:
- リポジトリからパッケージをダウンロードしてインストールするには、トークンは
read:packages
スコープを持っていなければならず、ユーザアカウントはそのリポジトリの読み取り権限を持っていなければなりません。 - GitHub上の特定バージョンのプライベートパッケージを削除するには、トークンは
delete:packages
及びrepo
スコープを持っていなければなりません。 パブリックなパッケージは削除できません。 詳しい情報については「パッケージの削除」を参照してください。
スコープ | 説明 | リポジトリの権限 |
---|---|---|
read:packages | GitHub Packagesからのパッケージのダウンロードとインストール | 読み取り |
write:packages | GitHub Packagesへのパッケージのアップロードと公開 | 書き込み |
delete:packages | GitHub Packagesからの特定バージョンのプライベートパッケージの削除 | 管理 |
repo | Upload and delete packages (along with write:packages , or delete:packages ) | write, or admin |
GitHub Actionsワークフローを作成する際には、GITHUB_TOKEN
を使ってGitHub Packagesにパッケージを公開してインストールでき、個人アクセストークンを保存して管理する必要はありません。
詳しい情報については、以下を参照してください。
- ドキュメンテーションに反する何らかの体験をした時
- 個人アクセストークンを作成する
- GDPR違反、APIキー、個人を識別する情報といったセンシティブなデータを含むパッケージを公開した時
パッケージの管理
You can delete a version of a private package in the GitHub user interface or using the GraphQL API. GraphQL APIを使ってプライベートパッケージに対するクエリや削除を行う場合、GitHub Packagesの認証に使うのと同じトークンを使わなければなりません。 詳しい情報については、「パッケージの削除」と「GraphQLでの呼び出しの作成」を参照してください。
webhookを設定して、パッケージの公開や更新といったパッケージ関連のイベントにサブスクライブできます。 詳しい情報については、「package
webhookイベント」を参照してください。
サポートへの連絡
GitHub Packages についてのフィードバックあるいは機能リクエストがある場合は、 GitHub Packages のフィードバックフォームを利用してください。
連絡フォームを使い、GitHub PackagesについてGitHub Supportに連絡してください。
- ドキュメンテーションに反する何らかの体験をした時
- 漠然とした、あるいは不明確なエラーを体験した時
- GDPR違反、APIキー、個人を識別する情報といったセンシティブなデータを含むパッケージを公開した時