jenkins05-参数化pipeline

麦恒 / 2023-09-11 / 原文

  • 参数化pipeline:是指可以通过传参来决定pipeline的行为。参数化让写pipeline就像写函数,而函数意味着可重用、更抽象。所以,通常使用参数化pipeline来实现一些通用的pipeline。
  • 有两种方法配置参数化pipeline
    • (1)在Jenkins Web上配置
    • (2)在pipeline中配置

1、parameters指令

  • 参数化pipeline是通过parameters指令实现的,parameters指令只能放在pipeline块下
  • 为了满足不同的应用场景,参数化pipeline中的parameters指令支持多种参数类型
    • string:字符串类型。
    • text:多行文本类型,换行使用\n。
    • booleanParam:布尔类型。
    • choice:选择参数类型,使用\n来分隔多个选项。
    • file:文件类型,用户可上传文件。但是此类型存在Bug(无法拿到上传后的文件,所以不推荐使用)
    • password:密码类型。

1、在pipeline中定义参数

pipeline {
    agent any
	parameters {
		//字符串类型
		string defaultValue: '', description: '项目名称', name: 'projectName', trim: false
		//多行文本类型
		text defaultValue: 'One\nTwo\nThree', description: '帮助说明', name: 'man'
		//布尔类型
		booleanParam defaultValue: true, description: '真假', name: 'boolName'
		//选择参数类型
		choice choices: ['master', 'release', 'dev'], description: '分支名称', name: 'branchName'
		//密码类型
		password defaultValue: '', description: '', name: 'GitLabPasswdUser01'
	}
	stages {
        stage('Hello') {
            steps {
                echo "Hello ${params.projectName}"
            }
        }
    }
}

2、使新定义的参数生效

  • 在Jenkins新增参数后,至少要手动执行一次,它才会被Jenkins加载生效。生效后,在执行项目时,就可以设置参数值了,如图所示。

3、使用新定义的参数

  • 被传入的参数会放到一个名为params的对象中,在pipeline中可直接使用。params.userFlag就是引用parameters指令中定义的userFlag参数。

2、由另一个pipeline传参并触发

  • 既然存在参数化的pipeline,那么就表示可以在一个pipeline中“调用”另一个pipeline。在Jenkins pipeline中可以使用build步骤实现此功能。build步骤是pipeline插件的一个组件,所以不需要另外安装插件,可以直接使用。
  • build步骤其实也是一种触发pipeline执行的方式,它与triggers指令中的upstream方式有两个区别:
    • (1)build步骤是由上游pipeline使用的,而upstream方式是由下游pipeline使用的。
    • (2)build步骤是可以带参数的,而upstream方式只是被动触发,并且没有带参数。

1

#                                                                                                                          #