Declared Pipeline 的入门学习难度相对不高,这种类似我们在做自动化测试时所接触的关键字驱动模 式,只要理解其定义好的关键词,按要求填充数据即可。
虽然这种方式入门容易,但灵活性欠缺。相比之下 script Pipeline 的好处就是灵活,好封装,易于大规 模使用,但需要有一定的编程功底。
Script Pipeline 语句树
一个 Script Pipeline 可以划分成若干个 Stage,每个 Stage 代表一组操作,例如 Build,Test;Node 代 表 Jenkins 节点,比如 Master, Slave 这样的节点;Step 是最基本的操作单元,在对应 Node 节点上执行 的动作语句直接写在 node {} 中。
Script Pipleline 语句树
流程控制语句
如同传统的脚本语言一样,Script Pipeline 是从上至下顺序执行,可以使用 Groovy 表达式进行流程控 制,如 if/else 语句通过逻辑条件判断来对流程进行控制:
node {
stage('Example') {
if (env.BRANCH_NAME == 'master') {
echo 'I only execute on the master branch'
} else {
echo 'I execute elsewhere'
}
}
}
异常处理语句
Script Pipeline 脚本流程控制的另一种方式是异常处理机制。当任何一个步骤因各种原因而出现异常时, 都必须在代码中使用 try/catch/finally 语句块进行异常捕获,并通过预先设定代码进行处理,保证脚本能 够顺利执行:
stage('Error Handling') {
node{
echo "This is test demo for the error handling"
try {
echo "This is in the try block."
sh 'exit 1'
}catch (exc) {
echo "Something failed, I'm in the catch block."
}finally {
echo "Finally, I'm in the finally block."
}
}
}
Jenkinsfile 中调用 plugin 功能
在 Jenkinsfile 中除了可以使用常规的逻辑、流程控制,还可以调用 Jenkins 的插件功能。下面用如下实 例进行说明。
Email Extension 插件
Email Extension 是 Jenkins 中的一个外部插件,用来发送邮件,从 Jenkins 的 Plugin Manager 中进行安 装。在 Pipeline 中通过代码调用可以触发该插件的运行,实现发送邮件的功能。
基础配置
在安装好 Email Extension 插件之后,首先需要选择一个准备用来发送 Jenkins 通知邮件的邮箱,发件邮 箱的具体参数要提前知晓(通常参数可以从邮箱的配置参数信息页面上查到);之后要在 Manage Jenkins -> Configure System 中将对应参数填写该插件的对应配置项中,必须配置的参数如下:
- SMTP server:smtp 服务地址
- SMTP port:smtp 端口号
- Use SMTP Authentication:启用 smtp 安全校验
- User Name:发件人用户名
- Password:发件人密码
- Default Recipients:默认收件人
其他的参数可以根据自己的需要进行配置,Email Extension 配置参考截图如下:
Pipeline代码
pipeline{
agent {
label 'master'
}
stages{
stage('发送邮件测试') {
steps{
echo 'Test Email'
}
}
}
post {
always {
emailext body: '$DEFAULT_CONTENT', recipientProviders: [[$class:
'RequesterRecipientProvider']], subject: '$DEFAULT_SUBJECT'
}
}
}