Blue Ocean 提供了一套可视化操作界面来帮助创建、编辑 Pipeline 任务。
Blue Ocean 特性:
实现 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-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'
}
}
}