软件测试 | Jenkinsfile语法

实现 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)或赋值语句。 Declared Pipeline 语句树

块 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-label'
 customWorkspace '/some/other/path'
 }
}
agent {
 docker {
 image 'nginx:1.12.2'
 label 'my-label'
 args '-v /tmp:/tmp'
 }
}

构建后(post)

不是必须,用于 Pipeline 的最外层或者 stage{} 中,主要用于表达 Jenkins 完成构建动作之后需要做的 事情。 示例:

pipeline {
 agent any
 stages {
 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 {CC='clang'}
environment {AN_ACCESS_KEY = credentials('my-prefined-secret-text')}
steps {sh 'printenv'}

选项 options

不是必须,预定义 Pipeline 专有的配置信息,仅可定义一次

示例:

pipeline {
 agent any
 options{
 timeout(time:1,unit: 'HOURS')
 }
}

参数 parameters

不是必须, 定义参数化构建的参数可选参数, 参数类型 booleanParam,choice,file,text, password,run,string 示例:

parameters {
 string(name: 'PERSON', defaultValue: 'Jenkins', description: '输入的文本参
数')
 choice(name: 'CHOICE', choices: ['One', 'Two', 'Three'], description:
'Pick something')
}

触发器 triggers

不是必须,定义 Pipeline 被自动触发的方式选项 cron、pollSCM、upstream

示例:

triggers {
 cron('0 8 * * 1-5')
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值