DevOps之持续集成Pipeline(一)

1、Pipeline介绍

    Jenkins2.0中最大的一个特性就是Pipeline,实际使用中Pipeline已经超越了咱们对jenkins自己的理解,可能在以前咱们大多数把Jenkins当作是一个持续集成的工具。可是在Jenkins2.0中,Jenkins完成了CI到CD的华丽转身,并且由于Jenkins的开放性,随着一些测试plugin的加入,CT持续测试也能够在Jenkins Pipeline上实现。以及多节点的组合式任务,使得Jenkins能够实现复杂的发布流程。node

Pipeline,简而言之,就是一套运行于Jenkins上的工做流框架,将本来独立运行于单个或者多个节点的任务链接起来,实现单个任务难以完成的复杂流程编排与可视化。git

官方资料:https://jenkins.io/2.0/docker

一、Jenkins持续集成架构图

二、Pipeline的组成部分

①Node

     咱们能够将Node称为是节点或者Agent。节点能够执行某一阶段(Stage)、某几阶段(Stage)乃至整个Pipeline,就看咱们Pipeline中在哪里去定义Node。咱们能够将Node做为Jenkins Master的Slave 节点来分担Master节点的构建以及执行job负载。也能够将Node当作测试、部署的专用节点。好比咱们能够增长一个Ansible节点用来作自动化部署,增长 一个Jmeter节点用来作性能测试。架构

Stage

      咱们能够将Stage称为阶段,每个Stage为Pipeline中的一个小部分,而每一个Stage中最小部分为Step。好比一个简单的持续集成Pipeline。咱们能够分为两个Stage,第一个是git clone code,把最新代码拉下来,第二个为Build,即利用Ant、Maven等工具进行代码编译构建。框架

 ③Step

      咱们能够把Step称为步骤,一个或者多个Step将会组成一个Stage,Step是Pipeline组成的最小单位。一个Step能够很简单,好比echo “hello”。也能够很复杂,好比sh‘’ “docker build -t jenkins:master ”。工具

三、Pipeline两种语法

Pipeline脚本是由Groovy语言实现性能

声明式Pipeline

pipeline {
    agent any   //定义使用哪一个Node进行Job的执行
    stages {
        stage('Build') {   //定义Build的stage
            steps {    //定义Build的stage下面的全部step
                // 
            }
        }
        stage('Test') { 
            steps {
                // 
            }
        }
        stage('Deploy') { 
            steps {
                // 
            }
        }
    }
}

②脚本式Pipeline

node {               //定义使用哪一个Node进行Job的执行与声明式中的Agent等同。
    stage('Build') { //定义Build的stage步骤
        //           //定义Build的stage下面的全部step步骤
    }
    stage('Test') { 
        // 
    }
    stage('Deploy') { 
        // 
    }
}

四、如何写Pipeline

Jenkins贴心的为咱们提供了快速生成脚本的功能测试

①拉取代码为例

②生成Pipeline脚本

③Pipeline最佳实践

一般推荐在 Jenkins中直接从源代码控制(SCM)中载入Jenkinsfile Pipeline,这样能够对Jenkinsfile也进行分支管理以及不一样版本的管理。ui

 

更多Pipeline的使用和说明请参照官方文档:https://jenkins.io/doc/book/pipeline/spa

相关文章
相关标签/搜索