pipeline中为什么输出java -version时还是用的系统默认的,而不是pipeline中指定的java?

pipeline {
agent any

tools {
    jdk 'jdk-17'
}

environment {
    SONAR_PROJECT_KEY = 'sonar-analysis'
    SONAR_SCANNER_HOME = tool 'SonarScanner'
    // 使用 JAVA_HOME 指向 JDK 根目录
    JAVA_HOME = tool 'jdk-17'
    // 在 PATH 中包含 ${JAVA_HOME}/bin
    PATH = "${JAVA_HOME}/bin:${env.PATH}"
}

stages {
    stage('Checkout') {
        steps {
            // 检出代码
            echo 'checkout'
        }
    }
    
    stage('Build') {
        steps {
            // 构建代码
            echo 'go build'
        }
    }
    
    stage('Test') {
        steps {
            // 运行测试
            echo 'go test'
        }
    }
    
    stage('Debug') {
        steps {
            echo '------------ENVIRONMENT VARIABLES'
            sh 'env'
            echo '------------JAVA VERSION'
            sh 'java -version'
            echo '------------JAVA_HOME'
            sh 'echo $JAVA_HOME'
            echo '------------PATH'
            sh 'echo $PATH'
            echo '------------JAVA'
            sh 'which java'
        }
}

    stage('SonarQube Analysis') {
        steps {
            echo 'go sonarQube'
            withSonarQubeEnv("SonarQubeServer") {
                // 将 SonarScanner 执行命令输出添加到日志中
                sh "${SONAR_SCANNER_HOME}/bin/sonar-scanner -X"
            }
        }
    }
}

}为什么输出java -version时还是用的系统默认的,而不是pipeline中指定的java

在 Jenkins Pipeline 中设置 JAVA_HOMEPATH 变量是为了确保 Pipeline 中的步骤使用指定的 Java 版本。然而,这些设置可能不会直接影响到 Groovy 脚本中的 sh 'java -version' 命令。

在 Jenkins Pipeline 中,sh 步骤启动一个新的子进程,该子进程将继承 Jenkins 主服务器的环境变量。即使在 Pipeline 中设置了 JAVA_HOMEPATHsh 'java -version' 将使用子进程的环境,而不是 Pipeline 中设置的环境。

为确保 sh 步骤使用正确的 Java 版本,你可以直接指定 Java 可执行文件的路径。修改 SonarQube Analysis 阶段,使用完整路径执行 java -version,例如:

stage('SonarQube Analysis') {
    steps {
        echo 'go sonarQube'
        withSonarQubeEnv("SonarQubeServer") {
            // 使用完整路径执行 java -version
            sh "${JAVA_HOME}/bin/java -version"
            // 将 SonarScanner 执行命令输出添加到日志中
            sh "${SONAR_SCANNER_HOME}/bin/sonar-scanner -X"
        }
    }
}

这样可以确保在 SonarQube Analysis 阶段使用 Pipeline 中设置的 Java 版本。

请尝试这个修改,看看是否解决了问题。如果问题仍然存在,请提供相应的输出以便更好地帮助你。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值