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

Configuring NuGet for use with GitHub Package Registry

You can configure NuGet to publish packages to GitHub パッケージレジストリ and to use packages stored on GitHub パッケージレジストリ as dependencies in a .Net project.

GitHub パッケージレジストリ は現在、限定パブリックベータとして利用できます。ベータ期間中は、高価なワークフローやコンテンツに GitHub パッケージレジストリ を利用することは避けてください。詳細は「GitHub パッケージレジストリ について」を参照してください。

In this article

Authenticating to GitHub パッケージレジストリ

You must use a personal access token with the read:packages and write:packages scopes to publish and delete public packages in the GitHub パッケージレジストリ with NuGet. Your personal access token must also have the repo scope when the repository is private. For more information, see "Creating a personal access token for the command line."

You can configure nuget to use your token when pushing new packages by adding GitHub パッケージレジストリ as a Source to the nuget client. Replace the OWNER in the scope parameter with the GitHub user or organization name that contains the repository where you will publish the package.

nuget sources Add -Name "GPR" \
     -Source "https://nuget.pkg.github.com/OWNER/index.json" \
     -UserName USERNAME -Password TOKEN

You can also use a GITHUB_TOKEN to publish and consume packages in the GitHub パッケージレジストリ in a GitHub Actions workflow without storing and managing a personal access token. For more information about GITHUB_TOKEN, see "GITHUB_TOKEN secret."

You can use a script to inject your GITHUB_TOKEN into the appropriate configuration file for GitHub パッケージレジストリ. Add GitHub パッケージレジストリ as an alernative registry or repository in the configuration file for the package client, as well as your GitHub username and a personal access token with the appropriate scopes. The exact steps for creating a configuration file vary by package type.

Publishing a package

You can publish a NuGet package to GitHub パッケージレジストリ under the OWNER using the nuget CLI to specify the Source. Using the previous example, specify GPR as the package source and replace YOUR-PACKAGE with the name of your package.

$ nuget push YOUR-PACKAGE.nupkg -Source "GPR"

パッケージには、以下の URL からアクセスできます。OWNER をあなたの GitHub ユーザもしくは Organization 名に、REPOSITORY をリポジトリ名に置き換えてください。

https://github.com/OWNER/REPOSITORY/packages

Publishing multiple packages to the same GitHub repository

When you publish a package, by default GitHub パッケージレジストリ uses the package name to determine the GitHub repository where it will be published. For example, a package named odata-client would be published to the OWNER/odata-client GitHub repository.

If you would like to change the repository where the package is published, or publish multiple packages to the same repository, you can include the URL to the GitHub repository in the projectUrl field of the package's .nuspec file. GitHub will match the repository based on that field, instead of the package name.

  1. Add the URL of the GitHub repository in the projectUrl field of the package's .nuspec file.

    <?xml version="1.0" encoding="utf-8"?>
    <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
        <metadata>
        <id>sample</id>
        <version>1.2.3</version>
        <authors>Kim Abercrombie, Franck Halmaert</authors>
        <description>Sample exists only to show a sample .nuspec file.</description>
        <language>en-US</language>
        <projectUrl>https://github.com/my-org/my-custom-repo</projectUrl>
        </metadata>
    </package>

    Note: If you have a .csproj file created by Visual Studio, the version you use in your .nuspec file must match the version in your .csproj file.

  2. Create the package using the configuration in the package's .nuspec file.

    $ dotnet pack --configuration Release
  3. Publish the new package to GitHub, replacing YOUR-PACKAGE with the name of your package.

    $ nuget push YOUR-PACKAGE.nupkg -Source "GPR"

For more information on creating your package, see "Create and publish a package" in the Microsoft documentation.

パッケージレジストリイベントを受信する

パッケージが 'published' あるいは 'updated' になったときに、webhook イベントを受信することができます。詳細は GitHub 開発者ドキュメンテーション の RegistryPackageEvent を参照してください。

Installing a package

Using packages from GitHub in your projects is similar to using packages from nuget.org. Add your package dependencies to your package.config specifying the package name & version.

  1. Authenticate to GitHub パッケージレジストリ with nuget source Add. For more information, see "Authenticating to GitHub パッケージレジストリ."
  2. Configure packages.config to use the package. For example, this packages.config uses the octo-app package as a dependency.

     <?xml version="1.0" encoding="utf-8"?>
       <packages>
         <package id="octo-app" version="3.1.1" />
       </packages>
     </xml>
  3. Restore all packages.

    $ nuget restore

For more information on using a packages.config in your project, see "Working with NuGet packages" in the Microsoft documentation.

Deleting a package

To avoid breaking projects that may depend on your packages, GitHub パッケージレジストリ does not support deleting published versions of a package or an entire published package for public repositories. 法的な理由やGDPR標準への準拠といった特別な状況下では、GitHub Supportを通じてパッケージの削除をリクエストできます。 GitHub Supportへの連絡には連絡フォームを使い、タイトル行を「GitHub パッケージレジストリ」としてください。

You can delete private packages via GitHub's API. For more information, see "Access to package version deletion" in GitHub 開発者ドキュメンテーション.

担当者にお尋ねください

探しているものが見つからなかったでしょうか?

弊社にお問い合わせください