注: サイト管理者はそれぞれのサポートされているパッケージの種類を有効化あるいは無効化できるので、このパッケージの種類はインスタンスで利用できないかもしれません。 詳細については、「エンタープライズ向けのパッケージ サポートの構成」を参照してください。
GitHub Packages への認証を行う
非公開パッケージ、内部パッケージ、公開パッケージを発行、インストール、削除するには、アクセス トークンが必要です。
personal access token を使って、GitHub Packages または GitHub Enterprise Server API の認証を受けることができます。 personal access token を作成するときは、必要に応じてさまざまなスコープをトークンに割り当てることができます。 personal access token のパッケージ関連のスコープについて詳しくは、「GitHub パッケージのアクセス許可について」をご覧ください。
GitHub Actionsワークフロー内でGitHub Packagesレジストリに認証を受けるには、以下の方法が使えます。
GITHUB_TOKEN
では、ワークフロー リポジトリに関連付けられているパッケージを発行します。read:packages
以上のスコープが設定された personal access token では、他のプライベート リポジトリ (GITHUB_TOKEN
ではアクセスできない) に関連付けられているパッケージがインストールされます。
GitHub Actions ワークフローにおける認証
リポジトリ内の nuget.config ファイルでpersonal access tokenをハードコーディングするのでなく、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
の詳細については、「ワークフローで認証する」を参照してください。
personal access token で認証を行う
非公開パッケージ、内部パッケージ、公開パッケージを発行、インストール、削除するには、アクセス トークンが必要です。
personal access token を使って、GitHub Packages または GitHub Enterprise Server API の認証を受けることができます。 personal access token を作成するときは、必要に応じてさまざまなスコープをトークンに割り当てることができます。 personal access token のパッケージ関連のスコープについて詳しくは、「GitHub パッケージのアクセス許可について」をご覧ください。
GitHub Actionsワークフロー内でGitHub Packagesレジストリに認証を受けるには、以下の方法が使えます。
GITHUB_TOKEN
では、ワークフロー リポジトリに関連付けられているパッケージを発行します。read:packages
以上のスコープが設定された personal access token では、他のプライベート リポジトリ (GITHUB_TOKEN
ではアクセスできない) に関連付けられているパッケージがインストールされます。
GitHub Packages でパッケージを発行およびインストールするには、適切なスコープで personal access token を使う必要があります。 詳しくは、「GitHub Packages について」をご覧ください。
dotnet
コマンド ライン インターフェイス (CLI) で GitHub Packages に対して認証を行うには、dotnet
CLI クライアントの packageSources
に GitHub Packages をソースとして指定して、プロジェクト ディレクトリに nuget.config ファイルを作成してください。
以下のように置き換えてください。
USERNAME
を GitHub の個人アカウントの名前に。TOKEN
をpersonal access token に。OWNER
を、インストールするご利用のプロジェクトを含むリポジトリの名前に。HOSTNAME
を your GitHub Enterprise Server instance のホスト名に。
インスタンスで 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>
インスタンスで Subdomain Isolation が無効になっている場合:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<clear />
<add key="github" value="https://HOSTNAME/_registry/nuget/OWNER/index.json" />
</packageSources>
<packageSourceCredentials>
<github>
<add key="Username" value="USERNAME" />
<add key="ClearTextPassword" value="TOKEN" />
</github>
</packageSourceCredentials>
</configuration>
パッケージの公開
nuget.config ファイルを使用して認証を行うか、コマンド ライン オプションの --api-key
と GitHub personal access token を使うことで、パッケージを GitHub Packages に公開できます。
GitHub personal access token を API キーとして使用してパッケージを公開する
your GitHub Enterprise Server instance のアカウントで使う PAT がまだない場合は、「personal access tokenを作成する」をご覧ください。
-
新しいプロジェクトを作成します。
dotnet new console --name OctocatApp
-
プロジェクトをパッケージ化してください。
dotnet pack --configuration Release
-
personal access token を API キーとして使用してパッケージを発行します。
dotnet nuget push "bin/Release/OctocatApp.1.0.0.nupkg" --api-key YOUR_GITHUB_PAT --source "github"
パッケージを公開した後は、GitHub上でそのパッケージを見ることができます。 詳しくは、「パッケージの表示」をご覧ください。
nuget.config ファイルを使用してパッケージを公開する
公開の際には、nuget.config 認証ファイルで使う csproj ファイルで、OWNER
に同じ値を使う必要があります。 .csproj ファイルでバージョン番号を指定もしくはインクリメントし、dotnet pack
コマンドを使用してそのバージョンのための .nuspec ファイルを作成してください。 パッケージの作成について詳しくは、Microsoft のドキュメントの「パッケージの作成と公開」をご覧ください。
-
GitHub Packagesに認証を受けてください。 詳細については、「GitHub Packages への認証」を参照してください。
-
新しいプロジェクトを作成します。
dotnet new console --name OctocatApp
-
プロジェクト固有の情報をプロジェクト ファイル (末尾が .csproj のファイル) に追加します。 以下のように置き換えてください。
OWNER
を、パッケージを接続するリポジトリを所有するユーザーまたは Organization アカウントの名前に。REPOSITORY
を、パッケージを接続するリポジトリの名前に。1.0.0
をパッケージのバージョン番号に。HOSTNAME
を your GitHub Enterprise Server instance のホスト名に。
<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 ファイルを使う方法について詳しくは、NuGet パッケージの利用に関する Microsoft のドキュメントをご覧ください。
-
GitHub Packagesに認証を受けてください。 詳細については、「GitHub Packages への認証」を参照してください。
-
パッケージを使用するには、 .csproj プロジェクト ファイルで
ItemGroup
を追加し、PackageReference
フィールドを構成します。Include="OctokittenApp"
のOctokittenApp
の値をパッケージの依存関係に置き換え、Version="12.0.2"
の12.0.2
の値を使用するバージョンに置き換えます。<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 パッケージのプッシュに失敗する可能性があります。
nuspec ファイルを使用している場合は、repository
要素と必須の type
および url
属性が含まれていることを確認してください。
GITHUB_TOKEN
を使って GitHub Actions ワークフロー内の GitHub Packages レジストリの認証を受けている場合、そのトークンからは、ワークフローの実行場所とは異なるリポジトリ内にあるプライベート リポジトリベースのパッケージにアクセスできません。 他のリポジトリに関連付けられたパッケージにアクセスするには、代わりにスコープが read:packages
の personal access token を生成し、このトークンをシークレットとして渡します。