1、常用指令
在编写Pipeline脚本时,会涉及各种指令,这些指令用于实现构建过程中的不同功能。熟悉这些指令后,编写一个完整的Pipeline脚本将变得十分简单
1.1 sh
- sh指令用于执行shell命令,配置示例如下
stage('Build') {stage {sh 'hostname'}
}
- 在上述配置中,在构建的过程中,执行一个hostname命令以显示主机名
- 如果需要执行多条命令或者shell脚本,可以使用三引号包裹。配置示例如下:
stage('Build') {stage {sh """hostnamepwdls"""}
}
1.2 environment
- environment指令用于在Pipeline中定义环境变量,这些环境变量可以在任意步骤中使用。配置示例如下:
pipeline {agent anyenvironment {APP_NAME = 'portal'}stages {stage('Build') {steps {echo "$APP_NAME"}}}
}
- 在上述构建中,environment块定义了一个名为APP_NAME的环境变量,值为portal。在构建过程中,使用$APP_NAME引用变量,并使用echo指令输出它
1.3 parameters
- parameters指令用于定义参数,既参数化构建。配置示例如下:
pipeline {agent anyparameters {choice (choices: ['dev' ,'main'], description: '请选择发布的分支', name: 'Branch')}stages {stage('Build') {steps {echo "${params.Branch}"}}}
}
- 在上述配种,parameters块定义了一个选项参数,名称为Branch,该名称将作为环境变量被公开在构建流程中。在构建的步骤中,使用${params.Branch}引用改变量,并使用echo指令输出
- 完整的配置示例如下:
pipeline {parameters {choice (choices: ['dev' ,'main'], description: '请选择发布的分支', name: 'Branch')}agent {kubernetes {yaml '''apiVersion: v1kind: Podmetadata:labels:app: jenkins-slavespec:containers:- name: jnlpimage: uhub.service.ucloud.cn/librarys/jenkins/inbound-agent:latest-jdk21args: ['\$(JENKINS_SECRET)', '\$(JENKINS_NAME)']'''}}stages {stage('Build') {steps {echo "${params.Branch}"echo 'Build...'}}stage('Test') {steps {echo 'Test...'}}stage('Deploy') {steps {echo 'Deploy...'}}}
}
- 点击保存后刷新页面,可以看到Build变成了 Build with Parameters
1.4 triggers
- triggers指令用于定义触发器,既自动触发构建的条件,如定时触发、代码变更时触发等。配置示例如下:
pipeline {agent anytriggers {pollSCM '* * * * *'}stages {stage() {steps {echo "Building......"}}}
}
- 在上述配种,triggers块定义了一个pollSCM触发器,表示每分钟检查一次代码仓库是否有变更
1.5 when
- when指令用于定义在特定条件下执行某个阶段或步骤。配置示例如下:
pipeline {agent anystages {stage('Build') {when {expression { return params.BUILD_DEV == 'dev' }}steps {echo "Building in dev environment..."}}}
}
- 在上述配置中,Build阶段使用了when指令,表示只有当参数BUILD_DEV的值为dev时,才执行下面的步骤
1.6 script
- script指令用于在Pipeline中执行一段Groovy脚本,这样可以实现更复杂的逻辑,如条件判断、循环等。配置示例如下:
pipeline {agent anystages {stage() {steps {script {def colors = ['red', 'blue', 'orange']for (def color in colors) {if (color == 'blue') {echo 'blue'} else {echo color}}}}}}
}
- 在上述配置中,script块执行了一段Groovy脚本,其中包含了一个基本的数组遍历和逻辑判断
1.7 post
- post指令用于在Pipeline执行结束后执行一些操作,如通知、清理等。配置示例如下:
pipeline {agent anystages {stage ('Build') {steps {echo "Building..."}}}post {always {echo 'Pipeline completed'}sucess {echo 'Pipeline success'}failure {echo 'Pipeline failed'}}
}
- 在上述配置中,post模块定义了根据构建状态执行相应的操作,具体如下:
- always:在Pipeline执行完成后,无论成功与否都会执行
- success:在Pipeline执行成功时执行
- failure:在Pipeline执行失败时执行
2 片段生成器
Jenkins片段生成器是一个强大工具,可以帮助用户以图形界面的方式生成Pipeline脚本的代码片段
在Pipeline脚本下方,单击 Pipeline syntax进入片段生成器页面,如下图所示
在 Sample Step列表中选择需要生成的功能后,下方会显示相应的图形页面,配置完成后,单击Generate Pipeline Script按钮生成对应的代码片段,可直接将其复制到Pipeline脚本中以供使用。如下图所示
-
Jenkins还提供了一个专门为声明式语法风格设计的生成器,名为Declarative Directive Generator(声明式指令生成器),主要用于生成Pipeline指令的代码片段。如下图所示
-
通过这两个生成器,用户可以很轻松地编写Pipeline脚本,减少手动编写的工作量,提高工作效率