Gitlab-Runner:从主服务器克隆的权限被拒绝

Posted

技术标签:

【中文标题】Gitlab-Runner:从主服务器克隆的权限被拒绝【英文标题】:Gitlab-Runner: Permission denied on cloning from master 【发布时间】:2020-09-13 00:22:45 【问题描述】:

我一直在寻找一种在我的项目中实施 CI/CD 管道的方法。我决定使用带有 gitlab-runner 技术的 Gitlab。我尝试通过 docker 容器使用它,但经过 100 多次尝试后,我决定将它安装在机器上。

我一步步跟着官方Gitlab guide一切正常;我运行寄存器,正确填写所有字段,然后继续编写 .gitlab-ci.yml:

image: docker:latest

services:
- docker:18.09.9-dind

stages:
  - deploy

step-deploy-prod:
  stage: deploy
  only:
    - master
  script:
    - docker-compose up -d --build
  when: always
  environment: master

正如你在查看 yml 文件时可以想象的那样,当在 master 上执行一些操作时,管道启动并执行 docker-compose up --build -d (有问题的项目是一个带有 SQL 的 php 应用程序通过 compose 部署的数据库)。

首次运行: 绝对完美;管道启动,构建正确执行并正确上线

第二次及之后的 140 次运行: 这就是噩梦。由于同样的原因,超过 140 个构建失败;克隆存储库时,运行器似乎没有对其主目录(/home/gitlab-runner/builds/...)的写入权限。

如果我手动删除 builds/ 运行器中的嵌套文件夹,但仅运行一次,则情况相同。

我尝试过:

在其主目录上运行 chown gitlab-runner:gitlab-runner(也作为 TOML 文件中的 pre_clone_script); 将 gitlab-runner 添加到 sudoers 组; 我将 gitlab-runner 添加到 docker 组; 一系列文件权限操作,然后chmod 777,chgrp用 跑步者团体等。

【问题讨论】:

1.你是如何安装 gitlab 运行器的?请粘贴命令 2.在第一个作业之前粘贴路径的权限我认为您需要重新安装运行器 【参考方案1】:

您永远不要忘记使用after_script 部分停止您的容器。

但在您的情况下,您可以在工作之前使用GIT_STRATEGY 清除存储库。

  variables: 
    GIT_STRATEGY: none 

您的 yml 文件与此修复

image: docker:latest

services:
- docker:18.09.9-dind

stages:
  - deploy

step-deploy-prod:
  stage: deploy
  only:
    - master
  script:
    - docker-compose up -d --build
  when: always
  environment: master
  variables: 
    GIT_STRATEGY: none 

【讨论】:

以上是关于Gitlab-Runner:从主服务器克隆的权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

Gitlab-runner 未能删除权限被拒绝

gitlab-runner的无权限问题

在 htdocs 中克隆项目时权限被拒绝

Git克隆私人仓库,权限被拒绝

安装gitlab-runner

在我的 Raspberry Pi 上从 Gitlab.com 克隆 Repo 时权限被拒绝(公钥)