打算写一系列的博客记录对Jenkins pipeline 官网的摘要和重点

Jenkins 2.0 之后将pipline 作为了默认的选项, 对于Jenkins 高阶使用者来说要学会运行pipeline和到编写pipeline的代码。

1. 什么是Jenkins Pipeline

Jenkins Pipeline 或者简称Pipeline 其实是一系列的插件的通称, 这些插件可以支持执行和集成‘continuous delivery piplines’到Jenkins里面。

什么是“continuous delivery pipline” 其实是描述项目软件控制流程, 从软件的版本控制到最终提交给终端用户这一系列的流程的自动部署。 大家知道每次代码的提交(提交到SVN/GIT/Github等代码控制工具)到最终代码发布给终端用户都要经历一系列复杂的流程.这个流程包括编译(build),然后多阶段的测试:unit test, api test, integration test等和部署阶段。

Pipeline 他提供了一系列可扩展的工具将上述流程通过Pipeline Domain Specific Language (DSL)syntax用‘code’来描述。

通常来说, Jenkins Pipeline 被写入到一个文本文件里面(我们称为Jenkinsfile),他可以反过来被插入到项目的源代码管理库里面。这就是"Pipeline-as-Code"的基础。然后'the continuous delivery pipeline'就可以和其他代码一样被标注版本信息和review. 创建Jenkinsfile带来哪些好处呢:

  1. 对任何分支和Pull请求自动创建Pipelines。

  2. Pipeline里面就包含Code review/iteration.

  3. 对Pipeline进行审计跟踪。

  4. Single source of truth 可以被项目里面的成员看到和编辑。

不管是使用web UI 或者是使用一个Jenkinsfile,语法其实都是一样的。推荐最好的还是使用Jenkinsfile并且将这个放入到代码管理库里面。

这就是Jenkinsfile的一个例子

Jenkinsfile (Declarative Pipeline)

pipeline {
    agent anystages {
        stage('Build') {steps {sh'make'}
        }
        stage('Test'){
            steps {
                sh'make check'junit'reports/**/*.xml'}
        }
        stage('Deploy') {
            steps {
                sh'make publish'}
        }
    }
}

agent表示Jenkins需要定位到这个部分Pipelien的一个执行者和工作目录
stage描述了Pipeline的一个状态
steps描述了这个stage的一个步骤
sh执行给的一个shell命令
junit它是由Junit plugin 提供的可以集成到测试报告里面的pipline的一个步骤