GitLab 管理 NuGet 包

gitlab,nuget · 浏览次数 : 0

小编点评

**1. 在服务器上构建项目时引用 nuget.org 之外的包** - 确保所有 nuget.org 包在服务器的本地 NuGet 包库中。 - 创建一个新的 NuGet 包库文件,并添加包含所有必要的 nuget.org 包的 URL。 - 在构建过程中,使用 `dotnet nuget add` 命令从 NuGet 包库中获取所需包。 **2. 上传 NuGet 包到 GitLab 项目** - 创建一个新的项目或选择已存在的项目。 - 在项目设置中设置 **部署令牌(Deploy Token)**。 - 为 **read_package_registry** 令牌分配读取软件包仓库的权限。 - 为 **write_package_registry** 令牌分配读取和写入软件包库的权限。 - 保存并测试部署令牌。 **3. 设置 NuGet 源** - 在构建环境中添加一个新 NuGet 源。 - 使用 `dotnet nuget add` 命令从指定的 URL 下载 NuGet 包。 - 在 `NuGet.config` 文件中配置源名称、用户名和密码。

正文

1 概览

在服务器上构建项目时,需要引用 nuget.org 之外的包,如公司内部开发的、第三方未发布到 nuget.org 上的。怎么办?

GitLab 提供了 Package Registry 来解决这个问题。

2 上传 NuGet 包到指定项目中

  1. 新建或使用一个已有项目,作为存放 NuGet 包的项目,为其他需要引用对应 NuGet 包的项目提供 Nuget 源和源上所有包的依赖。

  2. 在该项目的【仓库】设置中,设置【部署令牌(Deploy Token)】

  3. 首先设置一个权限为【write_package_registry】的令牌,允许对软件包库进行读取、写入和删除访问。定义一个合适的名称和到期日期,到期日期不设置则默认永不过期。用户名选填。记录服务器为令牌生成的密码,该密码只会在设置时出现,之后无法再次查看。用于上传包。

  4. 再设置一个权限为【read_package_registry】的令牌,允许对软件包仓库进行只读访问。定义一个合适的名称和到期日期,到期日期不设置则默认永不过期。必须填写一个合适的用户名,如 DEPLOY_READ。记录服务器为令牌生成的密码,该密码只会在设置时出现,之后无法再次查看。用于添加源。

  5. 定位到所需上传的 Nuget 包,如在本地磁盘目录下,执行命令:

    dotnet nuget push <待上传的Nuget包> --source https://gitlab.example.com/api/v4/projects/<your_project_id>/packages/nuget/index.json --api-key <write_package_registry的令牌密码>
    

    api-key 还可以是个人访问令牌或者流水线作业令牌,该指令需要 GitLab v16.1 以上的支持

3 添加 GitLab 上的 NuGet 源

  1. 构建前,为项目所在构建环境内添加新的 NuGet 源,执行命令:

    dotnet nuget add source "https://gitlab.example.com/api/v4/projects/<项目ID>/packages/nuget/index.json" --name <源名称> --username <read_package_registry的令牌用户名> --password <read_package_registry的令牌密码>
    

    源名称可以是任意合适的名称,如 gitlab-software-group-projects

4 管理 NuGet 包源

  1. %APPDATA%/NuGet/ 中找到 NuGet.Config,进行编辑。也可以在如 Visual Studio 这样的 IDE 中找到对应的【NuGet 包管理器设置】,从而在 UI 界面选项中对配置文件进行修改。

  2. 使用 CLI 添加过 NuGet 源,可以在配置文件中 packageSources 查看到。

    <packageSources>
      <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
      <add key="Microsoft Visual Studio Offline Packages" value="C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\" />
      <add key="gitlab-software-group-projects" value="https://gitlab.example.com/api/v4/projects/<项目ID>/packages/nuget/index.json" />
    </packageSources>
    
  3. 出于安全考虑,NuGet 现要求对程序包进行包源映射,告知机器某个程序包应该访问哪个包源进行下载,避免不法分子利用同名的程序包链接到未知的地址。配置文件中编辑 packageSourceMapping 来进行包源映射设置。

    <packageSourceMapping>
      <packageSource key="nuget.org">
        <package pattern="*" />
      </packageSource>
      <packageSource key="gitlab-software-group-projects">
        <package pattern="A.*" />
        <package pattern="B.*" />
      </packageSource>
    </packageSourceMapping>
    

