Jenkins-Pipeline简述

一. 什么是Jenkins pipeline:

pipeline在jenkins中是一套插件,主要功能在于,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂发布流程。Pipeline的实现方式是一套Groovy DSL,任何发布流程都可以表述为一段Groovy脚本(jenkinsfile),并且Jenkins支持从代码库直接读取脚本。

二. 关于pipeline :

  1. 相关概念:

Step

单一任务,从基础中告诉了Jenkins应该怎么做。例如,要执行shell命令,请make使用以下sh步骤:sh 'make'。当插件扩展Pipeline DSL时,通常意味着插件已经实现了一个新的步骤。

Node

Pipeline执行中的大部分工作都是在一个或多个声明node步骤的上下文中完成的。将工作限制在Node步骤中有两件事情:

通过将项目添加到Jenkins队列来调度要运行的块中包含的步骤。一旦执行器在节点上空闲,步骤就会运行。

创建工作区(特定于该特定Pipeline的目录),可以从源代码控制中检出的文件完成工作。

根据您的Jenkins配置,某些工作空间在一段时间不活动后可能无法自动清除。

Stage

stage是定义整个Pipeline的概念上不同子集的一个步骤,例如:"Build","Test"和"Deploy",许多插件用于可视化或呈现Jenkins Pipeline状态/进度。

pipeline 优势:

通过写代码的形式配置Project,且Jenkins中内置了常用的steps。

实现构建步骤代码化、构建过程视图化。

三. Jenkinsfile 定义格式(eg):

复制代码
pipeline {
    agent {              #agent 在哪个node中执行相关任务(默认master),通过label和node上的label进行匹配
         label 'test'
    } 

    stages {             
        stage('Build') {   #stage:组成整个pipeline的阶段(自定义功能切分)
            steps {        #steps: 描述stage中的小步骤,同一个stage中的steps可以并行
                sh 'make'  #sh:执行指定的shell命令(make)
            }
        }
        stage('Sanity check') {
             steps {
                  input "Does the staging environment check?"   #input:手动确认,才会执行后续环节
             }
        }
        stage('Test'){
            steps {
                sh 'make check'
                junit 'reports/**/*.xml' #junit: JUnit plugin插件提供的pipeline步骤,用于汇总测试报告 
            }
        }
        stage('Deploy') {
            steps {
                sh 'make publish'
            }
        }
    }
}

四. pipeline, 流程:

五. pipeline 自动生成代码片段:

Pipeline配有内置的文档功能,可以更轻松地创建不同复杂性的Pipeline。根据Jenkins实例中安装的插件自动生成和更新内置文档。

内置的"Snippet Generator"实用程序有助于为单个步骤创建一些代码,发现插件提供的新步骤,或为特定步骤尝试不同的参数。

如下: 自动生成发邮件的stage:

六. pipeline 全局变量:

除了代码片段生成器之外,Pipeline还提供了一个内置的" 全局变量引用"。像Snippet Generator一样,它也是由插件动态填充的。与代码段生成器不同的是,全局变量引用仅包含Pipeline提供的变量的文档,这些变量可用于Pipeline。

pipeline默认变量为:

复制代码
ENV
    脚本化Pipeline可访问的环境变量,例如: env.PATH或env.BUILD_ID。请参阅内置的全局变量参考 ,以获取管道中可用的完整和最新的环境变量列表。

PARAMS
    将为Pipeline定义的所有参数公开为只读 地图,例如params.MY_PARAM_NAME。

currentBuild
    可用于发现有关当前正在执行的Pipeline信息,与如属性currentBuild.result,currentBuild.displayName等等请教内置的全局变量引用 了一个完整的,而且是最新的,可用的属性列表currentBuild。

详细情况可通过自己部署的服务页面查看。

相关推荐
宇钶宇夕11 分钟前
西门子 S7-200 SMART PLC 实现星三角降压启动控制:原理、案例与完整程序
运维·自动化
小薛博客30 分钟前
22、Jenkins容器化部署Java应用
java·运维·jenkins
ZLRRLZ31 分钟前
【Docker】Docker基础
运维·docker·容器
ajassi200031 分钟前
linux C 语言开发 (四) linux系统常用命令
linux·运维·服务器
荣光波比1 小时前
Shell 秘典(卷十)—— 服务器资源自动化监控脚本的设计与实现
运维·服务器·自动化·云计算
wangjialelele2 小时前
Linux匿名管道和命名管道以及共享内存
linux·运维·网络
我命由我123452 小时前
Photoshop - Photoshop 创建图层蒙版
运维·学习·ui·课程设计·设计·ps·美工
禁默2 小时前
Linux 之从硬件硬盘到文件系统的全面过渡
linux·运维·服务器
☆璇3 小时前
【Linux】Linux环境基础开发工具使用
linux·运维·服务器
鹿鸣天涯3 小时前
CentOS系统停服,系统迁移Ubuntu LTS
linux·运维·centos