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。

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

相关推荐
todoitbo9 小时前
用虚拟局域网打通 Win/Mac/Linux 三端:跨设备协作的实用方案
linux·运维·macos
Sylvia-girl10 小时前
Linux下的基本指令1
linux·运维·服务器
CDN36010 小时前
360CDN SDK 游戏盾:轻量化接入 + 强防护实测
运维·游戏·网络安全
Stewie1213810 小时前
Docker 面试题
运维·docker·容器
星纬智联技术11 小时前
GEO E2E 自动化验证测试文章
运维·自动化·geo
jarreyer11 小时前
CentOS 7 无法使用 yum 安装软件
linux·运维·centos
脆皮的饭桶12 小时前
结合使用,实现IPVS的高可用性、利用VRRP Script 实现全能高可用
运维·服务器·网络
RisunJan13 小时前
Linux命令-md5sum(计算和校验文件报文摘要的工具程序)
linux·运维
抹茶咖啡13 小时前
IT运维的365天--042 骚操作之--用IPSec给远程桌面上把锁
运维·网络·it运维
王琦031813 小时前
第三章 linux文件类型和根目录结构
linux·运维·服务器