Gitlab CI/CD runner:找不到mvn命令

9
我的gitlab-runner服务器上已经成功安装了Maven。当我在我的repo上直接执行mvn clean时,它能够正常工作;但是当我使用Gitlab UI运行管道时,就会出现以下错误信息:

bash: line 60: mvn: command not found

ERROR: Job failed: exit status 1

我注意到我尝试通过在.gitlab-ci.yml文件中添加before_script部分来解决问题:

before_script:    
- export MAVEN_HOME=/usr/local/apache-maven

我还添加了以下这行代码:


environment = ["MAVEN_HOME=/usr/local/apache-maven"]

config.toml文件中。

问题仍然存在,我的执行程序是:shell

有任何建议!

7个回答

4
我使用以下解决方法成功修复了问题:
  script:
    - $MAVEN_HOME/bin/mvn clean

4

只需添加Maven Docker镜像,将以下行添加为第一行:

image: maven:latest or image: maven:3-jdk-10 or image: maven:3-jdk-9

参考:https://docs.gitlab.com/ee/ci/examples/artifactory_and_gitlab/

这个示例演示了如何在GitLab CI中将Artifactory用作构建工件的存储库。 Artifactory是一个通用的软件包管理器,可以与GitLab集成以提供完整的DevOps解决方案。使用Artifactory,您可以轻松地管理构建工件并使其可重复使用,从而提高团队的效率和协作性。


1
有一种更简单的方法:
~/.bash_profile中进行更改,而不是在~/.bashrc中。
根据此文档:

.bashrc 更常用于非登录shell

此文档指出:

对于某些执行程序,runner会传递--login标志,如上所示,也会加载shell配置文件。

因此,它不应该是~/.bashrc,您也可以尝试~/.profile,它可以保存相同的配置,然后也可被其他shell访问。

在我的场景中,我会执行以下操作:

1. 设置 gitlab-runner 用户的密码。

passwd gitlab-runner

2. 登录 gitlab-runner

su - gitlab-runner

3. 修改 .bash_profile 文件。


1

如果有人遇到类似的问题,建议重新启动GitLab Runner ".\gitlab-runner.exe restart"。特别是在调整环境变量后。


0
将Maven添加到PATH:
$ export M2_HOME=/usr/local/apache-maven/apache-maven-3.3.9

$ export M2=$M2_HOME/bin

$ export PATH=$M2:$PATH 

您可以将这些命令包含在$HOME/.bashrc文件中。


0

你也可以在 .gitlab-ci.yml 文件中按照以下方式使用

before_script:
  - export PATH=$PATH:/opt/apache-maven-3.8.1/bin

0

希望你已经解决了你的问题。当我在我的服务器上构建我的ci时,我遇到了同样的问题。

我使用shell作为我的Runner执行器。以下是找出解决方法的步骤。

1 检查Runner服务器上的用户

如果你已经成功在Runner服务器上安装了maven,也许它只对root用户成功了,你可以检查ci进程的真实用户。

job1:
  stage: test
  script:  whoami

在我的情况下,它会打印gitlab-runner而不是root

2 su切换到真实用户,再次检查mvn

这一次,它会像Gitlab ci UI一样打印错误。

3 为真实用户安装maven。再次运行流水线。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接