1. 程式人生 > >Gitlab-runner 構建失敗問題排查

Gitlab-runner 構建失敗問題排查

重新 systemctl The merge system req 配置 sha rem

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

Gitlab-runner 構建失敗問題排查