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 可以工作,但仅适用于一个 运行,那么情况相同。

我试过:

你永远不应该忘记用 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