Jenkins-Pipeline简述

devtools/2025/1/23 3:18:45/

一. 什么是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。

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


http://www.ppmy.cn/devtools/152763.html

相关文章

14,c++——继承

目录 一、继承的定义和访问 1,继承的定义 2,类和继承方式 3,访问限定关系 二、基类和派生类对象赋值转换 三、继承的作用域 四、派生类的默认成员函数 五、继承和友元 六、继承和静态成员 七、菱形继承和菱形虚拟继承 1&#xff0…

OpenCV边沿检测(Python版)

边缘检测是图像处理中的一项重要任务,用于找到图像中的边界或边缘。它在计算机视觉、图像处理和模式识别等领域中具有广泛的应用。 边缘可以被定义为图像亮度、颜色或纹理的突变区域。边缘检测算法旨在识别这些变化并将其标记为边缘。边缘检测可以用于分割图像、检测…

GitLab配置免密登录和常用命令

SSH 免密登录 Windows免密登录 删除现有Key 访问目录:C:\Users\Administrator\ .ssh,删除公钥:id_rsa.pub ,私钥:id_rsa 2.生成.ssh 秘钥 运行命令生成.ssh 秘钥目录( ssh-keygen -t rsa -C xxxxxx126.…

kafka 学习笔记3-传统部署Kraft模式集群——筑梦之路

部署kafka 集群规划 一般模式下,元数据在 zookeeper 中,运行时动态选举 controller,由controller 进行 Kafka 集群管理。kraft 模式架构下,不再依赖 zookeeper 集群,而是用三台 controller 节点代替 zookeeper&#…

1. 基于图像的三维重建

1. 基于图像的三维重建 核心概念三维重建中深度图、点云的区别?深度图点云总结 深度图到点云还需要什么步骤?1. **获取相机内参**2. **生成相应的像素坐标**3. **计算三维坐标**4. **构建点云**5. **处理颜色信息(可选)**6. **去除…

MCU中的LSB、MSB和大端模式、小端模式

第一章 LSB和MSB 1.1 最低有效位(Least Significant Bit, LSB) 红外接收器接收了0x45(0100 0101)之后,怎么将这个数据发送给MCU; LSB(least significant bit):最低有效位优先,例如红外通信是以…

启效云低代码:从物联网到数联网的应用延伸

随着物联网(IOT)技术的飞速发展,数据采集与处理成为企业数字化转型的重要一环。物联网平台通过传感器、RFID标签等设备实时采集数据,并利用各种通信协议和存储技术确保数据的准确性和实时性,数据采集和处理为产品的升级…

DM8 SQL 错误 [22000]: 锁超时

问题描述 DM管理工具删除会卡死DBeaver删除会一直加载中使用truncate语句会显示SQL 错误 [22000]: 锁超时使用如下语句也没有用 select a.*,b.NAME,c.SESS_ID, sp_close_session( || c.SESS_ID || ); AS CLOSE_SESSION_COMMAND from v$lock a left join sysobjects b on b.IDa…