本次《jenkins Pipline 庖丁解牛》分享是结合实际工作实例讲解。

主要内容如下:

  • Pipline 语法讲解
  • Pipline 项目实战-Maven JAVA 项目构建
  • Pipline 项目实战-NodeJS 项目构建
  • 分享一个多语言构建的 Pipeline 小栗子

1. Pipline 的组成

Jenkins Pipeline(或简称为“Pipeline”,大写字母为“P”)是一套插件,支持在Jenkins中实现和集成连续交付管道

一个持续交付(CD)管道是一直到你的用户和客户的过程正从版本控制软件的自动化表达。对软件的每次更改(在源代码管理中提交)都会在发布的过程中经历一个复杂的过程。此过程涉及以可靠且可重复的方式构建软件,以及通过多个测试和部署阶段推进构建的软件(称为“构建”)。

Pipeline提供了一组可扩展的工具,用于通过管道域特定语言(DSL)语法 “作为代码”对简单到复杂的传输管道进行建模 。

Jenkins管道的定义被写入一个文本文件(称为a Jenkinsfile),该文件 又可以提交给项目的源代码控制存储库。这是“作为代码的管道”的基础; 将 CD 管道视为应用程序的一部分,以便像任何其他代码一样进行版本控制和审查。

2. 为什么要使用 pipeline ?

Pipeline 五大特性

代码: Pipeline 以代码的形式实现,通常被检入源代码控制,使团队能够编辑、审查和迭代其 CD 流程。

可持续性:Jenklins 重启或者中断后都不会影响 Pipeline Job。
停顿:Pipeline 可以选择停止并等待任工输入或批准,然后再继续 Pipeline 运行。

多功能:
Pipeline 支持现实世界的复杂 CD 要求,包括 fork/join 子进程,循环和并行执行工作的能力

可扩展:Pipeline 插件支持其 DSL 的自定义扩展以及与其他插件集成的多个选项。

3. Pipeline 的语法

- Declarative 声明式

- Scripted pipeline 脚本式

4. Pipline Declarative 格式

pipeline {
    agent any 
    stages {
        stage('Build') { 
            steps {
                sh 'echo Build'
            }
        }
        stage('Test') { 
            steps {
                sh 'echo Test'
​
            }
        }
        stage('Deploy') { 
            steps {
                sh 'echo Deploy'
            }
        }
    }
}

pipeline:代表整条流水线,包含整条流水线的逻辑。

stages 部分:流水线中多个 stage 的容器。stages 部分至少包含一个stage。

stage 部分:阶段,代表流水线的阶段。每个阶段都必须有名称。本例中,build 就是此阶段的名称。

steps 部分:代表阶段中的一个或多

5. Scripted Pipeline

Scripted Pipeline对语法的要求比较宽松,顶层可以是 node,也可以是stage。node 可以嵌套stage,stage 反过来也可以嵌套 node。典型的脚本式 Pipeline 语法如下:

node {   //node可以指定label 例如 node ('label_name') {}
    stage("Build") {
        sh 'echo Building...'
    }

    stage("Test"){
        sh 'echo Testing...'
    }
}

6. Pipline Declarative 参数详解

......

7. Pipline 支持的指令

......

静待更新,如需要详细资料私信我获取