简介
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包的问题。
黑夜里不停折腾的代码行者。