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:从主服务器克隆的权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章