我正在尝试使用gitlab CI构建和测试.NET项目 .
我已经下载并安装了最新版本的GitLab运行器,并使用我们的gitlab实例成功注册了它 . 我创建了以下 .gitlab-ci.yaml
文件:
variables:
Solution: Performance-Validation-Tool.sln
stages:
- build
- test
# - deploy
build:
stage: build
script:
- echo "Restoring NuGet packages..."
- 'C:/nuget/NuGet.exe restore'
- echo building...
- 'msbuild.exe "%Solution%"'
except:
- tags
test:
stage: test
script:
- echo testing...
- 'msbuild.exe "%Solution%"'
- dir /s /b *.Tests.dll | findstr /r Tests\\*\\bin\\ > testcontainers.txt
- 'for /f %%f in (testcontainers.txt) do mstest.exe /testcontainer:"%%f"'
except:
- tags
重要的是构建动作 .
如果我从Gitlab本身运行构建,我会收到所有块包的以下错误:
WARNING: Unable to find version '3.5.0' of package 'NUnit.Console'.
C:\Windows\system32\config\systemprofile\AppData\Local\NuGet\Cache: Package 'NUnit.Console.3.5.0' is not found on source 'C:\Windows\system32\config\systemprofile\AppData\Local\NuGet\Cache'.
https://api.nuget.org/v3/index.json: Unable to load the service index for source https://api.nuget.org/v3/index.json.
An error occurred while sending the request.
The remote name could not be resolved: 'api.nuget.org'
但是,如果我运行以下命令LOCALLY:
C:\GitlabRunner\gitlab-ci-multi-runner-windows-amd64.exe exec shell build
一切都很完美......
我为gitlab runner和nugget.exe创建了防火墙例外(我下载并安装了最新版本的nugget.exe)
gitlab runner服务以我用来运行manual exec命令的帐户登录 .
我对gitlab触发的构建和手动exec命令使用了相同的nugget.exe .
我们是公司代理的后面,没有HTTP_PROXY环境变量集 . 代理在“Internet选项”中配置 . 我确实尝试为nugget.exe定义HTTP_PROXY设置,但后来在读取nugget.exe默认使用系统代理后将其删除 .
在此先感谢您的帮助!
1 回答
我碰巧看了服务列表中的服务并注意到虽然我明确指定了该服务的用户,但它是使用“本地系统”帐户创建的,缺少代理设置,我假设 . 该服务已得到纠正,现在可以正确构建 .