【Jenkins】pipeline基本使用
目录
一、pipeline
二、创建pipeline项目
1、安装pipeline插件
2、创建pipeline项目
三、pipeline语法
1、pipeline组成
2、agent:指定流水线的执行位置,流水线中每个阶段都必须在某个地方执行
3、stage:阶段,代表流水线的阶段,每个阶段都必须要有名称,且各个名称不能重名
4、stages:stage的集合,stages部分至少包含一个stage
5、steps:代表stage阶段中的一个或者多个步骤,steps部分至少包含一个步骤
2、pipeline其他指令
1、post:包含的是在整个pipeline或stage完成后的附加步骤
2、environment:用于设置环境变量,可定义在stage或pipeline部分,环境变量可以设置为全局的,也可以设置为阶段级别(stage)的
3、tools:可定义在pipeline或stage部分,配置我们指定的工具,并将其加入到PATH变量中(工具名称必须在Jenkins的全局工具配置中存在)
4、options:用于配置Jenkins pipeline本身的选项,options指令可以定义在stage或pipeline部分
5、parameters:在构建前定义参数化构建,支持booleanParam, choice, credentials, fifile, text,password, string等参数类型
6、triggers:定义执行pipeline的触发器
一、pipeline
用户可以在一个 Jenkinsfile 中快速实现一个项目的从构建、测试以及到发布的完整流程,灵活方便地实现持续交付,并且可以保存和管理这个Jenkinsfile的定义。
从Jenkins V2.0版本开始,Pipeline是Jenkins2.X的最核心的特性,帮助Jenkins实现从CI到CD与DevOps的转变。
【自由风格任务】对比【流水线】
| Freestyle Jobs | Pipeline |
|---|---|
| 通过UI页面配置 | 通过代码配置(groovy开发的,基于java的脚本语言) |
| 配置变化不能追溯 | 可以通过SCM(代码版本管理)追溯 |
| 迁移需要重新创建任务 | 方便任务配置迁移 |
| 每个任务对应每个阶段(构建、测试、发布) | 单个任务中完成所有阶段的编排 |
二、创建pipeline项目
1、安装pipeline插件
2、创建pipeline项目