5 参考资料

与GitLab 管理 NuGet 包相似的内容:

GitLab 管理 NuGet 包

GitLab 项目提供了上传 NuGet 包的途径,能够在组织内部轻松管理程序包依赖和产出,支持持续集成和发布。同时适合承载无法访问或不在 nuget.org 上的程序包。

Gitlab搭建

目录Gitlab1. 使用docker部署gitlab2. 登录gitlab2.1 修改语言为中文2.3 修改密码3. 用户管理3.1 创建用户4. 配置ssh拉取代码4.1 添加ssh密钥4.2 测试拉取 Gitlab 1. 使用docker部署gitlab [root@master ~]# mk

开启GitLab的邮件通知功能以及一些外观配置

前言 维护GitLab的同事离职了 刚好又有新实习生需要申请账号 只能我来出手了 其实之前安装了 GitLab 之后一直还是用得比较粗糙的 属于是勉强能用的水平,有些配置都还没改好 这次把邮件功能、域名、外观啥的配置好了,写篇文章记录一下 目录结构 先来回顾一下 GitLab 的目录结构 我们的 G

gitlab自动定时备份文件,备份失败发送邮件

一、需求 为预防gitlab出现故障,每天定时备份,备份完成后把之前的备份文件删除,备份成功或失败的时候自动发送邮件提醒,这里的gitlab为docker部署。 二、备份命令准备 1)备份命令 创建一个 gitlab_auto_backup.sh文件,文件内容 #!/bin/bash # 进入Git

如何从0-1了解 熟悉 精通gitlab

加入gitlab团队项目: 打开其他用户极狐邀请邮件; 点击接受紫色邀请按钮“accept invitation”; 选择免费试用90天saas服务; 使用邮箱注册进行邮箱验证【验证方式:邮箱验证码方式验证】; 绑定手机号码【验证手机号真实属于个人方式:10分钟有效期短信验证码】; 填写一些gitl

[转帖]gitlab:一次近乎完美的PostgreSQL版本大升级实践

作者 | Jose Finotto 译者 | 马可薇 策划 | 万佳 2020 年 5 月,我们与 OnGres 合作,对 GitLab 上的 Postgres 集群进行版本大更新,从 9.6 版本升级到 11 版本。升级全部在维护窗口内运行,没有丝毫差错;更新中所有涉及的内容、计划、测试,以及全流

AWX+gitlab

目录AWX+gitlab1. Awx配置1.1 添加机构1.2 添加团队1.3 添加主机1.4 测试主机连通性2. 对接gitlab2.1 添加凭证2.2 添加项目2.3 上传playbook2.3.1 克隆仓库2.3.2 创建分支2.3.3 编写playbook并上传2.3.4 上传ansible

在CentOS8中安装gitlab

安装 docker 及 docker-compose centos8 更新源 cd /etc/yum.repos.d/ sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* sed -i 's|#baseurl=http://mi

Git + Jenkins 自动化 NGINX 发布简易实现

概述 之前基于 GitLab + Jenkins 实现了简单的 NGINX 的自动化发布。 具体包含如下的组件: GitLab 包括 GItLab 的 WebHook; Jenkins 及其插件: Generic Webhook Trigger Publish Over SSH 🧠疑问: 为什么不

使用Java统计gitlab代码行数

一、背景: 需要对当前公司所有的项目进行代码行数的统计 二、 可实现方式 1.脚本:通过git脚本将所有的项目拉下来并然后通过进行代码行数的统计 样例: echo 创建项目对应的文件夹 mkdir 项目名称echo 切到创建的文件夹中 cd 项目名称echo 进行git初始化 git init ec