代码改变世界

天行健,君子以自强不息

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

简介

Gitlab Runner作业打包了C#项目,推送到NuGet仓库之后,立即触发下游项目的编译。在下游作业里,经常会提示找不到上游项目推送到NuGet仓库的包。当您只有1个Gitlab Runner实例的时候,几乎碰不到这个问题,如果您有多个Gitlab Runner实例,几乎一步一个坑。最终询问阿里“通义”得到了百度和必应都没提供、官方文档也找不出的解决方案。

1、Gitlab Runner的配置

就是下边的enrironment中的NUGET_HTTP_CACHE_SECONDS=0

concurrent = 1
check_interval = 0
shutdown_timeout = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "WindowsRunner1"
  url = "https://gitlab.company.com"
  id = 54
  token = "glrt-abcdefghijklmnopg"
  token_obtained_at = 2024-05-31T03:51:03Z
  token_expires_at = 0001-01-01T00:00:00Z
  executor = "shell"
  builds_dir = "X:\\gitlab-runner\\builds\\01"
  shell = "powershell"
  environment = ["NUGET_PACKAGES=x:\\gitlab-runner\\nuget-packages", "NUGET_HTTP_CACHE_SECONDS=0"]
  [runners.cache]
    MaxUploadedArchiveSize = 0

2、在nuget还原和编译中,清空nuget的http缓存

Windows的Gitlab Runner搭配的PowerShell脚本:编译和打包这篇文章里可以看到,我们在MSBuild还原项目之前,执行了下述操作:

dotnet nuget locals http-cache -c

通过上述2项设置,我们的Windows Gitlab Runner同时有6个实例执行作业,再没有遇到过找不到明明存在的NuGet包的问题。

posted on 2024-06-21 11:22  终南山人  阅读(18)  评论(0编辑  收藏  举报