我希望能够做到以下几点:
AOEU=$(echo aoeu)
并让Jenkins设置AOEU= AOEU。
Jenkins中的环境变量部分不会这样做。相反,它设置了AOEU='$(echo AOEU)'。
如何让Jenkins计算shell命令并将输出分配给环境变量?
最后,我希望能够将作业的执行程序分配给一个环境变量,该环境变量可以传递给其他脚本或由其他脚本使用。
我希望能够做到以下几点:
AOEU=$(echo aoeu)
并让Jenkins设置AOEU= AOEU。
Jenkins中的环境变量部分不会这样做。相反,它设置了AOEU='$(echo AOEU)'。
如何让Jenkins计算shell命令并将输出分配给环境变量?
最后,我希望能够将作业的执行程序分配给一个环境变量,该环境变量可以传递给其他脚本或由其他脚本使用。
当前回答
我们使用groovy作业文件:
description('')
steps {
environmentVariables {
envs(PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: true)
}
}
其他回答
这是存储环境变量并访问它的代码片段。
node {
withEnv(["ENABLE_TESTS=true", "DISABLE_SQL=false"]) {
stage('Select Jenkinsfile') {
echo "Enable test?: ${env.DEVOPS_SKIP_TESTS}
customStep script: this
}
}
}
注意:环境变量的值是一个字符串。如果你想使用它作为一个布尔值,那么你必须使用boolean .parse(env.DISABLE_SQL)来解析它。
我们使用的Scripted Pipeline语法是这样的:
env.AEOU = sh label:'set env var',
returnStdout: true,
script : '''#!/bin/bash
echo "aeou"
'''
sh label:'checkit',
script : '''#!/bin/bash
echo "${AEOU}"
'''
注意,sh步骤的脚本参数使用了三单引号表示法。这确保了${AEOU}不会被Groovy插入,而是被bash shell插入。
最简单的方法
你可以使用EnvInject插件在构建启动时注入环境变量。例如:
你怎么知道它有用
这可以通过EnvInject插件以以下方式完成:
创建一个“Execute shell”构建步骤,运行: echo AOEU=$(echo AOEU) >概要文件 创建一个注入环境变量构建步骤,并将“属性文件路径”设置为propsfile。
注意:这个插件(大部分)与Pipeline插件不兼容。
EnvInject Plugin(环境注入器插件)提供了几个选项来设置Jenkins配置中的环境变量。
通过选择将环境变量注入构建过程,您将得到:
文件路径 属性内容 脚本路径 脚本内容 最后评估Groovy脚本。
Groovy脚本为您提供了基于执行命令的结果设置环境变量的可能性:
执行方法:
return [HOSTNAME_SHELL: 'hostname'.execute().text,
DATE_SHELL: 'date'.execute().text,
ECHO_SHELL: 'echo hello world!'.execute().text
]
或者使用显式的Groovy代码:
return [HOSTNAME_GROOVY: java.net.InetAddress.getLocalHost().getHostName(),
DATE_GROOVY: new Date()
]
(关于每个方法的更多细节可以在内置帮助中找到(?))
不幸的是,你不能从脚本内容做同样的事情,因为它声明:
执行一个脚本文件,目的是设置一个环境,如创建 文件夹,复制文件,等等。给出脚本文件内容。你 可以使用上面的属性变量。但是,添加或重写 脚本中的环境变量不会对 建立工作。