Jenkins Pipeline介绍

 

 

Jenkins Pipeline 简介

Jenkins pipeline 是 Jenkins 2.0 的精髓,,是帮助 Jenkins 实现 CI 到 CD 转变的重要角色。

简单来说,就是一套运行于 Jenkins 上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂发布流程。

Pipeline 的实现方式是一套 Groovy DSL,任何发布流程都可以表述为一段 Groovy 脚本,并且 Jenkins 支持从代码库直接读取脚本,从而实现了 Pipeline as Code 的理念。




 

 Pipeline 的基本概念和 Jenkinsfile

 

Pipeline的几个基本概念

Stage阶段:一个 Pipeline 有多个 Stage 组成,每个 Stage 包含一组 Step。注意一个 Stage
可以跨多个 Node 执行,即 Stage 实际上是 Step 的逻辑分组。

Node节点:一个 Node 就是一个 Jenkins 节点,可以是 Master,也可以是 Slave,是 Pipeline
中具体 Step 的运行环境。

Step步骤:是基本的运行单元,可以是创建一个目录、从代码库中 checkout 代码、执行
一个 shell 命令、构建 Docker 镜像、将服务发布到 Kubernetes 集群中。Step 由 Jenkins 
和 Jenkins 各种插件提供。

 

stage阶段怎么理解,一个Jenkinsfile 可以分为一个大的阶段。分为打包、构建、 部署。构建的流程,

可以分为这几步,获取源代码,然后打包,构建,进行编译,替换配置文件,编译完打包,进行部署 这个阶段就是stage

 

step步骤 就是具体的操作 编译里面 先替换配置文件再编译,替换配置文件就是一步,替换另外一个配置文件就是另外一步 ,具体的一步一步的东西就是 

步骤step,是最小的操作单元。就是这个步骤你要干嘛,每个阶段都有很多步骤

 

 

Jenkinsfile语法

Jenkins Pipeline 支持两种语法,一种 Declarative Pipeline(声明式),一种 ScriptedPipeline(脚本式)。

声明式的 Pipeline 限制用户使用严格的预选定义的结构,是一种声明
式的编程模型,对比脚本式的 Pipeline 学习起来更加简单;

脚本式的 Pipeline 限制比较少,结构和语法的限制由 Groovy 本身决定,是一种命令式的编程模型。
所以我们学习使用声明式的方式编写 jenkinsfile。
一般来说 jenkinsfile 会被放在代码库的根目录下。

当然也可以在 Web 页面定义。

下面是两种不同方式的 jenkinsfile 示例

Jenkinsfile (声明式)

 

pipeline { 
    agent any
    stages { 
        stage('Build') { 
            steps { 
                echo 'Building..' 
                } 
            } 
            stage('Test') { 
                steps { 
                    echo 'Testing..' 
                } 
            } 
            stage('Deploy') { 
                steps { 
                    echo 'Deploying....' 
                } 
            } 
        }
    }

 

 

前面我们说过,声明式的Pipeline有严格的预定义格式结构,有固定的格式,外层必须是pipeline{},
紧接着是 agent  就是节点node ,agent也是固定的,pipeline紧跟着进来 一定是agent 参考上面的格式  后面的any是任何节点还是其中一个节点,指定某一个节点是自己指定,通过标签自己来指定节点

 

指示 Jenkins 分配一个执行器和工作空间来执行下面的 Pipeline,

 

stages和steps是申明式Jenkinsfile必须的,stages是一个个阶段,所有的stage必须要定义在stages里,

stages(‘’) 括号里面是名称,这个阶段是什么名称,stages这个名称不能重复,同一个stage名称只能有一个

 

每一个stage下的 step 要定义在一个 steps 里,stages里面包含了step,具体的执行步骤都写在step里面 ,一行一个,可以写多行

 

Jenkinsfile( 脚本式 )

node { 
    stage('Build') { 
        // 
    } 
    stage('Test') { 
        // 
    } 
    stage('Deploy') { 
        // 
    } 
}

 

在脚本式 jenkinsfile 里,你可以定义一个 node 或者多个 node 块,然后在 node 块里
定义你的 stage,在 stage 里定义你的 step 即可

 

posted @ 2020-05-24 00:28  minger_lcm  阅读(2102)  评论(0编辑  收藏  举报