-
准备一台window server环境,例如 window server 2016
-
安装git git-scm.com/download/wi…
-
二进制包下载地址 (64位) : gitlab-runner-downloads.s3.amazonaws.com/latest/bina…
-
建立一个目录,例如: c:\data\gitlab, 将二进制包拷贝到这个目录, 并将名称重命名为gitlab-runner
-
用管理员身份打开一个命令行窗口,进入到二进制包目录
-
运行命令注册runner
运行命令注册runner
gitlab-runner.exe register
按照提示分别输入gitlab 服务器的地址和令牌,这个操作和linunx的是一样的,具体可参考我的另外一篇博文 如何安装配置gitlab-runner (区别: executor 使用 shell )
- 以服务方式启动gitlab runner
使用内置系统账户启动
gitlab-runner.exe install
gitlab-runner.exe start
使用当前用户账号启动
gitlab-runner.exe install --user ENTER-YOUR-USERNAME --password ENTER-YOUR-PASSWORD
gitlab-runner.exe start
笔者推荐用后者,这样runner启动所采用的环境变量和当前用户是一致的,这样当在gitlab下构建出现问题时,可以直接用当前账号在window server里测试排查,比较方便,
如果是用的前者,你也可以后面直接在window 服务的界面里去设置,如图
- 使用.gitlab-ci.yml文件测试自动构建
碰到的问题:
- 在构建前端项目出现错误:Git 签出代码失败,提示 Filename too long
git config --system core.longpaths true
- 在.gitlab-ci.yml的脚本里bash语法失败 gitlab runner for window默认是用powershell作为命令解释器, 可以手动修改config.toml文件
将shell改成bash, 如下图
注意:要给当前用户的环境变量PATH增加bash的路径,并重启gitlab runner服务,否则会提示找不到bash
如果安装了git,一般会安装bash,路径通常在如下图目录
- 在gitlab pipeline输出页面出现中文乱码,如下图
解决办法:在.gitlab-ci.yml脚本里加上
before_script:
- chcp.com 65001
示例: dotnet_build: stage: build before_script: - chcp.com 65001 script: - dotnet build "web/web.csproj" -c Release
- 在构建的job里如果执行启动web服务不会退出 如果在job里直接执行web程序, 由于web程序会启动监听服务不会退出,这回导致这个gitlab pipeline的job一直挂着,没法退出。
解决办法:使用start命令
start //B "command"
示例
start //B "./start.sh"