Gitlab Runner Doesn`t Work on a Specific Project

I registered 11 projects of GitLab runner. Runners of each project work fine except 1 project. First time I registered runner of this project, it works. But after I commit/push some changes, an error occurs and failed job. I saw some solutions that upgrading the git version solved a problem, but I don't think so. Because all of the runners work fine except this project.

Server OS: CentOS 7
git: 1.8.3.1

First time registered runner
>Running with gitlab-runner 11.9.2 (...)
  on (...)
Using Shell executor...
Running on localhost.localdomain...
Initialized empty Git repository in /home/gitlab-runner/(...)/.git/
Clean repository
Fetching changes with git depth set to 50...
Created fresh repository.
From (...)
 * [new branch]      master     -> origin/master
Checking out (...) as master...
Skipping Git submodules setup
$ echo "> gitlab-ci started"
> gitlab-ci started
$ cd /home/(..)
$ echo "> git pull started"
> git pull started
$ git pull
remote: Total 0 (delta 0), reused 0 (delta 0)
Already up-to-date.
Job succeeded

Second commit/pull, then

>Running with gitlab-runner 11.9.2 (...)
  on (...)
Using Shell executor...
Running on localhost.localdomain...
Reinitialized existing Git repository in /home/gitlab-runner/(...)/.git/
Clean repository
Fetching changes with git depth set to 50...
fatal: remote origin already exists.
fatal: git fetch-pack: expected shallow list
ERROR: Job failed: exit status 1

edit. here is my .gitlab-ci.yml

stages:
- deploy

deploy_to_master:
  stage: deploy

  script:
  - echo "> gitlab-ci started"
  - cd /home/www/dir
  - echo "> git pull started"
  - git pull
  - echo "> permission set"
  - chmod 707 -R ./data/
  - chmod 707 -R ./plugin/nice/
  - chmod 707 ./favicon.ico
  - echo "> server reload(=httpd -k graceful)"
  - systemctl reload httpd

  only:
  - master

  tags:
  - tags
5

8 Answers

There are a few options to fix this. The problem is the version of git on your runner is too old. And sometimes you can't update git on the runner.

Options to fix:

  1. Upgrade to a newer version of git on the runner.

  2. In .gitlab-ci.yml, use the option to git clone:

variables:
  GIT_STRATEGY: clone
  1. Configure Gitlab, change Git strategy for pipelines of the project to "git clone".

    3.1. In the Gitlab web gui,

    3.2. go to your project,

    3.3. then: "Settings -> CI / CD -> General pipelines".

    3.4. Change the options for:

    • "Git strategy for pipelines" to: "git clone"
    • "Git shallow clone" to: 0
4

Centos 7 ships with git version 1.8.3.1 . This version doesn't support commands like git fetch-pack . To fix this problem, you could update git on your server from the IUS repository. update git on Centos 7 to version 2 from third-party IUS repo

$ git --version
git version 1.8.3.1
sudo yum -y install 
sudo yum install git
1

You can go around this problem without upgrading git at all:

1. Clone Strategy

Set in .gitlab-ci.yml:

variables:
  GIT_STRATEGY: clone  

Now every change you make will trigger re-cloning the project, avoiding the need of the problematic git fetch-pack command.

Chloe Bennett

Chloe Bennett

Culture, Media & Entertainment Columnist

Chloe Bennett explores the intersection of pop culture, streaming entertainment, digital trends, and contemporary lifestyle. Her weekly commentary reaches thousands of culture enthusiasts.