首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jenkins管道env.JAVA_HOME不同于sh printenv

Jenkins管道env.JAVA_HOME不同于sh printenv
EN

Stack Overflow用户
提问于 2020-02-25 15:14:23
回答 2查看 1.3K关注 0票数 1

Jenkins 2.2024.2

Kubernetes插件1.22.0

env.JAVA_HOME变量被设置为与sh 'printenv'显示的值不同的值。我原以为env是环境的反映。我也找不到env.JAVA_HOME设置的位置。它没有反映全局JDK配置中的值。我还查看了openjdk的Jenkins主根目录,并且只找到了正确的值。

代码语言:javascript
复制
bash-4.4# grep openjdk *
config.xml:      <home>/usr/local/openjdk-8/jre</home>

下面是一条演示这种行为的管道。

代码语言:javascript
复制
pipeline {
    agent {
        kubernetes { label 'java8-mvn3' }
    }

    stages {
        stage('test') {
            steps {
                container ('java8-mvn3') {
                    echo env.JAVA_HOME
                    echo "++++++++++++++++++++++++++"
                    sh 'printenv | grep JAVA_HOME'
                }
            }
        }
    }
}

**产出**

代码语言:javascript
复制
[Pipeline] echo
/usr/lib/jvm/java-1.8-openjdk
[Pipeline] echo
++++++++++++++++++++++++++
[Pipeline] sh
+ printenv
+ grep JAVA_HOME
JAVA_HOME=/usr/local/openjdk-8
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-03 17:53:36

JAVA_HOME环境变量是基于Jenkins环境设置的。而printenv则显示从容器的环境变量。

票数 0
EN

Stack Overflow用户

发布于 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 ...

或者作为另一种选择,导出全局/阶段定义环境级别所需的选项。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60397789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档