要愉快的使用gitlab,gitlab runner肯定是比不可少的,这篇文章就是记录在windows上安装gitlab runner并进行注册的操作。本文使用的gitlab执行器为powershell
安装git服务
windows并没有默认的git程序,而gitlab runner需要git程序来进行操作,所以说我们先要在windows机器上面安装git程序
安装完后建议重启一下电脑(不是必须的)
安装gitlab runner
首先前往gitlab的官网下载gitlab 的windows版本的exe包,点此前往下载64位的。
下载完以后,将该程序放在一个目录(建议文件路径中没有中文以免后续出现没必要的错误)。我是放在c:/gitlab-runner中了。
然后再你的gitlab实例之中前往管理中心>CI/CD>runner>新建runner
然后在新建的界面选中windows,然后记得填写runner的标签(必须填写不然无法创建),点击创建
然后输出了一串绑定命令
这边建议将这个命令排个版再使用。如下
.\gitlab-runner.exe register -url http://example.com -token xxxxxxxx
还要注意一下,你下载下来的gitlab runner文件名可能不叫作gitlab-runner(而是gitlab-runner-windows-amd64.exe或其他的),你只需要将其改为gitlab-runner.exe,记得命令一定要在gitlab-runner.exe的相对路径来执行这个命令(即gitlab-runner.exe所在的目录)
执行命令的时候先会问你执行要连接的网址,我们直接回车即可,然后接下来就是设定gitlab-runner的执行器了,其会让我们选择,我们这边选择shell即可,接下来保存。(这项操作有风险!使用shell执行器的时候一定要保证该runner只运行或处理受信任的项目的流水线,不然可能导致运行runner的机器被植入恶意的代码,点此了解更多 )
然后就是shell执行器的问题,因为gitlab-runner的默认shellwindows上面不存再,所以我们需要手动的将其修改为powershell,再创建完gitlab-runner以后,其执行目录旁边会多出几个文件,如下图
我们编辑其中的config.toml文件,(用记事本即可),
将其中的shell = “xxx”改为shell = “powershell”即可。
接下来保存,然后接下来安装gitlab-runner作为windows服务,为了达成这一点,我们需要执行以下的命令
gitlab-runner.exe install
安装完之后,我们需要启动gitlab-runner,执行以下的命令
gitlab-runner.exe start
然后前往gitlab的后台查看是否gitlab runner已经连接上了。
问题处理
下面是我运行gitlab-runner windows版本遇到的问题
FullyQualifiedErrorId : CommandNotFoundException
报错详情截图如下
原因:未安装git 服务,按照上文安装git服务之后重启gitlab runner。
CategoryInfo : InvalidArgument: (:)
报错详情如下图
原因:这个是执行的语法问题,检查gitlab-ci.yml,因为我们这个runner是在windows上的,所以请注意不要由linux的命令。如需要执行linux命令请使用linux的runner
Uploading artifacts as "archive" to coordinator... error
报错详情如下图
原因:网络连接有问题导致runner的产物上传不到gitlab。
当然,还有一种情况,当你使用了宝塔面板反向代理gitlab的时候,而又用了宝塔面板中的“NGNIX防火墙免费版”并开启了Post过滤也有可能出现这种情况,这是因为gitlab runner上传的api触发了防火墙的判定机制,有三种方法解决掉这个问题,
1:关闭post 过滤(不推荐)
2:将gitlab runner所在机器的ip加入白名单
3:将以下的url加入白名单
/api/v4/jobs #这行用于解决runner上传被拒绝
/api/graphql #这行用于解决gitlab在线预览无法使用
感谢阅读,谢谢。