1

我正在尝试使用 gitlab CI/CD。我正在使用 Ubuntu 服务器和带有 Maven 的 Spring Boot。一切都很好,跑步者开始管道作业,但它得到很多错误模式“警告:无法删除目标/......”即使我在 .yaml 管道脚本 gitlab-ci.yaml 中调用简单的 echo 'something'。我发现如果我删除 /home/gitlab-runner/builds 那么一切都开始正常工作,直到 /builds 再次生成。我究竟做错了什么?我已经尝试重新安装运行程序,制作 gitlab-user,脚本的不同变体^ 在我手动删除 builds 文件夹之前没有任何效果。但是,还有一个 js 前端,它也在 gitlab ci/cd 上,并且在那里一切正常。请帮帮我!

这是我试图让我的 java spring boot maven 管道工作的错误:

在此处输入图像描述

gitlab-ci.yaml 代码在这里:

stages:
    - test
    - package
    - deploy
    # - sonar

test:
  stage: test
  only:
    - master
    - merge_requests
  except:
    - tags
  script:
    - echo 'test are running i swear!!!!!!'
    - sudo mvn clean
    - sudo systemctl stop socnet.service
  
package:
  stage: package
  only:
    - master
  except:
    - tags
  script:
    - sudo mvn package -Dmaven.test.skip=true
      
deploy_to_server:
  stage: deploy
  only:
    - master
  except:
    - tags
  script:
    - sudo systemctl restart socnet.service
4

1 回答 1

0

sudo您的.gitlab-ci.yml.

使用sudo那里将mvn package作为 root 用户执行,因此所有生成的文件都以 root 作为所有者。

当 gitlab-runner 拿起一个工作并继续清理以前生成的文件时,它仍然是无特权的,因此无法删除 root 拥有的文件。

您可能希望将以下变量添加到.gitlab-ci.yml文件中,以便将 Maven 依赖项缓存的位置更改为项目目录内:

variables:
  MAVEN_OPTS: "-Dhttps.protocols=TLSv1.2 -Dmaven.repo.local=$CI_PROJECT_DIR/.m2/repository -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true"
  MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version -DinstallAtEnd=true -DdeployAtEnd=true"

https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Maven.gitlab-ci.yml

于 2021-07-02T07:15:40.300 回答