背景需求
Jenkins中存在ProjectA和
Project
B等,其中
Project
A构建时需要传入1个参数,想通过pipeline来同时触发
Project
A和B,并将
Project
A需要的两个参数传进去
其中ProjectA中已经将参数进行参数化
![](https://img-blog.csdnimg.cn/direct/ec1d43591fa5425f8743989290e8091a.png)
具体实现
-
通过 流水线语法学习,辅助解决该问题。新建流水线项目( test-parameter)-新建成功后进入该项目,点击流水线语法
-
①点击【片段生成器】-示例步骤选择:build:Build a job
-
② Project to Build,输入ProjectA的项目名称
-
③Parameters字段会自动加载 ProjectA中的参数
-
④点击下方的【生成流水线脚本】,将此代码复制到 pipeline script中
build job: 'test-parameter-build', parameters: [string(name: 'BranchPath', value: 'XXX')]
![](https://img-blog.csdnimg.cn/direct/a169108d91194db498a90b6823f6d3ab.png)
![](https://img-blog.csdnimg.cn/direct/35793039639d42e789f0f0e859fde26e.png)
![](https://img-blog.csdnimg.cn/direct/375d2f79fcbe4e0aa2b7017d06733ff6.png)
2.点击流水线
test-parameter项目的配置
在
pipeline script输入一下代码,
parameters{}内容是将ProjectA需要的参数在流水线中也需要进行参数化,参数名尽量与
projectA中保持一致。
注意:原projectA中string
parameter是需要保留的;接下来在build
ProjectA时,需要将参数传进去“
parameters: [string(name: 'BranchPath', value: params.BranchPath)
”,如果有更多的参数
pipeline {
agent any
parameters {
string(name: 'BranchPath', defaultValue: 'XXX', description: 'XXXX') //这里定义的是流水线中的参数内容,其中name名称可以跟projectA中相同也可以不同
string(name: 'BranchPath-2', defaultValue: 'XXX', description: 'XXXX')//如果有更多的参数,直接追加
}
stages {
stage('Build Project A') {
steps {
echo "Build Project A with parameter: ${params.BranchPath}"
build job: 'test-parameter-build', parameters: [string(name: 'BranchPath', value: params.BranchPath)]//这里的name是projectA中的命名,value是流水线中参数的命名
}
stage('Build Project B') {
steps {
build job: 'XXXX'
}
}
}
}
![](https://img-blog.csdnimg.cn/direct/02df98e584ac4bef835d5c2ac3a2d098.png)
![](https://img-blog.csdnimg.cn/direct/b7da22644ac8419cbf0354fb2354e7be.png)
或者在第一次构建前可以直接在流水线项目中
parameter{}中的内容手动添加参数
![](https://img-blog.csdnimg.cn/direct/9c028d5071524f4189344b4407c664ca.png)
至此通过流水线传参至其他项目的内容就结束了