我试图在本地测试我的.gitlab-ci.yml
文件中的.NET项目,但是我很难这样做。为了能够在这里提出一个有用的问题,我已经尝试为最小的repro创建说明,假设安装了Visual Studio 2017的完全最新的Windows 10 Pro机器。
c:\experiments\GlabTest
Install-Package NewtonSoft.Json
Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(1));
是Main函数中唯一的代码行.gitlab-ci.yml
文件旁边的 sln
文件:
variables:
RELEASE_FOLDER: 'GlabTest/bin/Release'
MSBUILD: 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSBuild.exe'
stages:
- build
build_job:
stage: build
script:
- 'nuget restore'
- '& "$env:MSBUILD" GlabTest.sln /p:Configuration=Release /t:Rebuild'
artifacts:
paths:
- '$env:RELEASE_FOLDER\'
.gitignore
:
.vs/
**/[Pp]ackages/*
[Bb]in/
[Oo]bj/
git init
和git add .
以及git commit -m "Weeee"
c:\gl\gitlab-runner-windows-amd64.exe
sln
文件夹& 'C:\gl\gitlab-runner-windows-amd64.exe' exec shell build_job
这将吐出各种错误:
Since gitLab Runner 10.0 this command is marked as DEPRECATED
"没有任何关于如何从exec
.../GlabTest/builds/0/project-0
)& was unexpected at this time.
" 各种输出问题,例如:最后一行是:
[31;1mERROR: Job failed: exit status 255
在我深入了解" DEPRECATED"命令我可能会退一步问:在Windows机器上使用Powershell构建本地迭代.gitlab-ci.yml
文件的推荐方法是什么?
答案 0 :(得分:1)
[为什么说DEPRECATED,我们应该使用什么呢?]
嗯,不是新方法,it seems exec
is being deprecated without a current replacement。
将repo克隆到自身的子文件夹中......
还没有任何线索如何解决这个问题。
&安培;此时出人意料
那是因为cmd
是Windows上的默认shell,所以你应该这样做:
& 'C:\gl\gitlab-runner-windows-amd64.exe' exec shell build_job --shell powershell
(注意最后的--shell powershell
。)
各种输出问题
不知道那里发生了什么。可能你的终端与gitlab-runner.exe尝试着色输出的方式不兼容?