このバージョンの GitHub Enterprise はこの日付をもって終了となりました: 2021-09-23. 重大なセキュリティの問題に対してであっても、パッチリリースは作成されません。 パフォーマンスの向上、セキュリティの改善、新機能のためには、最新バージョンのGitHub Enterpriseにアップグレードしてください。 アップグレードに関する支援については、GitHub Enterprise supportに連絡してください。

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 Enterprise Server 2.22でベータです。 GitHub Enterprise Serverのインスタンスのベータに参加するには、サインアップフォームを使ってください。

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

GitHub ActionsにおけるGITHUB_TOKENでの認証

リポジトリ内のnuget.configファイル内のハードコードされたトークンの代わりに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に関する詳しい情報については「ワークフローでの認証」を参照してください。

個人アクセストークンでの認証

GitHub Packages内でパッケージを公開及びインストールするためには、適切なスコープで個人アクセストークンを使わなければなりません。 詳しい情報については「GitHub Packagesについて」を参照してください。

dotnetコマンドラインインターフェース(CLI)でGitHub Packagesに認証を受けるには、プロジェクトディレクトリにnuget.configファイルを作成し、GitHub Packagesをソースとしてdotnet CLIクライアントのpackageSourcesの下に指定してください。

以下のように置き換えてください。

  • USERNAMEをGitHub上のユーザアカウント名で。
  • TOKENを個人アクセストークンで。
  • OWNER を、プロジェクトを含むリポジトリを所有しているユーザまたはOrganizationアカウント名で。
  • HOSTNAME を、GitHub Enterprise Serverのインスタンスインスタンスのホスト名で。

インスタンスで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>

たとえば、以下の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>

パッケージを公開する

nuget.configファイルで認証を受けることで、パッケージをGitHub Packagesに公開できます。

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をパッケージのバージョン番号で。
    • HOSTNAME を、GitHub Enterprise Serverのインスタンスインスタンスのホスト名で。
    <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ファイルの利用に関する詳しい情報については、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://HOSTNAME/OWNER/REPOSITORY</RepositoryUrl>
      </PropertyGroup>
    
      <ItemGroup>
        <PackageReference Include="OctokittenApp" Version="12.0.2" />
      </ItemGroup>
    
    </Project>
    
  3. restoreコマンドでパッケージをインストールしてください。

    dotnet restore

トラブルシューティング

.csproj内のRepositoryUrlが期待されるリポジトリに設定されていない場合、NuGetパッケージのプッシュに失敗するかもしれません。

参考リンク

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