【问题标题】:Gitlab CI/CD runner : mvn command not foundGitlab CI/CD 运行器:找不到 mvn 命令
【发布时间】:2019-03-03 07:07:20
【问题描述】:

Maven 已安装在我的 gitlab-runner 服务器上。当直接在我的 repo 上执行 mvn clean 时,它可以工作,当使用 Gitlab UI 运行我的管道时出现此错误:

bash:第 60 行:mvn:找不到命令

错误:作业失败:退出状态 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

任何建议!

【问题讨论】:

    标签: maven gitlab gitlab-ci gitlab-ci-runner


    【解决方案1】:

    只需添加 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/

    【讨论】:

      【解决方案2】:

      我设法使用此解决方法解决了问题:

        script:
          - $MAVEN_HOME/bin/mvn clean
      

      【讨论】:

        【解决方案3】:

        对于遇到类似问题的任何人,重新启动 gitlab 运行器“.\gitlab-runner.exe restart”可能是个好主意。尤其是在摆弄环境变量之后。

        【讨论】:

          【解决方案4】:

          有一个更简单的方法:
          更改 ~/.bash_profile 而不是 ~/.bashrc


          根据this document

          .bashrc 更常见的是使用非登录 shell

          This document说:

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

          所以应该不是~/.bashrc,你也可以试试~/.profile哪个 It can hold the same configurations, which are then also accessible by other shells


          在我的场景中,我做了以下事情:

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

          passwd gitlab-runner

          2。登录gitlab-runner

          su - gitlab-runner

          3。在.bash_profile 中进行更改

          【讨论】:

            【解决方案5】:

            将 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 中包含这些命令

            【讨论】:

              【解决方案6】:

              我希望你已经弄清楚了你的问题。我在服务器上构建 ci 时遇到了同样的问题。

              我使用 shell 作为我的 Runner 的执行器。 以下是要弄清楚的步骤。

              1 检查运行器服务器上的用户

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

              job1:
                stage: test
                script:  whoami
              

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

              2 su 真实用户,再次查看 mvn

              此时,它会像 Gitlab ci UI 一样打印错误。

              3 为真实用户安装 maven。再次运行管道。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2022-08-14
                • 2020-10-27
                • 2018-12-14
                • 2021-11-28
                • 2019-05-13
                • 1970-01-01
                • 2022-01-15
                • 2020-06-28
                相关资源
                最近更新 更多