introduction
windows
下的CI
Runner
部署,windows
CI
RUNNER
坑比较多,谨慎使用
一.下载
https
://gitlab-runner
-downloads
.s3
.amazonaws
.com
/latest
/binaries
/gitlab-runner
-windows-amd64
.exe 下载runner-windows
二 安装
安装 .`gitlab-runner
install --
user 用户名 --
password` 密码
然后我们就可以看到,我们多了一个名为gitlab-runner的服务,如下图
三.注册
注册runner,首先要去项目拿到token,如下图
然后拿到我们的ca
证书,http
://certs
.gitlab.info/ca-chain.cer 放到如下certs目录下面。
最后执行命令,注意一定要指定这些参数,不然后续会有很多奇怪的报错等着你。
.`gitlab-runner
register --
non-interactive --
registration-token
VakRXJhSqAC7hizMqsvr --
url
https://
gitlab.
bt/ --
tls-ca-
file E:\
soft\
gitLab\
certs`\ca-chain.cer –name test-windows –tag-list test –executor “shell”
四.使用
使用runner
,编辑.gitlab-ci
.yml,含义是mater分支下的提交会指定到tag为test的runner下执行,也就是我们刚加的runner,输出hello。然后提交。
这里直接报错了,如下图
我们改下config的执行方式然后重启runner。shell = “pwsh” ==> shell = “powershell”,最后成功了。
五.注意事项
(1) shell
选择要对,不然报错。
https
://docs
.gitlab
.com
/runner
/shells
/
(2) job
长期卡死。
由于我的windows
runner
会启动一个长进程(持续存在的),但是runner
每收到一个job
,运行相应的命令,必须要等到该命令完成,以向上汇报运行结果,如果命令里启动了其它进程,也就必须等那些进程结束,一个长运行进程,自然就会卡住整个pipeline
了。对于一些常用分离子进程的招数,如前面加nohup,后面加&,都不管用,其原因在于,runner监视自己启动的进程是用进程组的方式,即使脱离父子关系,组仍然存在。最终将我的长进程作为一个服务形式存在,彻底脱离runner进程组。