jenkins流水线pipeline
创建项目
1. 新建item
并选择pipeline
1.1 和普通项目配置的区别
普通项目配置目录:
pipeline项目目录:
pipeline的两种语法
声明式语法
2. 配置
2.1 流水线配置
2.2 选择声明式
声明式需要添加一个名为Jenkinsfile的文件实现流水线
Jenkinsfile的文件内容:
#声明式语法的pipeline脚本
pipeline{ # 表示声明它是一个pipeline脚本,最顶级的节点agent any # 固定写法 - 表示在哪个节点上面去构建;any表示由jenkins自动分配节点stages{ # 阶段性任务 - 所有的步骤都在这里面stage("拉取脚本"){ # 任务steps{ } # 步骤}stage("执行用例"){ # 任务steps{ } # 步骤}}post{ } # 表示在任务完成之后做的操作 - 如:发送邮件}
上面脚本的大意 -- 声明一个脚本:在哪些节点上要完成哪些阶段性的任务、每个任务里面有哪些步骤、任务完成之后做的操作
脚本式语法(了解)
使用的是Grooxy脚本
通过pipeline从gitee上拉取脚本并执行
添加阶段性任务&步骤
1. 首先有一个项目并提交到gitee仓库
2. 在项目的根目录中添加一个文件,名为Jenkinsfile
3. 在此文件中添加内容
3.1 可参考的语法:
(1)点开项目
(2)点击流水线语法
3.2 生成所需命令
3.3 在项目的Jenkinsfile文件中添加对应命令(这里使用的框架和前面的相同)
4. 将仓库链接添加到配置中
注意:
此处的路径Jenkinsfile文件名是固定的,但是前面可以添加路径,要确保该路径能在git下找到Jenkinsfile文件
5. 同一个任务里面可以添加多个步骤
6. 回放
添加任务完成后的操作(发送邮件)
1. 来到流水线语法
2. 查看post语法
3. 选择“总是发送邮件”并构建
4. 查找发送邮件的操作
5. 填写信息后生成代码
最终结果如下:
pipeline{agent anystages{stage("auto_get_project"){steps{bat 'python PipelineProject/main.py'echo 'abc'}}}post {always {emailext body:'''<html><h1> total testcases: ${TEST_COUNTS,var="total"} </h1><h1> success testcases:${TEST_COUNTS,var="pass"} </h1><h1> fail testcases:${TEST_COUNTS,var="fail"} </h1></html>''',subject: '流水线构建结果邮件通知',to: 'xxxxxxxx@163.com'}}
}
执行后邮件内容如下:
6. 添加操作使执行结果同步到邮件内容
注意:需要allure报告及其目录在gitee上
下面是修改的内容
Jenkinsfile文件:
pipeline{agent anystages{stage("auto_get_project"){steps{bat 'python PipelineProject/main.py'echo 'abc'}}}post {always {junit 'outputs/result.xml'emailext body:'''<html><h1> total testcases: ${TEST_COUNTS,var="total"} </h1><h1> success testcases:${TEST_COUNTS,var="pass"} </h1><h1> fail testcases:${TEST_COUNTS,var="fail"} </h1></html>''',subject: '流水线构建结果邮件通知',to: 'xxxxxxxx@163.com'}}
}
main文件:
import osimport pytestpytest.main(["-vs", "--junitxml=outputs/result.xml"])
os.system(f'allure generate -c -o report temps')
出现乱码的解决方法
1. 打开系统配置
2. 找到全局属性,并添加如下配置
配置三个变量:
变量一:
变量名:JAVA_TOOL_OPTIONS
变量值:-Dfile.encoding=UTF-8
变量二:
变量名:LANG
变量值:zh_CN.UTF-8
变量三:
变量名:PYTHONIOENCODING
变量值:UTF-8
在邮件中发送Allure报告
1. 进入流水线语法搜索allure
添加到如下位置:
pipeline{agent anystages{stage("auto_get_project"){steps{bat 'python PipelineProject/main.py'echo 'abc'}}}post {always {allure includeProperties: false, jdk: '', report: 'report', results: [[path: 'temps']]emailext body:'''<html><h1>Allure报告地址: http://localhost:8080</h1></html>''',subject: '登录即可查看Allure报告',to: 'xxxxxxxx@163.com'}}
}
在邮件中发送HTML报告
在上面的基础上做出如下修改:
pipeline全局变量和环境变量
注:
1. 使用全局变量或环境变量的表达式需要使用双引号,否则会失效。
2. 变量表达式两次最好使用空格隔开
在流水线语法 - 全局变量参考部分可以查看使用方法
env - 环境变量
使用方式:${env.变量名}
currentBuild - 当前构建的流水线的信息
使用方式:${currentBuild.变量名}
举例
使用变量的方式修改邮件标题
${env.JOB_NAME} - 项目名
${currentBuild.number} - 项目第几次构建
${currentBuild.currentResult} - 执行结果
post {always {emailext body: '${FILE,path="PipelineProject/reports/report.html"}',subject: "pipeline名称: ${env.JOB_NAME} ,第 ${currentBuild.number} 次构建, 结果: ${currentBuild.currentResult} ",to: 'xxxxxxxx@163.com'}}
pipeline自定义环境变量
使用environment自定义环境变量
使用时仍然是${env.变量名}
pipeline{agent anyenvironment {pipeline_script_name = "my pipeline object"}stages{stage("auto_get_project"){steps{bat 'python PipelineProject/main.py'echo 'abc'}}}post {always {emailext body: '${FILE,path="PipelineProject/reports/report.html"}',subject: "pipeline名称: ${env.pipeline_script_name} ,第 ${currentBuild.number} 次构建, 结果: ${currentBuild.currentResult} ",to: 'xxxxxxxx@163.com'}}
}
相关文章:

jenkins流水线pipeline
创建项目 1. 新建item 并选择pipeline 1.1 和普通项目配置的区别 普通项目配置目录: pipeline项目目录: pipeline的两种语法 声明式语法 2. 配置 2.1 流水线配置 2.2 选择声明式 声明式需要添加一个名为Jenkinsfile的文件实现流水线 Jenkinsfile的…...

【计网】基于TCP协议的Echo Server程序实现与多版本测试
目录 前言: 1、InitServer类的实现 1.1. 创建流式套接字 1.2. bind 绑定一个固定的网络地址和端口号 1.3.listen监听机制 1.4.完整代码 2. 循环接收接口与服务接口 2.1.accept函数讲解 讲个商场拉客的故事方便我们理解: 2.2.服务接口实现 3.服…...

「QT」几何数据类 之 QVector2D 二维向量类
✨博客主页何曾参静谧的博客📌文章专栏「QT」QT5程序设计📚全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasolid…...

深度学习——权重初始化、评估指标、梯度消失和梯度爆炸
文章目录 🌺深度学习面试八股汇总🌺权重初始化零初始化 (Zero Initialization)随机初始化 (Random Initialization)Xavier 初始化(Glorot 初始化)He 初始化正交初始化(Orthogonal Initialization)预训练模型…...
Rust: 利用 chrono 库实现日期和字符串互相转换
在 Rust 中,日期和字符串之间的转换通常涉及 chrono 库,这是一个功能强大的日期和时间处理库。以下是如何在 Rust 中将日期转换为字符串以及将字符串转换为日期的示例。 首先,你需要在你的 Cargo.toml 文件中添加 chrono 依赖: …...

【IEEE/EI会议】第八届先进电子材料、计算机与软件工程国际学术会议(AEMCSE 2025)
会议通知 会议时间:2025年4月25-27日 会议地点:中国南京 会议官网:www.aemcse.org 会议简介 第八届先进电子材料、计算机与软件工程国际学术会议(AEMCSE 2025)由南京信息工程大学主办,将于2025年4月25日…...
volatile 关键字的作用学习
转自: chatgpt 1.介绍 在 C 中,volatile 关键字的作用是告诉编译器一个变量的值可能在任何时刻被外部因素改变,编译器不能对其进行优化。这对于那些可能由硬件、其他线程或信号处理程序更改的变量特别有用。 当一个变量被声明为 volatile 时ÿ…...

数据字典是什么?和数据库、数据仓库有什么关系?
一、数据字典的定义及作用 数据字典是一种对数据的定义和描述的集合,它包含了数据的名称、类型、长度、取值范围、业务含义、数据来源等详细信息。 数据字典的主要作用如下: 1. 对于数据开发者来说,数据字典包含了关于数据结构和内容的清晰…...

Docker平台搭建方法
Docker平台搭建方法 1.1在VMware中创建两个虚拟机,只需要1个网卡,连接192.168.200.0网络。 虚拟机分配2个CPU,2G内存,60G硬盘,主机名分别为server和client,IP地址分别为192.168.200.137和192.168.200.138。server节点还兼做regis…...
JavaScript数组
目录 1. 基本概念 2. 创建数组对象 2.1 字面量创建 2.2 构造函数创建 2.3 静态方法Array.of() 2.4 静态方法Array.from() 2.5 空槽位 3. 常用实例方法 3.1 修改方法 3.11 push 和 unshift 3.12 shift 和 pop 3.13 fill 3.14 cpoyWithin 3.15 reverse 3.16 sort …...

产品经理如何使用项目管理软件推进复杂项目按时上线
前言 相信很多产品同学或多或少都有过这样的经历:平时没有听到任何项目延期风险,但到了计划时间却迟迟无法提测……评审时没有任何argue,提测后发现开发的功能不是自己想要的……费劲九牛二虎之力终于让项目上线了,然而发现成果达…...

构建基于 DCGM-Exporter, Node exporter,PROMETHEUS 和 GRAFANA 构建算力监控系统
目录 引言工具作用概述DCGM-ExporterNode exporterPROMETHEUSGRAFANA小结 部署单容器DCGM-ExporterNode exporterPROMETHEUSGRAFANANode exporterDCGM-Exporter 多容器Node exporterDCGM-ExporterDocker Compose 参考 引言 本文的是适用对象,是希望通过完全基于Doc…...

第13章 聚合函数
一、聚合函数介绍 实际上 SQL 函数还有一类,叫做聚合(或聚集、分组)函数,它是对一组数据进行汇总的函数,输入的是一组数据的集合,输出的是单个值。(可以是一个字段的数据,也可以是通…...
【计网不挂科】计算机网络期末考试——【选择题&填空题&判断题&简述题】试卷(4)
前言 大家好吖,欢迎来到 YY 滴计算机网络 系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 本博客主要内容,收纳了一部门基本的计算机网络题目,供yy应对期中考试复习。大家可以参考 本章是去答案版本。带答案的版本在下…...
C# 中 LibraryImport 和 DllImport有什么不同
libraryimport 和 dllimport 是两个与动态链接库(DLL)相关的术语,它们在不同的编程语言和上下文中有不同的含义和用途。 在 C# 中,DllImportAttribute 是一个特性,用于指示一个方法声明是作为对非托管 DLL 中函数的 P…...

PDF编辑工具Adobe Acrobat DC 2023安装教程(附安装包)
Adobe Acrobat DC 2023 是 Adobe 公司推出的一款功能强大的 PDF 文档处理软件。它不仅支持创建、编辑和签署 PDF 文件,还提供了丰富的工具来管理和优化这些文件。以下是 Acrobat DC 2023 的一些主要特点: 1.PDF 创建与编辑:用户可以直接从多…...
系动词、表语和主语补足语
系动词、表语和主语补足语 1. The classification of English verbs (英语动词的分类)2. 系动词 (连系动词)2.1. Grammatical function (语法功能) 3. 表语和主语补足语3.1. Predicative expression (表语)3.2. Subject complement (主语补足语) 4. Copula-like words4.1. List…...

【网络安全 | 并发问题】Nginx重试机制与幂等性问题分析
未经许可,不得转载。 文章目录 业务背景Nginx的错误重试机制proxy_next_upstream指令配置重试500状态码非幂等请求的重试问题幂等性和非幂等性请求non_idempotent选项的使用解决方案业务背景 在现代互联网应用中,高可用性(HA)是确保系统稳定性的关键要求之一。为了应对服务…...

Java 详解 接口
文章目录 一、概述1.1、何为接口1.2、接口的定义 二、特点2.1、接口的成员变量2.2、接口的成员方法2.3、接口中不可以含有构造器和代码块2.4、接口不可以实例化对象2.5、接口和类之间使用implements关键字进行连接2.6、当类在重写接口中的方法时,不可以使用默认的访…...
wordpress搬家迁移后怎么修改数据库用户名
在WordPress中修改数据库用户名,你需要更新WordPress的配置文件wp-config.php。以下是步骤和示例代码: 使用FTP客户端或文件管理器登录到你的网站的主机账户。 找到wp-config.php文件,它通常位于WordPress安装的根目录中。 打开wp-config.…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...

C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...

DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...

图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...