Jenkins 2.2024.2
Kubernetes插件1.22.0
env.JAVA_HOME变量被设置为与sh 'printenv'显示的值不同的值。我原以为env是环境的反映。我也找不到env.JAVA_HOME设置的位置。它没有反映全局JDK配置中的值。我还查看了openjdk的Jenkins主根目录,并且只找到了正确的值。
bash-4.4# grep openjdk *
config.xml: <home>/usr/local/openjdk-8/jre</home>下面是一条演示这种行为的管道。
pipeline {
agent {
kubernetes { label 'java8-mvn3' }
}
stages {
stage('test') {
steps {
container ('java8-mvn3') {
echo env.JAVA_HOME
echo "++++++++++++++++++++++++++"
sh 'printenv | grep JAVA_HOME'
}
}
}
}
}**产出**
[Pipeline] echo
/usr/lib/jvm/java-1.8-openjdk
[Pipeline] echo
++++++++++++++++++++++++++
[Pipeline] sh
+ printenv
+ grep JAVA_HOME
JAVA_HOME=/usr/local/openjdk-8发布于 2020-03-03 17:53:36
JAVA_HOME环境变量是基于Jenkins环境设置的。而printenv则显示从容器的环境变量。
发布于 2020-02-26 11:29:53
按手册页:http://man7.org/linux/man-pages/man1/printenv.1.html
NOTE: your shell may have its own version of printenv, which usually supersedes the version described here. Please refer to your shell's documentation for details about the options it supports.
因此,您需要使用特定的shell,比如sh '''#!/bin/bash -c ...。
或者作为另一种选择,导出全局/阶段定义环境级别所需的选项。
https://stackoverflow.com/questions/60397789
复制相似问题