Skip to main content
ドキュメントへの更新が頻繁に発行されており、このページの翻訳はまだ行われている場合があります。 最新の情報については、「英語のドキュメント」を参照してください。

NuGetレジストリの利用

GitHub Packages に NuGet パッケージを公開し、GitHub Packages に保存されたパッケージを依存関係として .NET プロジェクトで利用するよう dotnet コマンドライン インターフェイス (CLI) を構成できます。

注: サイト管理者はそれぞれのサポートされているパッケージの種類を有効化あるいは無効化できるので、このパッケージの種類はインスタンスで利用できないかもしれません。 詳細については、「エンタープライズ向けのパッケージ サポートの構成」を参照してください。

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を作成する」をご覧ください。

  1. 新しいプロジェクトを作成します。

    dotnet new console --name OctocatApp
  2. プロジェクトをパッケージ化してください。

    dotnet pack --configuration Release
  3. 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 のドキュメントの「パッケージの作成と公開」をご覧ください。

  1. GitHub Packagesに認証を受けてください。 詳細については、「GitHub Packages への認証」を参照してください。

  2. 新しいプロジェクトを作成します。

    dotnet new console --name OctocatApp
  3. プロジェクト固有の情報をプロジェクト ファイル (末尾が .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>
    
  4. プロジェクトをパッケージ化してください。

    dotnet pack --configuration Release
  5. nuget.config ファイルで指定した key を使用してパッケージを公開します。

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

パッケージを公開した後は、GitHub上でそのパッケージを見ることができます。 詳しくは、「パッケージの表示」をご覧ください。

同じリポジトリへの複数パッケージの公開

複数のパッケージを同じリポジトリに接続するには、同じ GitHub リポジトリの URL をすべての .csproj プロジェクト ファイルの RepositoryURL フィールドに含めることができます。 GitHubは、そのフィールドに基づいてリポジトリをマッチします。

たとえば、以下の OctodogAppOctocatApp プロジェクトは同じリポジトリに公開されます。

<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 のドキュメントをご覧ください。

  1. GitHub Packagesに認証を受けてください。 詳細については、「GitHub Packages への認証」を参照してください。

  2. パッケージを使用するには、 .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>
    
  3. restore コマンドを使用してパッケージをインストールします。

    dotnet restore

トラブルシューティング

.csproj 内の RepositoryUrl が想定されているリポジトリに設定されていない場合、NuGet パッケージのプッシュに失敗する可能性があります。

nuspec ファイルを使用している場合は、repository 要素と必須の type および url 属性が含まれていることを確認してください。

GITHUB_TOKEN を使って GitHub Actions ワークフロー内の GitHub Packages レジストリの認証を受けている場合、そのトークンからは、ワークフローの実行場所とは異なるリポジトリ内にあるプライベート リポジトリベースのパッケージにアクセスできません。 他のリポジトリに関連付けられたパッケージにアクセスするには、代わりにスコープが read:packages の personal access token を生成し、このトークンをシークレットとして渡します。

参考資料