【问题标题】:Jenkins pipeline for react could not find 'java' executable in JAVA_HOME or PATH用于反应的 Jenkins 管道在 JAVA_HOME 或 PATH 中找不到“java”可执行文件
【发布时间】:2019-12-17 15:44:49
【问题描述】:

我正在运行一个詹金斯管道。在最后一步,我的声纳分析出现错误:

var/jenkins_home/tools/hudson.plugins.sonar.SonarRunnerInstallation/SonarQube_Scanner/bin/sonar-scanner
Could not find 'java' executable in JAVA_HOME or PATH.

我在我的 centos 7 中设置了我的 JAVA_HOME,当我运行 echo $JAVA_HOME 时,我得到了:

 echo $JAVA_HOME
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-0.el7_6.x86_64

文件 sonar-scanner 中出现错误:

if [ -n "$JAVA_HOME" ]
then
  java_cmd="$JAVA_HOME/bin/java"
else
  java_cmd="$(which java)"
fi

java_cmd="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-0.el7_6.x86_64/jre/bin/java"
echo $java_cmd
#export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-0.el7_6.x86_64
if [ -z "$java_cmd" -o ! -x "$java_cmd" ] ; then
  echo "Could not find 'java' executable in JAVA_HOME or PATH."
  exit 1
fi

我尝试了很多解决方案,但仍然遇到同样的错误,请问我可以纠正它吗?

我的詹金斯管道脚本:

pipeline {
    agent {
        docker {
            image 'node:6-alpine'
            args '-v /home/nginx/console:/home -p 3000:3000'

        }
    }
        environment {
        CI = 'true' 
    }

    stages {
        stage('Install') { 
            steps {
                sh 'npm install' 
            }
        }
        stage('Test') { 
            steps {
                sh 'npm test' 
            }
        }

        stage('Build') { 
            steps {
                sh 'npm run build' 
            }
        }

        stage('Deploy') { 
            steps {
                sh 'cp -R dist/* /home' 
            }
        }

        stage('Sonarqube analysis') {

            steps {


                script {
                    scannerHome = tool 'SonarQube Scanner';

                }
                withSonarQubeEnv('sonar') {
                        sh "${scannerHome}/bin/sonar-scanner" 
                }

            }
        }


    }
}

【问题讨论】:

  • export PATH="$PATH:$JAVA_HOME/bin"
  • @ElliottFrisch 路径设置正确。这就是为什么当我运行 echo $JAVA_HOME 时,我得到了正确的路径。但是为什么声纳找不到这条路呢?
  • 但是它是导出的吗? 事实是你的电脑不同意你。
  • 你指定全局代理到docker镜像'node:6-alpine',所有阶段都将在从这个镜像启动的容器中执行,除非你在阶段级别指定代理覆盖全局代理。如果 docker 镜像未设置 JAVA,则该错误是预期的。
  • 你可以为stage('Sonarqube analysis')指定一个java docker镜像为agent,jenkins会将工作工作区挂载到容器中,因此你的工作工作区的源代码可以在声纳扫描时在容器中访问。无需将声纳扫描分离到另一个管道作业中。或者你可以使用tool <jdk installation> 来提供java,如果你已经在 J​​enkins Admin 中配置了它,而不使用 java docker 镜像。

标签: java reactjs jenkins sonarqube


【解决方案1】:

根据 yong 的建议,我创建了这个 jenkinsfile 并成功推送 sonar :

pipeline {
    agent none
    environment {
        CI = 'true' 
    }

    stages {
        stage('Install') { 

            agent { docker 'node:6-alpine'     }
            steps {
                sh 'npm install' 
            }
        }
        stage('Test') { 
            agent { docker 'node:6-alpine'      }
            steps {

                sh 'npm test' 
            }
        }

        stage('Build') { 
            agent { docker 'node:6-alpine'      }
            steps {

                sh 'npm run build' 
            }
        }

        stage('Deploy') { 
            agent { docker 'node:6-alpine'     }
            steps {

                sshPublisher(publishers: [sshPublisherDesc(configName: 'vm-int', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'sudo cp -R /var/jenkins_home/workspace/myapp/dist/* /home/nginx/console/', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/home/nginx/console/', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '/var/jenkins_home/workspace/myapp/dist/*')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
            }
        }

        stage('Sonarqube analysis') {
           agent {     docker   'maven:3-alpine'   }

            steps {

                script {
                    scannerHome = tool 'SonarQube Scanner';

                }
                withSonarQubeEnv('sonar') {
                        sh "${scannerHome}/bin/sonar-scanner" 
                }

            }
        }


    }
}

【讨论】:

    猜你喜欢
    • 2021-03-11
    • 2022-10-17
    • 1970-01-01
    • 2017-04-28
    • 1970-01-01
    • 1970-01-01
    • 2019-01-16
    • 2015-01-25
    • 2015-05-19
    相关资源
    最近更新 更多