jenkins 为什么Jenkin的环境变量是这样设置的?

iecba09b  于 11个月前  发布在  Jenkins
关注(0)|答案(1)|浏览(131)

我有一个Jenkinsfile,它导出了一个环境变量,如下所示

environment {
        USERNAME = sh(returnStdout: true, script: 'set +x && echo $username').trim()
        PASSWORD = sh(returnStdout: true, script: 'set +x && echo $password').trim()
    }

字符串
为什么不直接做echo $usernameecho $password呢?我不太熟悉bash脚本,所以我不理解后面的推理

m2xkgtsf

m2xkgtsf1#

1 sh(returnStdout:true,script:'...')

查询或执行一些bash命令并获取字符串形式的值以将其保存到变量中是一个有用的特性

#2 set +x

在jenkins和其他类似平台的脚本中附加set +x的主要原因是为了避免打印脚本或sh。你的脚本很小,所以日志不会打扰眼睛。但是脚本很大,日志太吵了。

管道

在这个示例中,我使用whoami来模拟一些bash命令

pipeline{
    
    agent any
    
    environment {
        USERNAME = sh(returnStdout: true, script: 'echo $(whoami)').trim()
        PASSWORD = sh(returnStdout: true, script: 'echo $(whoami)').trim()
    }    
    
    stages {
        stage ('Stage 1') {
            steps {
                script {
                   println "USERNAME: $USERNAME"
                   println "PASSWORD: $PASSWORD"
                }
            }
        }   
    }
}

字符串

不设置+x


的数据

set +x

USERNAME = sh(returnStdout: true, script: 'set +x && echo $(whoami)').trim()



这是在我的积压打开它一个拉请求添加一个参数来帮助。目前没有办法隐藏脚本不设置+x:How do I turn off command echo in Jenkins pipeline groovy scripts

相关问题