Groovy Init中的Jenkins环境变量

时间:2017-07-02 21:45:58

标签: shell jenkins groovy amazon-ecs

我正在构建Jenkins的Docker镜像,并已将ENV变量传递给jenkins.sh初始化文件:

Dockerfile

...

COPY ./jenkins.sh /usr/local/bin/jenkins.sh 

jenkins.sh

echo ENV: "$ENV"
echo CLUSTER: "$CLUSTER"
echo REGION: "$REGION"

当我运行图像时,这些值打印得很完美,但我想在Jenkins初始化期间在Groovy脚本中使用它们。

以下内容在启动时抛出错误:

import java.util.Arrays
import java.util.logging.Logger
Logger logger = Logger.getLogger("ecs-cluster")

logger.info("Loading Archeus-Midwayer...")
import jenkins.model.*
instance = Jenkins.getInstance()

def env = System.getenv()
println(env['CLUSTER'])

错误

  

警告:无法运行脚本文件:/var/jenkins_home/init.groovy.d/init_ecs.groovy   groovy.lang.MissingPropertyException:没有这样的属性:类的CLUSTER:init_ecs       在org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:53)       在org.codehaus.groovy.runtime.callsite.PogoGetPropertySite.getProperty(PogoGetPropertySite.java:52)       at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjectGetProperty(AbstractCallSite.java:307)

如何捕获jenkins.sh中的环境变量?

谢谢!

1 个答案:

答案 0 :(得分:3)

检查环境变量:

WindowEventHook.StartListeningForDesktopSwitch();

Export def env = System.getenv() env.each { println it } 中的env vars。

另见 Access to build environment variables from a groovy script in a Jenkins build step ( Windows)