笔者之前在linux docker环境下安装配置了gitlab及gitlab runner, 但碰到有些程序代码必须得在window环境下构建,这就需要另外安装配置gitlab runner 的window 版本,以下就是
笔者安装配置过程中总结的经验和踩过的坑。
版本 GitLab Community Edition 12.10.3
1. 准备一台window server环境,例如 window server 2016
2. 安装git Git - Downloading Package
3. 二进制包下载地址 (64位) : https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-windows-amd64.exe
4. 建立一个目录,例如: c:\data\gitlab\, 将二进制包拷贝到这个目录, 并将名称重命名为gitlab-runner
5. 用管理员身份打开一个命令行窗口,进入到二进制包目录
6. 运行命令注册runner
gitlab-runner.exe register
按照提示分别输入gitlab 服务器的地址和令牌,这个操作和linunx的是一样的,具体可参考我的另外一篇博文 如何安装配置gitlab-runner (区别: executor 使用 shell )
7. 以服务方式启动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 服务的界面里去设置,如图
8. 使用.gitlab-ci.yml文件测试自动构建
git config --system core.longpaths true
gitlab runner for window默认是用powershell作为命令解释器, 可以手动修改config.toml文件
将shell改成bash, 如下图
注意:要给当前用户的环境变量PATH增加bash的路径,并重启gitlab runner服务,否则会提示找不到bash
如果安装了git,一般会安装bash,路径通常在如下图目录
解决办法:在.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程序, 由于web程序会启动监听服务不会退出,这回导致这个gitlab pipeline的job一直挂着,没法退出。
解决办法:使用start命令
start //B "command"
示例
start //B "./start.sh"
参考:
Install GitLab Runner on Windows | GitLab
Git checkouts fail on Windows with "Filename too long error: unable to create file" errors | Bamboo | Atlassian Documentation
windows - Unicode (utf-8) with git-bash - Stack Overflow