Pipeline

来自linux中国网wiki
Evan讨论 | 贡献2021年6月28日 (一) 13:20的版本 →‎是Blue Ocean
跳到导航 跳到搜索

Jenkins Pipeline 简介

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

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

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


官方文档 流水线可以通过以下任一方式来创建:

   通过 Blue Ocean - 在 Blue Ocean 中设置一个流水线项目后,Blue Ocean UI 会帮你编写流水线的 Jenkinsfile 文件并提交到源代码管理系统。
   通过经典 UI - 你可以通过经典 UI 在 Jenkins 中直接输入基本的流水线。
   在源码管理系统中定义 - 你可以手动编写一个 Jenkinsfile 文件,然后提交到项目的源代码管理仓库中。[3]

使用两种方式定义流水线的语法是相同的。尽管 Jenkins 支持在经典 UI 中直接进入流水线,但通常认为最好的实践是在 Jenkinsfile 文件中定义流水线,Jenkins 之后会直接从源代码管理系统加载。

Jenkins Pipeline 支持两种语法



My-pipeline-job01 ->流水线语法    我好像没怎么用 

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

安装pipeline相关插件  全部要显示为Success  pending是不行的


声明式的 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 即可

进阶advance

.jenkins.io/zh/doc/book 流水线入门

jenkins.io 流水线入门

Jenkins 声明式流水线的语法错误检查

Pipeline 语法生成器

是Blue Ocean

https://www.jenkins.io/zh/doc/book/blueocean/

Blue Ocean 重新思考Jenkins的用户体验,从头开始设计Jenkins Pipeline, 但仍然与自由式作业兼容,Blue Ocean减少了混乱而且进一步明确了团队中每个成员 Blue Ocean 的主要特性包括:

   持续交付(CD)Pipeline的 复杂可视化 ,可以让您快速直观地理解管道状态。
   Pipeline 编辑器 - 引导用户通过直观的、可视化的过程来创建Pipeline,从而使Pipeline的创建变得平易近人。
   个性化 以适应团队中每个成员不同角色的需求。
   在需要干预和/或出现问题时 精确定位 。 Blue Ocean 展示 Pipeline中需要关注的地方, 简化异常处理,提高生产力
   本地集成分支和合并请求, 在与GitHub 和 Bitbucket中的其他人协作编码时实现最大程度的开发人员生产力。

简言之:简化复杂可视化,提供更个性直观的界面,可以精准定位构建失败的位置

Jenkins教程(四)安装BlueOcean与Maven构建

see also

Jenkins Pipeline介绍

jenkins从头到尾 目录

Jenkins Pipeline示例

使用 pipeline 实现 monitor 仓库代码的发布

Jenkins pipeline jenkinsfile的两种写作方式声明式和脚本式

基于Jenkins Pipeline自动化部署知道个过程而已


Jenkins + Pipeline 自动化部署项目

Jenkins + Pipeline 构建流水线发布

Jenkins pipeline之声明式的jenkinsfile