首页 > 其他分享 >GitLab 管理 NuGet 包

GitLab 管理 NuGet 包

时间:2024-05-08 14:01:10浏览次数:27  
标签:nuget 令牌 管理 -- GitLab NuGet 设置

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 参考资料

标签:nuget,令牌,管理,--,GitLab,NuGet,设置
From: https://www.cnblogs.com/txrock/p/18179524

相关文章

  • 在Windows运行Gitlab Runner对.NET Framework 4.6.1旧项目自动执行单元测试
    摘要本文介绍了GitlabRunner如何在Windows服务器上调用vstest.console.exe,对旧的项目基于.NETFramework4.6.1的项目,自动执行单元测试。改造旧版本的.csproj文件改造成功后,完整的.csproj文件如下:<ProjectSdk="Microsoft.NET.Sdk"> <PropertyGroup><ProjectG......
  • 在Windows运行Gitlab Runner对.NET Framework 4.6.1旧项目自动执行单元测试
    摘要本文介绍了GitlabRunner如何在Windows服务器上调用vstest.console.exe,对旧的项目基于.NETFramework4.6.1的项目,自动执行单元测试。改造旧版本的.csproj文件改造成功后,完整的.csproj文件如下:<ProjectSdk="Microsoft.NET.Sdk"> <PropertyGroup><ProjectG......
  • 在Gitlab Runner中调用Web Api写入Directory.Build.props需要的版本号文件
    摘要本文介绍了在Windows上的GitlabRunner,如何调用webapi更新版本号定义文件。PowerShellfunctionUpdate-Version{ param( [string]$WEB_API_URL, [string]$NAMESPACE, [string]$VERSION_ID )echo"能生成或写入.props文件的webapi的网站地址:"$WEB_API_URLe......
  • 在Windows运行Gitlab Runner自动推送nupkg包到NuGet仓库
    摘要本文描述了运行在Windows上的GitlabRunner,如果调用PowerShell来执行推送nupkg包的命令。.gitlab-ci.yml完整脚本如下:stages:#Listofstagesforjobs,andtheirorderofexecution-build-test-push-nupkgvariables:YEE_CLOUD_VERSION_I......
  • ITIL4视角下的问题管理:构建服务稳定的基石
    在日新月异的信息时代,确保IT服务的稳定与高效已成为决定企业竞争力的核心要素。问题管理作为ITIL4框架中的关键实践,致力于识别并解决导致IT服务中断或性能下降的根本性原因,从而预防未来事件的发生,保障服务的稳定与可靠。这超越了传统的故障应对模式,转向实施预防性策略和持续的服务......
  • 使用 Docker 部署 TaleBook 私人书籍管理系统
    1)项目介绍GitHub:https://github.com/talebook/talebookTalebook是一个简洁但强大的私人书籍管理系统。它基于Calibre项目构建,具备书籍管理、在线阅读与推送、用户管理、SSO登录、从百度/豆瓣拉取书籍信息等功能。友情提醒:个人是不允许进行在线出版的,维护公开的书籍网站......
  • 在Windows运行Gitlab Runner打包基于.NET Framework 4.6.1的项目
    摘要本文详细描述了运行在Windows商的GitlabRunner,如何自动集成.NETFramework的项目。Gitlab中的变量变量1:NUPKG_OUTPUT_ROOT这个目录是在git获取的解决方案根目录之外,因为stages变了以后,当前GitlabRunner工作的当前解决方案根目录下会被清空。我们希望build了以后经过单元......
  • 机台统一管理有多困难?但现在出现可行的解决方案了!
    机台的统一管理对于企业来说对提高生产效率、降低成本、优化资源配置以及保障生产安全等方面都具有至关重要的作用。但企业机台统一管理却存在实际的困难,主要体现在:多样化的设备和运作模式:由于机台设备可能来自不同的厂商,其规格、运行环境和上报方式各不相同。这导致难以采用统......
  • 在Linux中,如何使用Puppet进行配置管理?
    Puppet是一个开源的配置管理工具,用于自动化地管理大量服务器的配置。它使用一个集中式的服务器,称为Puppetmaster,以及安装在每个被管理服务器上的代理,称为Puppetagent。以下是在Linux中使用Puppet进行配置管理的基本步骤:1.安装Puppet安装PuppetServer(Master):选择一台服......
  • MMU内存管理
    MMU内存管理目录MMU内存管理1.MMU简述2.MMU的功能3.内存分段与分页3.1内存分段3.1.1分段的不足3.2内存分页3.2.1分页的优势3.2.2分页的映射3.2.3多级页表参考1.MMU简述MMU(MemoryManagementUnit,内存管理单元)是一种硬件模块,用于在CPU和内存之间实现虚拟内存管理。它的主要功能......