簡體   English   中英

Gitlab-Runner:從主服務器克隆的權限被拒絕

[英]Gitlab-Runner: Permission denied on cloning from master

我正在尋找一種在我的項目中實現 CI/CD 管道的方法。 我決定使用 Gitlab 及其 gitlab-runner 技術。 我嘗試通過 docker 容器使用它,但經過 100 多次嘗試,我決定將它安裝在機器上。

我按照官方Gitlab 指南一步一步來。 一切正常; 我運行寄存器,正確填寫所有字段,然后我在 go 上編寫.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 應用程序,其中 Z9778840A01004B30C982ZA 數據庫通過部署 acompose )。

第一次運行:絕對完美; 管道啟動,構建正確執行並正確上線

第二次和之后的 140 次跑步:那是噩夢。 由於同樣的原因,超過 140 個構建失敗; 克隆存儲庫時,運行者似乎沒有對他的主目錄(/home/gitlab-runner/builds/...)的寫權限。

在此處輸入圖像描述

如果我手動刪除 builds/ runner 中的嵌套文件夾,但只運行一次,那么情況相同。

我嘗試過了:

  • 在其主目錄上運行 chown gitlab-runner:gitlab-runner(也作為 TOML 文件中的 pre_clone_script );
  • 將 gitlab-runner 添加到 sudoers 組;
  • 我將 gitlab-runner 添加到 docker 組;
  • 一系列文件權限操作,然后 chmod 777,chgrp 與 runner 組等等。

你總是不應該忘記用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 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM