Jenkins通过/buildWithParameters传递环境变量失败,求更直接解决方案
解决Jenkins中/buildWithParameters传参后环境变量未设置的直接方案
方案1:给目标任务添加正式参数
直接在被触发的Jenkins任务里,添加一个字符串参数,命名为TRIGGER_JOB,不需要设置默认值。这样当你通过/buildWithParameters?TRIGGER_JOB=test调用时,这个参数会自动成为构建的环境变量,在任务的脚本、步骤里直接用${TRIGGER_JOB}就能获取到对应的值。
方案2:在Groovy触发代码里直接注入环境变量
如果不想给任务额外加参数配置,也可以在触发任务的Groovy代码里,通过Jenkins API直接给新构建注入环境变量。示例代码如下:
def job = Jenkins.instance.getItemByFullName("job_name") def params = [ new StringParameterValue("TRIGGER_JOB", "test") ] def future = job.build(new BuildTriggerCause(), params) // 可选:等待构建启动 future.waitForStart() def build = future.get() // 直接把变量塞进构建环境 build.environment.put("TRIGGER_JOB", "test")
这种方式不需要修改目标任务的参数配置,触发时直接完成环境变量的设置。
方案3:通过构建原因或变量直接读取
如果只是需要在目标任务里获取触发源信息,也可以直接读取构建的参数变量。比如在目标任务的Groovy脚本里添加:
def triggerJob = currentBuild.buildVariables.get("TRIGGER_JOB") echo "触发当前任务的任务名:${triggerJob}"
这个方案的前提是触发时传递的参数能被Jenkins识别,配合方案1使用会更稳妥。
内容的提问来源于stack exchange,提问作者Quotenbanane
相关产品推荐
相关产品推荐

