java - 用于反应的 Jenkins 管道在 JAVA_HOME 或 PATH 中找不到“java”可执行文件
问题描述
我正在运行一个詹金斯管道。在最后一步,我的声纳分析引发了一个错误:
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"
}
}
}
}
}
解决方案
根据 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"
}
}
}
}
}
推荐阅读
- wordpress - 基于 Alexa Skill 的 WordPress 语音识别
- php - 如何在浏览器 url 中禁止直接访问网站目录,但在网站内部请求时允许?
- three.js - Cannon.js - 如何防止对象在更新时剪裁“地板”
- .net - HTTP 错误 405.0 - 方法不允许 - 网址重写不起作用
- python - 如何批量训练模型
- python - Python - 根据输入更改 if 语句中的条件数
- java - 如何正确检查单选按钮
- matlab - Matlab中的Uicalendar在部署中不起作用
- php - 检查客户是否在 Woocommerce 中为产品撰写评论
- javascript - 使用 ReactJS 分页