网站建设策划方案ppt,通用网站后台管理 asp.net 源码,郑州网站运营实力乐云seo,网站制作代理加盟实现 Pipeline 功能的脚本语言叫做 Jenkinsfile#xff0c;由 Groovy 语言实现。Jenkinsfile 一般是放在项目根目录#xff0c;随项目一起受源代码管理软件控制#xff0c;无需像创建自由风格项目一样#xff0c;每次可能需要拷贝很多设置到新项目#xff0c;…实现 Pipeline 功能的脚本语言叫做 Jenkinsfile由 Groovy 语言实现。Jenkinsfile 一般是放在项目根目录随项目一起受源代码管理软件控制无需像创建自由风格项目一样每次可能需要拷贝很多设置到新项目提供了一些直接的好处
Pipeline 上的代码审查/迭代Pipeline 的审计跟踪Pipeline 的唯一真实来源可以由项目的多个成员查看和编辑 Pipeline 支持Declarative在 Pipeline 2.5 中引入和 Scripted Pipeline 两种格式。两者都支持建立 Pipeline两者都可以用于在 Web UI 中定义一个流水线 Jenkinsfile将 Jenkinsfile 文件创建并检查到源代码控制库中通常被认为是最佳做法。
Declared Pipeline
Declared Pipeline树
Declared Pipeline 必须包含在固定格式 Pipeline {} 块内每个声明语句必须独立一行行尾无需使用分号。块 blocks{} 只能包含章节Sections指令Directives步骤Steps或赋值语句。
块 blocks{}
由大括号括起来的语句如 Pipeline{}Section{}parameters{}script{}
章节Sections
章节中通常包含一个或多个指令或步骤。如 agent 、post、stages、steps
指令Directives
environment、options、parameters、triggers触发、stage、tools、when
节点agent
必须存在agent 必须在 Pipeline 块内的顶层定义但 stage 内是否使用是可选的 参数any/none/label/node/docker/dockerfile 常用选项 label/cuetomWorkspace/reuseNode 示例
agent { label my-label }agent {node {label my-labelcustomWorkspace /some/other/path}
}agent {docker {image nginx:1.12.2label my-labelargs -v /tmp:/tmp}
}
构建后post
不是必须用于 Pipeline 的最外层或者 stage{} 中主要用于表达 Jenkins 完成构建动作之后需要做的事情。
示例
pipeline {agent anystages {stage(Example){steps {echo Hello world}}}post {always {echo say goodbay}}
}
阶段集stages
必须存在包括顺序执行的一个或多个 stage 命令在 Pipeline 内仅能使用一次通常位于 agent/options 后面。
步骤steps
必须存在steps 位于 stage 指令块内部包括一个或多个 step。仅有一个 step 的情况下可以忽略关键字 step 及其{}。
环境environment
不是必须environment 定义了一组全局的环境变量键值对存在于 pipeline {} 或者 stage 指令内。执行特殊方法 credentials()可以获取 Jenkins 中预定义的凭证明文内容。
示例
environment {CCclang}
environment {AN_ACCESS_KEY credentials(my-prefined-secret-text)}
steps {sh printenv}
选项options
不是必须预定义 Pipeline 专有的配置信息仅可定义一次
示例
pipeline {agent anyoptions{timeout(time:1,unit: HOURS)}
}
参数parameters
不是必须 定义参数化构建的参数可选参数 参数类型 booleanParamchoicefiletextpasswordrunstring 示例
parameters {string(name: PERSON, defaultValue: Jenkins, description: 输入的文本参数)choice(name: CHOICE, choices: [One, Two, Three], description: Pick something)
}
触发器rtiggers
不是必须定义 Pipeline 被自动触发的方式选项 cron、pollSCM、upstream
示例
triggers {cron(0 8 * * 1-5)
}
Script Pipeline
Script Pipeline语句树
一个 Script Pipeline 可以划分成若干个 Stage每个 Stage 代表一组操作例如 BuildTestNode 代表 Jenkins 节点比如 Master, Slave 这样的节点Step 是最基本的操作单元在对应 Node 节点上执行的动作语句直接写在 node {} 中。 流程控制语句
如同传统的脚本语言一样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 handlingtry {echo This is in the try block.sh exit 1}catch (exc) {echo Something failed, Im in the catch block.}finally {echo Finally, Im 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 serversmtp 服务地址SMTP portsmtp 端口号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}}
}
Declared Pipeline 的入门学习难度相对不高这种类似我们在做自动化测试时所接触的关键字驱动模式只要理解其定义好的关键词按要求填充数据即可。 虽然这种方式入门容易但灵活性欠缺。相比之下 script Pipeline 的好处就是灵活好封装易于大规模使用但需要有一定的编程功底。
最后感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走 这些资料对于【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴上万个测试工程师们走过最艰难的路程希望也能帮助到你