注: サイト管理者はそれぞれのサポートされているパッケージの種類を有効化あるいは無効化できるので、このパッケージの種類はインスタンスで利用できないかもしれません。 詳細については、「エンタープライズ向けのパッケージ サポートの構成」を参照してく� さい。
GitHub Packages への認証を行う
パッケージを発行、インストール、および削除するには、アクセス トークンが必要です。
個人アクセス トークン (PAT) を使用し、GitHub Packages または GitHub Enterprise Server API の認証を受けることができます。 個人トークンを作成する際には、必要に応じて様々なスコープをトークンに割り当てできます。 PAT のパッケージ関連のスコープの詳細については、「GitHub パッケージのアクセス許可について」を参照してく� さい。
GitHub Actionsワークフロー内でGitHub Packagesレジストリに認証を受けるには、以下の方法が使えます。
GITHUB_TOKEN
では、ワークフロー リポジトリに関連付けられているパッケージを発行します。packages:read
以上のスコープが設定された PAT では、(GITHUB_TOKEN
ではアクセスできない) 他のプライベート リポジトリに関連付けられているパッケージがインストールされます。
GitHub Actions における GITHUB_TOKEN
での認証
リポジトリ内の 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 で認証を行う
GitHub Packages内でパッケージを公開及びインストールするためには、適切なスコープで個人アクセストークンを使わなければなりません。 詳しくは、「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 を生成し、このトークンをシークレットとして渡します。