ドキュメントには頻繁に更新が加えられ、その都度公開されています。本ページの翻訳はまだ未完成な部分があることをご了承ください。最新の情報については、英語のドキュメンテーションをご参照ください。本ページの翻訳に問題がある場合はこちらまでご連絡ください。

NuGetレジストリの利用

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

GitHub PackagesはGitHub Free、GitHub Pro、GitHub FreeのOrganization、GitHub Team、GitHub Enterprise Cloud、GitHub Enterprise Server、GitHub AEで利用できます。


GitHub Packagesは、レガシーのリポジトリごとのプランを使っているアカウントが所有しているプライベートリポジトリでは利用できません。 また、レガシーのリポジトリごとのプランを使っているアカウントは、リポジトリごとに課金されるため、コンテナレジストリにはアクセスできません。 詳しい情報については「[GitHubの製品](/articles/github-s-products)」を参照してください。

ここには以下の内容があります:

デフォルトでは、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がアクセスできない)に関連づけられたパッケージをインストール。

Authenticating with GITHUB_TOKEN in GitHub Actions

Use the following command to authenticate to GitHub Packages in a GitHub Actions workflow using the GITHUB_TOKEN instead of hardcoding a token in a nuget.config file in the repository:

dotnet nuget add source --username USERNAME --password ${{ secrets.GITHUB_TOKEN }} --store-password-in-clear-text --name github "https://nuget.pkg.github.com/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アカウント名で。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <packageSources>
        <clear />
        <add key="github" value="https://nuget.pkg.github.com/OWNER/index.json" />
    </packageSources>
    <packageSourceCredentials>
        <github>
            <add key="Username" value="USERNAME" />
            <add key="ClearTextPassword" value="TOKEN" />
        </github>
    </packageSourceCredentials>
</configuration>

パッケージを公開する

nuget.configファイルにより認証する個人アクセストークン (PAT) で--api-keyコマンドラインオプションを使用する ことにより、パッケージをGitHub Packagesに公開できます。

GitHub PATをAPIキーとして使用してパッケージを公開する

GitHubアカウントで使用するPATをまだ持っていない場合は、「個人アクセストークンを作成する」を参照してください。

  1. 新しいプロジェクトを作成してください。

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

    dotnet pack --configuration Release
  3. PATを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のドキュメンテーション中の「クイック スタート: パッケージの作成と公開 (dotnet CLI)」を参照してください。

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

  2. 新しいプロジェクトを作成してください。

    dotnet new console --name OctocatApp
  3. プロジェクト固有の情報をプロジェクトファイルに追加してください。プロジェクトファイルは.csprojで終わります。 以下のように置き換えてください。

    • OWNERを、プロジェクトを含むリポジトリを所有しているユーザもしくはOrganizationアカウント名で。
    • REPOSITORYを、公開したいパッケージを含むリポジトリの名前で。
    • 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://github.com/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://github.com/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://github.com/octo-org/octo-cats-and-dogs</RepositoryUrl>
  </PropertyGroup>

</Project>

パッケージをインストールする

プロジェクトでGitHubからパッケージを利用するのは、nuget.orgからパッケージを使用するのに似ています。 パッケージの依存関係を.csprojファイルに追加し、パッケージ名とバージョンを指定してください。 プロジェクトでの.csprojファイルの利用に関する詳しい情報については、Microsoftのドキュメンテーションの「パッケージ利用のワークフロー」を参照してください。

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

  2. パッケージを利用するには、.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://github.com/OWNER/REPOSITORY</RepositoryUrl>
      </PropertyGroup>
    
      <ItemGroup>
        <PackageReference Include="OctokittenApp" Version="12.0.2" />
      </ItemGroup>
    
    </Project>
    
  3. restoreコマンドでパッケージをインストールしてください。

    dotnet restore

トラブルシューティング

Your NuGet package may fail to push if the RepositoryUrl in .csproj is not set to the expected repository .

参考リンク

このドキュメントは役立ちましたか?

Privacy policy

これらのドキュメントを素晴らしいものにするのを手伝ってください!

GitHubのすべてのドキュメントはオープンソースです。間違っていたり、はっきりしないところがありましたか?Pull Requestをお送りください。

コントリビューションを行う

OR, コントリビューションの方法を学んでください。

問題がまだ解決していませんか?

GitHubコミュニティで質問する サポートへの連絡