GitLab CI/CD runner 执行失败
GitLab CI/CD runner fails to execute
我正在尝试使用 gitlab CI/CD。我正在使用 Ubuntu 服务器和 Spring 使用 Maven 启动。一切都很好,runner 开始管道作业,但它会收到很多模式错误“警告:无法删除目标/...”,即使我在 .yaml 管道脚本 gitlab-[=25= 中调用简单的 echo 'something' ].我发现如果我删除 /home/gitlab-runner/builds 那么一切都会开始正常工作,直到 /builds 再次生成。我究竟做错了什么?我已经尝试重新安装 runner,创建 gitlab-user,脚本的不同变体 ^ 在我手动删除 builds 文件夹之前没有任何效果。但是,gitlab ci/cd 上也有 js 前端,一切正常。请帮助我!
这是我在尝试让我的 java spring 启动 maven 管道工作时遇到的错误:
enter image description here
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
从您的 .gitlab-ci.yml
中删除 sudo
。
使用 sudo
将以 root 用户身份执行 mvn package
,因此所有生成的文件都以 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
我正在尝试使用 gitlab CI/CD。我正在使用 Ubuntu 服务器和 Spring 使用 Maven 启动。一切都很好,runner 开始管道作业,但它会收到很多模式错误“警告:无法删除目标/...”,即使我在 .yaml 管道脚本 gitlab-[=25= 中调用简单的 echo 'something' ].我发现如果我删除 /home/gitlab-runner/builds 那么一切都会开始正常工作,直到 /builds 再次生成。我究竟做错了什么?我已经尝试重新安装 runner,创建 gitlab-user,脚本的不同变体 ^ 在我手动删除 builds 文件夹之前没有任何效果。但是,gitlab ci/cd 上也有 js 前端,一切正常。请帮助我!
这是我在尝试让我的 java spring 启动 maven 管道工作时遇到的错误:
enter image description here
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
从您的 .gitlab-ci.yml
中删除 sudo
。
使用 sudo
将以 root 用户身份执行 mvn package
,因此所有生成的文件都以 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