在Gitlab CI泊坞窗环境下无法恢复mono项目的nuget包

该项目在Mono下开发,取决于一些nuget软件包。 我使用Gitlab CI来运行构build。 构build环境是docker ubuntu。 所有其他的apt-get安装都能正常工作,但不pipe怎样修改参数和NuGet.config nuget都不会恢复软件包。 我在v2和v3之间切换,并尝试了所有可以在互联网上find的讨论内容:

http://blog.davidebbo.com/2014/01/the-right-way-to-restore-nuget-packages.html

http://docs.myget.org/docs/how-to/package-not-found-during-package-restore

但仍然有以下错误:

 gitlab-ci-multi-runner 1.1.4 (9e2fd1a) Using Docker executor with image ruby:2.1 ... Pulling docker image ruby:2.1 ... ... $ apt-get update -qq && apt-get install -y -qq $ apt-get install -y -qq mono-complete ... $ wget https://dist.nuget.org/win-x86-commandline/latest/nuget.exe ... $ mono nuget.exe restore monotest.sln -Source http://nuget.org/api/v2 MSBuild auto-detection: using msbuild version '4.0' from '/usr/lib/mono/4.5'. Restoring NuGet package MongoDB.Bson.2.2.3. Restoring NuGet package MongoDB.Driver.2.2.3. Restoring NuGet package MongoDB.Driver.Core.2.2.3. Restoring NuGet package Newtonsoft.Json.8.0.3. WARNING: Unable to find version '2.2.3' of package 'MongoDB.Bson'. /root/.local/share/NuGet/Cache: Package 'MongoDB.Bson.2.2.3' is not found on source '/root/.local/share/NuGet/Cache'. http://nuget.org/api/v2: Unable to load the service index for source http://nuget.org/api/v2. This method must be implemented in derived classes WARNING: Unable to find version '8.0.3' of package 'Newtonsoft.Json'. /root/.local/share/NuGet/Cache: Package 'Newtonsoft.Json.8.0.3' is not found on source '/root/.local/share/NuGet/Cache'. http://nuget.org/api/v2: Unable to load the service index for source http://nuget.org/api/v2. This method must be implemented in derived classes WARNING: Unable to find version '2.2.3' of package 'MongoDB.Driver'. /root/.local/share/NuGet/Cache: Package 'MongoDB.Driver.2.2.3' is not found on source '/root/.local/share/NuGet/Cache'. http://nuget.org/api/v2: Unable to load the service index for source http://nuget.org/api/v2. This method must be implemented in derived classes WARNING: Unable to find version '2.2.3' of package 'MongoDB.Driver.Core'. /root/.local/share/NuGet/Cache: Package 'MongoDB.Driver.Core.2.2.3' is not found on source '/root/.local/share/NuGet/Cache'. http://nuget.org/api/v2: Unable to load the service index for source http://nuget.org/api/v2. This method must be implemented in derived classes Errors in packages.config projects Unable to find version '2.2.3' of package 'MongoDB.Bson'. /root/.local/share/NuGet/Cache: Package 'MongoDB.Bson.2.2.3' is not found on source '/root/.local/share/NuGet/Cache'. http://nuget.org/api/v2: Unable to load the service index for source http://nuget.org/api/v2. This method must be implemented in derived classes Unable to find version '8.0.3' of package 'Newtonsoft.Json'. /root/.local/share/NuGet/Cache: Package 'Newtonsoft.Json.8.0.3' is not found on source '/root/.local/share/NuGet/Cache'. http://nuget.org/api/v2: Unable to load the service index for source http://nuget.org/api/v2. This method must be implemented in derived classes Unable to find version '2.2.3' of package 'MongoDB.Driver'. /root/.local/share/NuGet/Cache: Package 'MongoDB.Driver.2.2.3' is not found on source '/root/.local/share/NuGet/Cache'. http://nuget.org/api/v2: Unable to load the service index for source http://nuget.org/api/v2. This method must be implemented in derived classes Unable to find version '2.2.3' of package 'MongoDB.Driver.Core'. /root/.local/share/NuGet/Cache: Package 'MongoDB.Driver.Core.2.2.3' is not found on source '/root/.local/share/NuGet/Cache'. http://nuget.org/api/v2: Unable to load the service index for source http://nuget.org/api/v2. This method must be implemented in derived classes NuGet Config files used: /builds/renkun-ken/monotest/.nuget/NuGet.config /root/.config/NuGet/NuGet.Config Feeds used: /root/.local/share/NuGet/Cache http://nuget.org/api/v2 ERROR: Build failed: exit code 1 

参考文献:

https://docs.nuget.org/consume/package-restore

https://docs.nuget.org/consume/command-line-reference

在我的本地机器上,我可以使用完全相同的命令成功恢复来自在线源的所有软件包。

根据您使用的Ubuntu版本,将ca-certificates-mono添加到您的环境中可能会有所帮助:

 apt-get install -y --allow-unauthenticated ca-certificates-mono 

我用Stretch使用Docker, 这个线程修复了我的问题。