jenkins - 如何将变量从管道传递到詹金斯的工作?
问题描述
我需要在管道中创建一个唯一标识符,然后从此管道启动的所有作业都应该可以访问这个唯一标识符。
我不想参数化这些工作。
我认为在管道级别上定义的环境变量可以从作业中访问,但事实并非如此。
pipeline {
agent any
environment {
TEST_VAR = 'TEST_VAR'
}
stages {
stage('Stage1') {
steps {
build (job: 'job1')
}
}
}
}
解决方案
您实际上不需要参数化下游管道,但仍然可以将变量作为参数从上游传递并在下游访问它。
上游管道
pipeline {
agent any
environment {
TEST_VAR = 'hello_world'
}
stages {
stage('Build-downstream-job') {
steps {
build job: 'downstream-job', parameters: [string(name: 'TEST_VAR', value: env.TEST_VAR)], wait: false
}
}
}
}
下游管道
pipeline {
agent any
stages {
stage('Get-test-var') {
steps {
println(params.TEST_VAR)
}
}
}
}
下游管道控制台输出
[Pipeline] stage
[Pipeline] { (Get-test-var)
[Pipeline] echo
hello_world
[Pipeline] }
[Pipeline] // stage
推荐阅读
- javascript - 如何使用jquery进行分页
- sql - 最大时间戳记录
- typescript - 使用 Swagger Codegen 生成 Typescript Fetch API 客户端后出错
- python - Flask 和 SQLAlchemy - 如何从配置文件中获取连接字符串?
- javascript - 未捕获(承诺中)类型错误:无法读取未定义的属性“setCustomModal”
- javascript - 根据 Angular 中的 URL 设置菜单处于活动状态
- python - 在 kivy 中使用 ScreenManager 时,“无法为基础小部件、屏幕创建一致的方法解析顺序 (MRO)”
- ios - Firebase 数据更新如何发生“冲突”?
- java - 注册UDF时如何将dataType作为java objecttype传递,因为calludf()返回Java object
- postman - 如何使用基本身份验证通过 RESTAPI 生成数据块令牌