三、pipeline语法
Jenkins Pipeline通常会写入到一个文本文件中(称为Jenkinsfile),该文件可以通过SCM(代码版本管理)系统管理(比如从Git上拉取脚本)
-
脚本式(Scripted Pipeline)—— 比如一些if判断等逻辑,脚本式里面不能包含声明式
-
声明式(Declarative Pipeline)—— 一般用这个比较多,官方也比较推荐,声明式里面可以包含脚本式,更简单更加结构化的语法,官网推荐使用
1、pipeline组成
基本结构:以下每一部分都是必须的,少一个Jenkins都会报错
pipeline {agent any //表示在哪个节点运行:任意stages {stage('Hello') { //名字各不相同steps {echo 'Hello World' //具体要做的事情}}stage('Hello1') {steps {echo 'Hello World1'}}}
}
1、pipeline:代表整条流水线,包含整条流水线的逻辑
2、agent:指定流水线的执行位置,流水线中每个阶段都必须在某个地方执行
-
none : 当在pipeline块的顶层使用none时,将不会为整个Pipeline运行分配全局agent ,每个stage部分将需要包含其自己的agent部分
-
any : 在任何可用的agent 上执行Pipeline或stage
-
label : 指定具体的 Jenkins Slave Node,也可以单独指定Stage的执行环境
3、stage:阶段,代表流水线的阶段,每个阶段都必须要有名称,且各个名称不能重名
4、stages:stage的集合,stages部分至少包含一个stage
5、steps:代表stage阶段中的一个或者多个步骤,steps部分至少包含一个步骤
2、pipeline其他指令
1、post:包含的是在整个pipeline或stage完成后的附加步骤
-
always:无论pipeiline运行的完成状态如何都会执行这段代码
-
changes:只有当前pipeline运行的完成状态与先前完成的pipeline的状态不同时,才会执行
-
failure:当前完成状态为失败时执行
-
success:当前完成状态为成功时执行
-
unstable:当前完成状态为不稳定时执行(测试失败/代码违规问题)
-
aborted:当流水线被手动终止时
post{always { echo 'will always execute' }
}
2、environment:用于设置环境变量,可定义在stage或pipeline部分,环境变量可以设置为全局的,也可以设置为阶段级别(stage)的
environment { aaa = 'bbb' }//定义环境变量 ${env.JOB_NAME} //访问Jenkins内置变量 ${env.aaa} //访问自定义变量
3、tools:可定义在pipeline或stage部分,配置我们指定的工具,并将其加入到PATH变量中(工具名称必须在Jenkins的全局工具配置中存在)
tools { maven 'maven3.6.1'}
4、options:用于配置Jenkins pipeline本身的选项,options指令可以定义在stage或pipeline部分
options{ buildDiscarder(logRotator(numToKeepStr:'3')) //保存最近历史构建记录的数量 timeout(time:1,unit:'HOURS')//job执行的超时时间 disableConcurrentBuilds()//禁止job同时执行 retry(3)//失败重试次数 }
5、parameters:在构建前定义参数化构建,支持booleanParam, choice, credentials, fifile, text,password, string等参数类型
parameters{ choice(name:'environ',choices:'test\ndev\nstg', description:'请选择测试环境 dev? test? stg?')string(name:'version',defaultValue:'0.0.0',description:'当前构建版本号')
}${params.environ}//通过 params访问对应参数
6、triggers:定义执行pipeline的触发器
triggers { cron('0 19 * * 1-5') pollSCM('0 */2 * * 1-5')
}
相关文章:
【Jenkins】pipeline基本使用
目录 一、pipeline 二、创建pipeline项目 1、安装pipeline插件 2、创建pipeline项目 三、pipeline语法 1、pipeline组成 2、agent:指定流水线的执行位置,流水线中每个阶段都必须在某个地方执行 3、stage:阶段,代表流水线的…...
Bytebase 签约 Vianova,助力欧洲城市交通智能平台中 Snowflake 和 PG 的变更自动化及版本控制
在数字化发展的浪潮中,自动化数据库变更管理成为提升产品上线效率、降低人为失误风险的关键工具,同时促进流程的一致性与标准化,确保合规性和变更的可追溯性。近日,数据库 DevOps 团队协同管理工具 Bytebase 签约欧洲交通数据管理…...
SpringBoot 事务管理Transactional 数据回滚 数据一致性
介绍 SpringBoot当中的事物他保证了一致性,要么全部一起成功(提交),要么一起失败,失败(回滚)后数据会回到当初的样子,是一组操作的集合。 事物类型 开启事物提交事物回滚事物 案…...
vue使用pdf.js实现在线查看pdf文件
需求:有一个列表页,用户点击查看,弹层展示后台接口返回的pdf内容(不是文件、地址之类的,乱码的pdf铭文(二进制文件流)) 1、pdf.js安装 npm install --save vue-pdf2、正文代码 <template><div><el-table :data&q…...
java---查找算法(二分查找,插值查找,斐波那契[黄金分割查找] )-----详解 (ᕑᗢᓫ∗)˒
目录 一. 二分查找(递归): 代码详解: 运行结果: 二分查找优化: 优化代码: 运行结果(返回对应查找数字的下标集合): 编辑 二分查找(非递归…...
鸿蒙应用/元服务开发-窗口(Stage模型)设置悬浮窗
一、设置悬浮窗说明 悬浮窗可以在已有的任务基础上,创建一个始终在前台显示的窗口。即使创建悬浮窗的任务退至后台,悬浮窗仍然可以在前台显示。通常悬浮窗位于所有应用窗口之上;开发者可以创建悬浮窗,并对悬浮窗进行属性设置等操…...
springboot集成easypoi导出多sheet页
pom文件 <dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-base</artifactId><version>4.1.0</version> </dependency> 导出模板: 后端代码示例: /*** 导出加油卡进便利店大额审批列…...
自己动手打包element UI官方手册文档教程
经常用element ui朋友开发的比较郁闷,官方文档网基本上都是打不开的, 官方:https://element.eleme.io/ 一直打不开,分析下是里面用的cdn链接ssl证书无效。 就想着自己搭建一个element UI文档 自己搭建的: Element文档网…...
《计算机网络简易速速上手小册》第5章:无线网络和移动通信(2024 最新版)
5.1 WLAN的工作原理 - 揭秘无线局域网络的魔法 5.1.1 基础知识 无线局域网络(WLAN)允许设备通过无线方式连接到一个局部区域网络,主要基于IEEE 802.11标准,俗称Wi-Fi。WLAN的核心是无线路由器,它不仅充当着网络中各设…...
2024PMP考试新考纲-近年PMP真题练一练和很详细解析(3)
今天华研荟继续为您分享和解析PMP真题,一方面让大家感受实际的PMP考试和出题形式,另一方面是通过较详细的解题思路和知识讲解帮助大家最后一个多月有效备考,一次性3A通过2024年PMP考试。 2024年PMP考试新考纲-近年真题随机练一练 (注&#x…...
java SpringBoot2.7整合Elasticsearch(ES)7 进行文档增删查改
首先 我们在 ES中加一个 books 索引 且带有IK分词器的索引 首先 pom.xml导入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency>applicatio…...
动态内存管理(2)
文章目录 4. 几个经典的笔试题4.1 题目14.2 题目24.3 题目34.4 题目4 5. C/C程序的内存开辟6. 动态通讯录7. 柔性数组7.1 柔性数组的特点7.2 柔性数组的使用7.3 柔性数组的优势 4. 几个经典的笔试题 4.1 题目1 #include <stdio.h> #include <stdlib.h> #include …...
使用 git 上传文件时,运行 命令 git pull origin 时未成功,出现报错信息
项目场景: 背景: 使用 git 上传文件时,运行 命令 git pull origin 时未成功,出现报错信息 问题描述 问题: $ git pull origin print --allow-unrelated-histories error: Pulling is not possible because you hav…...
Linux文件编译
目录 一、GCC编译 1.直接编译 2.分步编译 预处理: 编译: 汇编: 链接: 3.多文件编译 4.G 二、Make 1.概述 2.使用步骤 3.makefile创建规则 3.1一个基本规则 3.2两个常用函数 4.示例文件 三、GDB 示例:…...
homeword_day1
第一章 命名空间 一.选择题 1、编写C程序一般需经过的几个步骤依次是( B ) A. 编辑、调试、编译、连接 B. 编辑、编译、连接、运行 C. 编译、调试、编辑、连接 D. 编译、编辑、连接、运行 2、所谓数据封装就是将一组数据和与这组数据…...
ChatGPT论文指南|ChatGPT论文写作过程中6个润色与查重提示词
论文完成初稿之后,一般情况下,宝子们还需要找专家给我们提出评审意见。找专家评审其实并不容易,即使对老师来说,找人评审论文也是一件苦活。我们这个时候可以通过文字提示让 ChatGPT充当我们的评审专家,为论文提出问题…...
论文阅读:Learning Lens Blur Fields
这篇文章是对镜头模糊场进行表征学习的研究,镜头的模糊场也就是镜头的 PSF 分布,镜头的 PSF 与物距,焦距,光学系统本身的像差都有关系,实际的 PSF 分布是非常复杂而且数量也很多,这篇文章提出用一个神经网络…...
SpringBoot整合Knife4j接口文档生成工具
一个好的项目,接口文档是非常重要的,除了能帮助前端和后端开发人员更快地协作完成开发任务,接口文档还能用来生成资源权限,对权限访问控制的实现有很大的帮助。 这篇文章介绍一下企业中常用的接口文档工具Knife4j(基于…...
爬虫(三)
1.JS逆向实战破解X-Bogus值 X-Bogus:以DFS开头,总长28位 答案是X-Bogus,因为会把负载里面所有的值打包生成X-Boogus 1.1 找X-Bogus加密位置(请求堆栈) 1.1.1 绝招加高级断点(日志断点) 日志断点看有没有X-B值 日志…...
03 动力云客项目之登录功能后端实现
1 准备工作 1.1 创建项目 使用Spring initializr初始化项目 老师讲的是3.2.0, 但小版本之间问题应该不大. 1.2 项目结构 根据阿里巴巴Java开发手册确定项目结构 1.3 分层领域模型 【参考】分层领域模型规约: • DO(Data Object)&am…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...
NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
HashMap中的put方法执行流程(流程图)
1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...
HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...
Ubuntu系统复制(U盘-电脑硬盘)
所需环境 电脑自带硬盘:1块 (1T) U盘1:Ubuntu系统引导盘(用于“U盘2”复制到“电脑自带硬盘”) U盘2:Ubuntu系统盘(1T,用于被复制) !!!建议“电脑…...
小木的算法日记-多叉树的递归/层序遍历
🌲 从二叉树到森林:一文彻底搞懂多叉树遍历的艺术 🚀 引言 你好,未来的算法大神! 在数据结构的世界里,“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的,它…...
goreplay
1.github地址 https://github.com/buger/goreplay 2.简单介绍 GoReplay 是一个开源的网络监控工具,可以记录用户的实时流量并将其用于镜像、负载测试、监控和详细分析。 3.出现背景 随着应用程序的增长,测试它所需的工作量也会呈指数级增长。GoRepl…...
游戏开发中常见的战斗数值英文缩写对照表
游戏开发中常见的战斗数值英文缩写对照表 基础属性(Basic Attributes) 缩写英文全称中文释义常见使用场景HPHit Points / Health Points生命值角色生存状态MPMana Points / Magic Points魔法值技能释放资源SPStamina Points体力值动作消耗资源APAction…...
