gitlab runner 不适用于特定项目

问题描述 投票:0回答:8

我注册了 11 个 GitLab runner 项目。除 1 个项目外,每个项目的运行者都运行良好。我第一次注册这个项目的运行者,它有效。 但是在我提交/推送一些更改后,出现错误并且作业失败。 我看到一些解决方案升级git版本解决了问题,但我不这么认为。因为除了这个项目之外,所有跑步者都工作正常。

服务器操作系统: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 https://gitlab.com/(...)
 * [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

第二次提交/拉取,然后

>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

编辑。这是我的 .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
gitlab-ci gitlab-ci-runner
8个回答
65
投票

有几个选项可以解决这个问题。问题是你的运行器上的 git 版本太旧。有时您无法在运行器上更新 git。

修复选项:

  1. 在运行器上升级到较新版本的 git。

  2. 在.gitlab-ci.yml中,使用git克隆选项:

variables:
  GIT_STRATEGY: clone
  1. 配置Gitlab,将项目的Git pipelines策略更改为“git clone”。

    3.1。在 Gitlab Web GUI 中,

    3.2。转到您的项目,

    3.3。然后:“设置 -> CI / CD -> 常规管道”。

    3.4。更改选项:

    • “管道的 Git 策略”到:“git 克隆”
    • “Git 浅克隆”至:0

52
投票

Centos 7 附带 git 版本 1.8.3.1 。此版本不支持 git fetch-pack 等命令。要解决此问题,您可以从 IUS 存储库更新服务器上的 git。 从第三方 IUS 存储库将 Centos 7 上的 git 更新到版本 2

$ git --version
git version 1.8.3.1
sudo yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm
sudo yum install git

5
投票

你可以在不升级 git 的情况下解决这个问题:

1.克隆策略

设置于

.gitlab-ci.yml

variables:
  GIT_STRATEGY: clone  

现在,您所做的每个更改都会触发重新克隆项目,从而避免需要有问题的

git fetch-pack
命令。

2.手动删除项目目录(不推荐)

从 gitlab-runner 服务器中手动删除构建目录,因此必须再次克隆它。
对于项目

testgroup/testproject
,运行:
小心 rm 命令!

rm -rf /home/gitlab-runner/builds/UwnzuxxL/0/testgroup/testproject  

请注意,在

builds
目录之后,您有一个与此示例不同的随机字符串。


5
投票

在 gitlab.com 上检查项目的 CI/CD 设置中的值。如果“gitshallowclone”中有任何值,请将其删除并保存更改。现在您的管道将按预期工作。


2
投票

我也遇到了类似的问题,我不得不更新 Git。 Centos 7 附带了 git-1.8.x,它对 gitlab-ci 有限制。

根据this指南升级您的git。


0
投票

这对我有用。

3.1。在 Gitlab Web GUI 中,

3.2。转到您的项目,

3.3。然后:“设置 -> CI / CD -> 常规管道”。

3.4。更改选项:

“Git 浅克隆”至:0


-1
投票

我做了一个新项目,最后,它运行良好。我不知道为什么另一个不起作用。如果出现和我一样的问题,不用太严重:新建一个gitlab项目即可。这对您的心理健康有好处。


-2
投票

rm -fr /home/gitlab-runner/(...) ,清理然后存在存储库

© www.soinside.com 2019 - 2024. All rights reserved.