Gitlab-runner 构建失败问题排查:

问题起因:

基于gitlab ci 进行自动化构建,当发起 merge_requests请求出发构建时job运行报错,官方推荐升级gitlab-runner 版本,版本升级后运行构建依然货报错,报错内容如下:

Running with gitlab-runner 11.10.1 (1f513601)
 on jp.ptmind.com 0ea06a67
Using Shell executor...
Running on jp.ptmind.com...
Reinitialized existing Git repository in /data/builds/0ea06a67/0/。。。backend/.git/
Fetching changes with git depth set to 10...
fatal: git fetch-pack: expected shallow list
fatal: The remote end hung up unexpectedly
ERROR: Job failed: exit status 1

排查解决:

1:升级runner 版本至最新版本,升级期间清理runner 构建目录旧文件目录;

以上配置修改后,首次出发构建可以成功,再次执行merge_requests 再次触发构建,还是会报错,问题未解决;

build:common:
  stage: build
  tags:
    - python3
  script:
    - cp src/requirements_shared.txt src/common/requirements.txt
。。。。。。。。。。。
  only:
    refs:
      - develop
      - staging
      - master
      - merge_requests
    changes:

      - src/common/**/*

2:怀疑ci配置逻辑问题,拆解脚本,将merge_requests 与监听分支分开;

build:common:
  stage: build
  tags:
    - python3
  script:
    - cp src/requirements_shared.txt src/common/requirements.txt
。。。。。。。。。。。
  only:
  - merge_requests
    changes:
      - src/common/**/*

再次执行构建,构建构建变成偶尔会失败,点击重试能成功 。。。。。

3:查询相关资料有人反馈,说git版本低会导致用新的git特性不稳定。下面进行git 版本升级;

1.1 先上删除runner的旧的git版本;

注意此时会把gitlab-runner 也删掉,建议现在gitlab 管理平台删除runner,版本升级后在重新添加runner。 升级步骤如下:

删除旧版本git
yum remove git -y

安装3方yum 源,centos7 基础仓库,提供的 git 版本只有到 1.8.3,沒办法使用 git 2 的一些新功能

yum install https://centos7.iuscommunity.org/ius-release.rpm

安装新版本git
yum install git2u -y

验证版本
git --version

重新安装runner
yum install gitlab-runner -y

修改改runner配置:

vi /etc/systemd/system/gitlab-runner.service

ExecStart=/usr/lib/gitlab-runner/gitlab-runner "run" "--working-directory" "/home/gitlab-runner" "--config" "/etc/gitlab-runner/config.toml" "--service" "gitlab-runner" "--syslog" "--user" "gitlab-runner"

改为:

ExecStart=/usr/lib/gitlab-runner/gitlab-runner "run" "--working-directory" "/data/gitlab-runner" "--config" "/etc/gitlab-runner/config.toml" "--service" "gitlab-runner" "--syslog" "--user" "root"
重新注册runner
gitlab-runner register

启动runner服务
systemctl daemon-reload
systemctl start gitlab-runner

###参考资料:

https://gitlab.com/gitlab-org/gitlab-ce/issues/60466