Gitlab-Runner:从主人克隆的权限被拒绝
Gitlab-Runner: Permission denied on cloning from master
我一直在寻找一种在我的项目中实现 CI/CD 管道的方法。我决定使用 Gitlab 及其 gitlab-运行ner 技术。我尝试通过 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(有问题的项目是PHP 应用程序,其中包含通过组合部署的 SQL 数据库。
第一个运行:
绝对完美;管道启动,构建正确执行并正确在线
第二个及后续 140 运行s:
那就是噩梦。由于同样的原因,超过 140 个构建失败;克隆存储库时,运行ner 似乎没有对其主目录 (/home/gitlab-runner/builds/...) 的写入权限。
如果我手动删除 builds/ 中的嵌套文件夹,运行ner 可以工作,但仅适用于一个 运行,那么情况相同。
我试过:
- 运行 chown gitlab-运行ner:gitlab-运行ner 在其主目录(也作为
pre_clone_script 在 TOML 文件中);
- 将 gitlab-运行ner 添加到 sudoers 组;
- 我添加了gitlab-运行ner到docker组;
- 一系列的文件权限操作,然后chmod 777,chgrp with
运行ner 组等等。
你永远不应该忘记用 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
我一直在寻找一种在我的项目中实现 CI/CD 管道的方法。我决定使用 Gitlab 及其 gitlab-运行ner 技术。我尝试通过 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(有问题的项目是PHP 应用程序,其中包含通过组合部署的 SQL 数据库。
第一个运行: 绝对完美;管道启动,构建正确执行并正确在线
第二个及后续 140 运行s: 那就是噩梦。由于同样的原因,超过 140 个构建失败;克隆存储库时,运行ner 似乎没有对其主目录 (/home/gitlab-runner/builds/...) 的写入权限。
如果我手动删除 builds/ 中的嵌套文件夹,运行ner 可以工作,但仅适用于一个 运行,那么情况相同。
我试过:
- 运行 chown gitlab-运行ner:gitlab-运行ner 在其主目录(也作为 pre_clone_script 在 TOML 文件中);
- 将 gitlab-运行ner 添加到 sudoers 组;
- 我添加了gitlab-运行ner到docker组;
- 一系列的文件权限操作,然后chmod 777,chgrp with 运行ner 组等等。
你永远不应该忘记用 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