GitLab NuGetリポジトリ

GitLab Premium12.8で導入されました

GitLab NuGetリポジトリがあれば、すべてのプロジェクトはNuGetパッケージを保存する独自のスペースを持つことができます。

GitLab NuGetリポジトリは次のように動作します:

開発者の環境設定

NuGet CLI 5.2以降が必要です。 それ以前のバージョンはGitLab NuGetリポジトリに対してテストされていないため、動作しない可能性があります。Visual Studioをお持ちの場合、NuGet CLIはすでにインストールされていると思います。

または、NuGet CLIをインストールする.NET SDK 3.0以降を使用することもできます。

NuGetCLIが正しくインストールされているかどうかは、次のようにして確認できます:

nuget help

のようなものが表示されるはずです:

NuGet Version: 5.2.0.6090
usage: NuGet <command> [args] [options]
Type 'NuGet help <command>' for help on a specific command.

Available commands:

[output truncated]

MacOSサポート

macOSの場合は、Monoを使用してNuGet CLIを実行することもできます。 Homebrewユーザーの場合は、brew install mono を実行してMonoをインストールします。その後、NuGet CLIのページからWindows C#バイナリnuget.exe をダウンロードして実行します:

mono nuget.exe

NuGetリポジトリの有効化

Note:このオプションは、GitLab管理者がパッケージレジストリのサポートを有効にしている場合にのみ利用できます。

NuGet リポジトリを有効にすると、デフォルトですべての新規プロジェクトで利用できるようになります。 既存のプロジェクトで有効にする場合、または無効にする場合:

  1. プロジェクトの[設定]>[一般]>[権限]に移動します。
  2. パッケージ機能を検索し、有効または無効にします。
  3. 変更を有効にするには、[変更を保存]をクリックします。

左サイドバーに「パッケージ&レジストリ」セクションが表示されます。

GitLab NuGetリポジトリをNuGetにソースとして追加します。

以下のものが必要です:

  • GitLabでのユーザー名。
  • 個人アクセストークンまたはデプロイトークン。 リポジトリ認証用:
    • 個人アクセストークンは、スコープをapiに設定して生成することができます。
    • スコープをread_package_registrywrite_package_registry、またはその両方に設定してデプロイトークンを生成できます。
  • ソースにふさわしい名前。
  • プロジェクトIDは、プロジェクトのホームページに記載されています。

でNuGetに新しいソースを追加できるようになりました:

NuGet CLIによるNuGetリポジトリソースの追加

GitLab NuGetリポジトリをソースとして追加するには、nuget

nuget source Add -Name <source_name> -Source "https://gitlab-instance.example.com/api/v4/projects/<your_project_id>/packages/nuget/index.json" -UserName <gitlab_username or deploy_token_username> -Password <gitlab_personal_access_token or deploy_token>

どこで

  • <source_name> は希望するソース名です。

使用例:

nuget source Add -Name "GitLab" -Source "https://gitlab.example/api/v4/projects/10/packages/nuget/index.json" -UserName carol -Password 12345678asdf

Visual StudioでのNuGetリポジトリソースの追加

  1. Visual Studioを開きます。
  2. FILE > OPTIONS(Windows)またはVisual Studio > Preferences(MacOS)を開きます。
  3. NuGetセクションで、Sourcesを開きます。 すべてのNuGetソースのリストが表示されます。
  4. 追加をクリックします。
  5. を記入してください:
    • Name: ソースの希望する名前
    • 場所はhttps://gitlab.com/api/v4/projects/<your_project_id>/packages/nuget/index.json
      • <your_project_id> をプロジェクトIDに置き換えてください。
      • GitLab をセルフマネジメントでインストールしている場合は、gitlab.com をドメイン名に置き換えてください。
    • ユーザー名: GitLabユーザー名またはデプロイトークンユーザー名
    • パスワード:個人アクセストークンまたはデプロイトークン

    Visual Studio Adding a NuGet source

  6. 保存をクリックします。

    Visual Studio NuGet source added

警告が表示された場合は、場所ユーザー名パスワードが正しいことを確認してください。

.NET CLIを使用したNuGetリポジトリソースの追加

.NET のソースとして GitLab NuGet リポジトリを追加するには、プロジェクトのルートにnuget.config という名前のファイルを作成し、次の内容を記述します:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <packageSources>
        <clear />
        <add key="gitlab" value="https://gitlab-instance.example.com/api/v4/projects/<your_project_id>/packages/nuget/index.json" />
    </packageSources>
    <packageSourceCredentials>
        <gitlab>
            <add key="Username" value="<gitlab_username or deploy_token_username>" />
            <add key="ClearTextPassword" value="<gitlab_personal_access_token or deploy_token>" />
        </gitlab>
    </packageSourceCredentials>
</configuration>

パッケージのアップロード

パッケージをアップロードする際は、以下の点に注意してください:

  • 最大許容サイズは50メガバイトです。
  • 同じパッケージを同じバージョンで複数回アップロードした場合、連続したアップロードはそれぞれ別のファイルとして保存されます。 パッケージをインストールするとき、GitLabは最新のファイルを提供します。
  • GitLabにパッケージをアップロードしても、すぐにプロジェクトのパッケージUIに表示されるわけではありません。 パッケージの処理には最大10分かかることがあります。

NuGet CLIによるパッケージのアップロード

このセクションでは、プロジェクトが適切にビルドされ、NuGet CLIでNuGetパッケージが作成済みであることを前提とします。 次のコマンドを使用してパッケージをアップロードします:

nuget push <package_file> -Source <source_name>

どこで

.NET CLIによるパッケージのアップロード

このセクションでは、プロジェクトが適切にビルドされ、.NETCLIでNuGetパッケージを作成済みであることを前提とします。 次のコマンドを使用してパッケージをアップロードします:

dotnet nuget push <package_file> --source <source_name>

どこで

使用例:

dotnet nuget push MyPackage.1.0.0.nupkg --source gitlab

パッケージのインストール

NuGet CLIによるパッケージのインストール

警告:デフォルトでは、nugetnuget.org 最初に nuget.org公式ソースをチェックしますnuget.orgnuget.orgGitLabnuget.org NuGet リポジトリに nuget.orgnuget.org のパッケージと同じ名前のパッケージがある場合 nuget.org、ソース名を指定しなければ、間違ったパッケージがインストールされます。

以下のコマンドを使用して、最新バージョンのパッケージをインストールしてください:

nuget install <package_id> -OutputDirectory <output_directory> \
  -Version <package_version> \
  -Source <source_name>

どこで

  • <package_id> はパッケージIDです。
  • <output_directory> はパッケージがインストールされる出力ディレクトリです。
  • <package_version> (オプション)はパッケージのバージョンです。
  • <source_name> (オプション)はソース名です。

.NET CLIによるパッケージのインストール

警告:GitLab NuGet リポジトリに別のソースのパッケージと同じ名前のパッケージがある場合、インストール中にdotnet がソースをチェックする順序を確認する必要があります。これはnuget.config ファイルで定義されています。

以下のコマンドを使用して、最新バージョンのパッケージをインストールしてください:

dotnet add package <package_id> \
       -v <package_version>

どこで

  • <package_id> はパッケージIDです。
  • <package_version> (オプション)はパッケージのバージョンです。