Jenkins流水线环境变量无法传递至下游任务的解决求助
解决Jenkins流水线变量传递至下游任务的问题
核心原因
流水线environment块定义的PIPELINE_NAME属于流水线上下文的变量,即便开启「Keep Jenkins Environment Variables」,下游任务的properties_content在解析时也无法直接识别该变量——因为properties_content的变量解析逻辑优先读取任务自身的参数或全局变量,而非上游流水线的环境变量。
具体解决步骤
在流水线中显式传递参数
调用下游任务时,通过build步骤的parameters参数把PIPELINE_NAME主动传过去,示例代码:pipeline { agent any environment { PIPELINE_NAME = 'foo-pipeline' } stages { stage('调用下游任务') { steps { build job: '你的下游任务名称', parameters: [ string(name: 'PIPELINE_NAME', value: env.PIPELINE_NAME) ] } } } }给下游任务添加对应参数
进入下游任务的配置页面,添加一个字符串类型参数,名称设为PIPELINE_NAME(和流水线传递的参数名完全一致),默认值可留空。修改properties_content配置
现在在下游任务的properties_content里直接用${PIPELINE_NAME}就能获取到流水线传递的实际值了,示例配置:JenkinsJobName=foo JenkinsBuildNumber=${BUILD_NUMBER} PIPELINENAME=${PIPELINE_NAME}
额外说明
如果下游任务是通过其他插件(比如Publish Over SSH)调用批处理,也要确保在插件配置中选择引用任务参数PIPELINE_NAME,而非直接写流水线的环境变量名。
内容的提问来源于stack exchange,提问作者user3711142
相关产品推荐
相关产品推荐

