GitLab NuGet Repository

原文:https://docs.gitlab.com/ee/user/packages/nuget_repository/

GitLab NuGet Repository

Introduced in GitLab Premium 12.8.

使用 GitLab NuGet 存储库,每个项目都可以拥有自己的空间来存储 NuGet 软件包.

GitLab NuGet 存储库可用于:

Setting up your development environment

您将需要NuGet CLI 5.2 或更高版本 . 早期版本尚未针对 GitLab NuGet 存储库进行测试,因此可能无法正常工作. 如果您具有Visual Studio ,则可能已经安装了 NuGet CLI.

或者,您可以使用.NET SDK 3.0 或更高版本 ,该版本将安装 NuGet CLI.

您可以通过以下方法确认已正确安装NuGet CLI

  1. nuget help

您应该看到类似以下内容:

  1. NuGet Version: 5.2.0.6090
  2. usage: NuGet <command> [args] [options]
  3. Type 'NuGet help <command>' for help on a specific command.
  4. Available commands:
  5. [output truncated]

macOS support

对于 macOS,您还可以使用Mono运行 NuGet CLI. 对于 Homebrew 用户,请运行brew install mono来安装 Mono. 然后,您应该能够从NuGet CLI 页面下载 Windows C#二进制文件nuget.exe并运行:

  1. mono nuget.exe

Enabling the NuGet Repository

注意:仅当您的 GitLab 管理员启用了对 Package Registry 的支持时,此选项才可用.

启用 NuGet 存储库后,默认情况下它将可用于所有新项目. 要为现有项目启用它,或者要禁用它:

  1. 导航到项目的“设置”>”常规”>”可见性,项目功能,权限” .
  2. 找到”软件包”功能并启用或禁用它.
  3. 单击保存更改以使更改生效.

然后,您应该能够在左侧栏中看到” 程序包和注册表”部分.

Adding the GitLab NuGet Repository as a source to NuGet

您将需要以下内容:

  • 您的 GitLab 用户名.
  • 个人访问令牌或部署令牌. 对于存储库身份验证:
    • 您可以将范围设置为api来生成个人访问令牌 .
    • 您可以生成令牌部署与范围设置为read_package_registrywrite_package_registry ,或两者兼而有之.
  • 您的来源的合适名称.
  • 您的项目 ID,可以在项目的主页上找到.

您现在可以使用以下方法向 NuGet 添加新的源:

Add NuGet Repository source with NuGet CLI

要将 GitLab NuGet 存储库添加为带有nuget的源:

  1. 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>

Where:

  • <source_name>是所需的源名称.

例如:

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

Add NuGet Repository source with Visual Studio

  1. Open Visual Studio.
  2. 打开” 文件”>”选项” (Windows)或” Visual Studio”>”首选项” (Mac OS).
  3. NuGet部分中,打开Sources . 您将看到所有 NuGet 来源的列表.
  4. Click Add.
  5. 填写以下字段:

    • 名称 :源的期望名称
    • 位置https://gitlab.com/api/v4/projects/<your_project_id>/packages/nuget/index.json : https://gitlab.com/api/v4/projects/<your_project_id>/packages/nuget/index.json
      • <your_project_id>替换为您的项目 ID.
      • 如果您具有自行管理的 GitLab 安装, gitlab.com使用您的域名替换gitlab.com .
    • 用户名:您的 GitLab 用户名或部署令牌用户名
    • 密码 :您的个人访问令牌或部署令牌

    Visual Studio 添加 NuGet 源

  6. Click Save.

    Visual Studio NuGet source added

如有任何警告,请确保LocationUsernamePassword正确.

Add NuGet Repository source with .NET CLI

要将 GitLab NuGet 存储库添加为.NET 的源, nuget.config在项目的根目录中创建一个名为nuget.config的文件,其内容如下:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <configuration>
  3. <packageSources>
  4. <clear />
  5. <add key="gitlab" value="https://gitlab-instance.example.com/api/v4/projects/<your_project_id>/packages/nuget/index.json" />
  6. </packageSources>
  7. <packageSourceCredentials>
  8. <gitlab>
  9. <add key="Username" value="<gitlab_username or deploy_token_username>" />
  10. <add key="ClearTextPassword" value="<gitlab_personal_access_token or deploy_token>" />
  11. </gitlab>
  12. </packageSourceCredentials>
  13. </configuration>

Uploading packages

上载套件时,请注意:

  • 允许的最大大小为 50 MB.
  • 如果您多次上传具有相同版本的相同程序包,则每次连续上传都将保存为单独的文件. 安装软件包时,GitLab 将提供最新文件.
  • 将软件包上传到 GitLab 时,它们不会立即显示在项目的软件包 UI 中. 处理包裹最多可能需要 10 分钟.

Upload packages with NuGet CLI

本部分假定您的项目已正确构建,并且已经使用 NuGet CLI 创建了 NuGet 软件包 . 使用以下命令上传软件包:

  1. nuget push <package_file> -Source <source_name>

Where:

Upload packages with .NET CLI

本节假定您的项目已正确构建,并且已经使用.NET CLI 创建了 NuGet 软件包 . 使用以下命令上传软件包:

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

Where:

例如:

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

Install packages

Install a package with NuGet CLI

警告:默认情况下, nuget检查的官方消息nuget.org第一. 如果您在 GitLab NuGet 存储库中拥有与nuget.org的软件包同名的软件包, nuget.org必须指定源名称,否则将安装错误的软件包.

使用以下命令安装最新版本的软件包:

  1. nuget install <package_id> -OutputDirectory <output_directory> \
  2. -Version <package_version> \
  3. -Source <source_name>

Where:

  • <package_id>是软件包 ID.
  • <output_directory>是将在其中安装软件包的输出目录.
  • <package_version> (可选)是软件包版本.
  • <source_name> (可选)是源名称.

Install a package with .NET CLI

Warning: If you have a package in the GitLab NuGet Repository with the same name as a package at a different source, you should verify the order in which dotnet checks sources during install. This is defined in the nuget.config file.

使用以下命令安装最新版本的软件包:

  1. dotnet add package <package_id> \
  2. -v <package_version>

Where:

  • <package_id>是软件包 ID.
  • <package_version> (可选)是软件包版本.