ノート: GitHub Packagesは現在GitHub Enterprise Server 2.22でベータです。 GitHub Enterprise Serverのインスタンスのベータに参加するには、サインアップフォームを使ってください。
デフォルトでは、GitHubはパッケージはそのままの名前で既存のリポジトリに公開されます。 たとえば、GitHubはOWNER/test
というリポジトリ内のcom.example:test
という名前のパッケージを公開します。
GitHub Packages への認証を行う
GitHub Packagesでパッケージを公開、インストール、削除するにはアクセストークンが必要です。
GitHub Packages、あるいはGitHub APIで認証を受けるのに、個人のアクセストークン(PAT)が利用できます。 個人トークンを作成する際には、必要に応じて様々なスコープをトークンに割り当てできます。 PATに関するパッケージ関連のスコープについての詳しい情報は、「GitHub Packagesの権限について」を参照してください。
GitHub Actionsワークフロー内でGitHub Packagesレジストリに認証を受けるには、以下の方法が使えます。
GITHUB_TOKEN
を使って、ワークフローリポジトリに関連づけられたパッケージを公開。- PATで他のプライベートリポジトリ(これには
GITHUB_TOKEN
がアクセスできない)に関連づけられたパッケージをインストール。
GitHub ActionsにおけるGITHUB_TOKEN
での認証
リポジトリ内のnuget.configファイル内のハードコードされたトークンの代わりにGITHUB_TOKEN
を使ってGitHub Actionsワークフロー内でGitHub Packagesの認証を受けるには、以下のコマンドを使ってください。
dotnet nuget add source --username USERNAME --password ${{ secrets.GITHUB_TOKEN }} --store-password-in-clear-text --name github "https://nuget.HOSTNAME/OWNER/index.json"
GitHub Actionsワークフローで使われるGITHUB_TOKEN
に関する詳しい情報については「ワークフローでの認証」を参照してください。
個人アクセストークンでの認証
GitHub Packages内でパッケージを公開及びインストールするためには、適切なスコープで個人アクセストークンを使わなければなりません。 詳しい情報については「GitHub Packagesについて」を参照してください。
dotnet
コマンドラインインターフェース(CLI)でGitHub Packagesに認証を受けるには、プロジェクトディレクトリにnuget.configファイルを作成し、GitHub Packagesをソースとしてdotnet
CLIクライアントのpackageSources
の下に指定してください。
以下のように置き換えてください。
USERNAME
をGitHub上のユーザアカウント名で。TOKEN
を個人アクセストークンで。OWNER
を、プロジェクトを含むリポジトリを所有しているユーザまたはOrganizationアカウント名で。HOSTNAME
を、GitHub Enterprise Serverのインスタンスインスタンスのホスト名で。
インスタンスでSubdomain Isolationが有効化されている場合:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<clear />
<add key="github" value="https://nuget.HOSTNAME/OWNER/index.json" />
</packageSources>
<packageSourceCredentials>
<github>
<add key="Username" value="USERNAME" />
<add key="ClearTextPassword" value="TOKEN" />
</github>
</packageSourceCredentials>
</configuration>
たとえば、以下のOctodogAppとOctocatAppは同じリポジトリに公開されます。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.0</TargetFramework>
<PackageId>OctodogApp</PackageId>
<Version>1.0.0</Version>
<Authors>Octodog</Authors>
<Company>GitHub</Company>
<PackageDescription>This package adds an Octodog!</PackageDescription>
<RepositoryUrl>https://github.com/octo-org/octo-cats-and-dogs</RepositoryUrl>
</PropertyGroup>
</Project>
パッケージを公開する
nuget.configファイルで認証を受けることで、パッケージをGitHub Packagesに公開できます。
nuget.configファイルを使用してパッケージを公開する
公開の際には、nuget.config認証ファイルで使用するcsprojファイル中で、OWNER
に同じ値を使わなければなりません。 .csprojファイル中でバージョン番号を指定もしくはインクリメントし、dotnet pack
コマンドを使ってそのバージョンのための.nuspecファイルを作成してください。 パッケージの作成に関する詳しい情報については、Microsoftのドキュメンテーション中の「クイック スタート: パッケージの作成と公開 (dotnet CLI)」を参照してください。
-
GitHub Packagesに認証を受けてください。 詳しい情報については「GitHub Packagesへの認証を行う」を参照してください。
-
新しいプロジェクトを作成してください。
dotnet new console --name OctocatApp
-
プロジェクト固有の情報をプロジェクトファイルに追加してください。プロジェクトファイルは.csprojで終わります。 以下のように置き換えてください。
OWNER
を、プロジェクトを含むリポジトリを所有しているユーザもしくはOrganizationアカウント名で。REPOSITORY
を、公開したいパッケージを含むリポジトリの名前で。1.0.0
をパッケージのバージョン番号で。HOSTNAME
を、GitHub Enterprise Serverのインスタンスインスタンスのホスト名で。
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp3.0</TargetFramework> <PackageId>OctocatApp</PackageId> <Version>1.0.0</Version> <Authors>Octocat</Authors> <Company>GitHub</Company> <PackageDescription>This package adds an Octocat!</PackageDescription> <RepositoryUrl>https://HOSTNAME/OWNER/REPOSITORY</RepositoryUrl> </PropertyGroup> </Project>
-
プロジェクトをパッケージ化してください。
dotnet pack --configuration Release
-
nuget.configファイル中で指定した
key
を使ってパッケージを公開してください。dotnet nuget push "bin/Release/OctocatApp.1.0.0.nupkg" --source "github"
パッケージを公開した後は、GitHub上でそのパッケージを見ることができます。 詳しい情報については「パッケージの表示」を参照してください。
同じリポジトリへの複数パッケージの公開
複数のパッケージを同じリポジトリに公開するには、同じGitHubリポジトリURLをすべての.csprojプロジェクトファイル中のRepositoryURL
フィールドに含めることができます。 GitHubは、そのフィールドに基づいてリポジトリをマッチします。
たとえば、以下のOctodogAppとOctocatAppは同じリポジトリに公開されます。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.0</TargetFramework>
<PackageId>OctodogApp</PackageId>
<Version>1.0.0</Version>
<Authors>Octodog</Authors>
<Company>GitHub</Company>
<PackageDescription>This package adds an Octodog!</PackageDescription>
<RepositoryUrl>https://HOSTNAME/octo-org/octo-cats-and-dogs</RepositoryUrl>
</PropertyGroup>
</Project>
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.0</TargetFramework>
<PackageId>OctocatApp</PackageId>
<Version>1.0.0</Version>
<Authors>Octocat</Authors>
<Company>GitHub</Company>
<PackageDescription>This package adds an Octocat!</PackageDescription>
<RepositoryUrl>https://HOSTNAME/octo-org/octo-cats-and-dogs</RepositoryUrl>
</PropertyGroup>
</Project>
パッケージをインストールする
プロジェクトでGitHubからパッケージを利用するのは、nuget.orgからパッケージを使用するのに似ています。 パッケージの依存関係を.csprojファイルに追加し、パッケージ名とバージョンを指定してください。 プロジェクトでの.csprojファイルの利用に関する詳しい情報については、Microsoftのドキュメンテーションの「パッケージ利用のワークフロー」を参照してください。
-
GitHub Packagesに認証を受けてください。 詳しい情報については「GitHub Packagesへの認証を行う」を参照してください。
-
パッケージを利用するには、.csprojプロジェクトファイルに
ItemGroup
を追加し、PackageReference
フィールドを設定してください。OctokittenApp
パッケージをパッケージの依存関係で、1.0.0
を使いたいバージョンで置き換えてください。<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp3.0</TargetFramework> <PackageId>OctocatApp</PackageId> <Version>1.0.0</Version> <Authors>Octocat</Authors> <Company>GitHub</Company> <PackageDescription>This package adds an Octocat!</PackageDescription> <RepositoryUrl>https://HOSTNAME/OWNER/REPOSITORY</RepositoryUrl> </PropertyGroup> <ItemGroup> <PackageReference Include="OctokittenApp" Version="12.0.2" /> </ItemGroup> </Project>
-
restore
コマンドでパッケージをインストールしてください。dotnet restore
トラブルシューティング
.csproj内のRepositoryUrl
が期待されるリポジトリに設定されていない場合、NuGetパッケージのプッシュに失敗するかもしれません。
参考リンク
- 「パッケージの削除」