詹金斯环境变量在Groovy初始化
问题描述:
我建立詹金斯的码头工人形象,并已通过ENV变量的jenkins.sh
初始化文件:詹金斯环境变量在Groovy初始化
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 at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:53) at org.codehaus.groovy。 runtime.callsite.PogoGetPropertySite.getProperty(PogoGetPropertySite.java:52) 在org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjectGetProperty(AbstractCallSite.java:307)
我怎样才能捕捉到环境变量存在在jenkins.sh
?
谢谢!
答
检查ENV VAR提供:
def env = System.getenv()
env.each {
println it
}
Export的ENV中jenkins.sh
瓦尔。请参阅 Access to build environment variables from a groovy script in a Jenkins build step (Windows)。
如果你用'env.each {println it}'迭代'env'会怎么样?有没有?如果你在'jenkins.sh'中输出'env vars?那么Groovy中有这些吗? –
所以导出不起作用(因为我认为导出的范围是shell),但'env.each {println it}'显示它。为什么不能env ['CLUSTER']工作? – ISZ
好吧,我想我跳过枪出口工程。谢谢Gerold! – ISZ