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'}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/469189.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序自定义tabbar;禁用某个tab;修改某个tab的样式

微信小程序自定义tabbar&#xff1b;禁用某个tab&#xff1b;修改某个tab的样式 原本使用本身的tabBar就已经很舒服了&#xff0c;很合适了的&#xff0c;但是总有一些脑洞大开的产品和客户&#xff0c;给你搞点多样式&#xff0c;没办法牛马就得去做咯&#xff0c;现在就给大…

深入浅出rust内存对齐

在 Rust 中&#xff0c;内存对齐是一个重要的概念&#xff0c;它涉及到数据在内存中的存储方式&#xff0c;以及如何优化内存访问的效率。往往一门语言的内存布局以及对齐方式决定了一门语言的性能&#xff0c;因此学会并深入理解rust中内存布局会让我们写出高性能的rust代码&a…

闯关leetcode——3206. Alternating Groups I

大纲 题目地址内容 解题代码地址 题目 地址 https://leetcode.com/problems/alternating-groups-i/description/ 内容 There is a circle of red and blue tiles. You are given an array of integers colors. The color of tile i is represented by colors[i]: colors[i…

HTML5和CSS3的进阶_HTML5和CSS3的新增特性

目录 HTML5的新特性 1. HTML5 的新特性 1.1 HTML5 新增的语义化标签 1.2 HTML5 新增的多媒体标签 1. 视频 2. 音频 3. 多媒体标签总结 1.3 HTML5 新增的 input 类型 1.4 HTML5 新增的表单属性 required 必须输入信息&#xff0c;不能为空&#xff1b; 重点&#xf…

小马识途营销顾问谈百科词条建立的注意事项

百度百科是百度旗下的产品&#xff0c;它就好比是一本网络百科全书&#xff0c;当我们在网络上搜索某个人物或是企业的时候&#xff0c;如果他们有创建百度百科的话就可以搜出来百度百科词条。词条上展示的荣誉、贡献、社会评价或是企业组织架构等方面可以在无形之中提升人物或…

6、If、While、For、Switch

6、If、While、For、Switch 一、If 1、if-else if (boolean) {代码块 } else if (boolean) {代码块 } else if (boolean) {代码块 } else { // 默认情况代码块 }关于IDEA单元测试控制台不能输入数据的问题&#xff1a; https://blog.csdn.net/m0_72900498/article/details/…

华为路由器DHCP配置

一、单臂路由结构的DHCP 1.启动设备 2.将pc设为DHCP获取IP地址 3.交换机创建vlan并设置模式 [SW1]vlan batch 10 20 [SW1]int g0/0/1 [SW1-GigabitEthernet0/0/1]port link-type trunk [SW1-GigabitEthernet0/0/1]port trunk allow-pass vlan all [SW1-GigabitEthernet0…

【Vue】Vue3.0(十七)Vue 3.0中Pinia的深度使用指南(基于setup语法糖)

上篇文章&#xff1a; 【Vue】Vue3.0&#xff08;十一&#xff09;Vue 3.0 中 computed 计算属性概念、使用及示例 &#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;Vue专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年11月10日15点23分 文章…

element plus el-form自定义验证输入框为纯数字函数

element plus 的el-form 使用自定义验证器&#xff0c;验证纯数字&#xff0c;禁止输入小数、中文、字母、特殊符号。input的maxlength为最大输入多少位长度 效果图 <el-form ref"dataFormRef" :model"dataForm" :rules"dataRules" label-w…

SwiftUI(十)- 列表(分组,折叠)

引言 SwiftUI中的List组件不仅可以用户创建简单的列表&#xff0c;和UITableView一样&#xff0c;它也支持分组和折叠功能&#xff0c;让数据展示更具层次感。通过分组功能&#xff0c;我们可以将数据按照特定的逻辑进行组织&#xff0c;而折叠则为用户提供了更为紧凑的界面体…

链表(Linkedlist)

序言 我们都了解链表是一种数据的存储结构&#xff0c;在Java使用中逻辑与c&#xff0c;c语言数据结构别无二致&#xff0c;但主要由于Java中不存在指针的说法&#xff0c;从而导致在实现过程中的代码不同&#xff0c;所以在学习的过程中我们无需过于担心&#xff0c;逻辑都是…

JS之正则表达式

一、什么是正则表达式 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </…

MySQL数据库:本地部署数据库以及安装彩虹猫【Navicat】

文章目录 一.安装前准备工作1.下载并解压文件2.修复电脑缺失的文件 二.本地部署MySQL1.先解压mysql-8.0.25-winx64.zip&#xff0c;并把文件放到安装需要的位置&#xff0c;再把my.ini文件放到mysql-8.0.25-winx64的根目录2.修改注册表的根目录信息为自己的安装装路径3.进命令符…

11个简单易用的电商购物车设计案例

文章目录 前言正文1.扁平化设计购物车2.无表格布局购物车3.美食购物车4.响应式购物车5.jQuery购物车6.动态价格更新购物车7.标签式滑动购物车8.动态商店与购物车一体化设计9.简约清爽的购物车设计10.基于Vue.js的购物车11.域名购物车 总结 前言 现在的电子商务网站&#xff0c…

Stable Diffusion Web UI - ControlNet 姿势控制 openpose

openpose 是 ControlNet 中常用的控制模式之一。 通过 openpose 可以锁定人物姿势&#xff0c;把姿势信息传递给 Stable Diffusion 扩散模型&#xff0c;让其在扩散生成图片的时候遵照特定的任务姿势。 通过 openpose 能够得到类似如下效果&#xff1a; 同样的姿势&#xff0…

Word2Vec,此向量维度,以及训练数据集单条数据的大小,举例说明;Skip-gram模型实现词嵌入;热编码(One-Hot Encoding)和词向量;

目录 Word2Vec Word2Vec,此向量维度,以及训练数据集单条数据的大小,举例说明 一、Word2Vec的词向量维度 二、训练数据集单条数据的大小 综上所述 热编码(One-Hot Encoding)和词向量 一、表示方式 二、维度与计算效率 三、语义捕捉能力 四、举例说明 Skip-gram模…

大模型预训练+微调大模型;大模型提示/指令模式”(Prompt/Instruct Mode)

目录 大模型发布版本 大模型参数量 预训练+微调大模型 预训练大模型的优势 微调的概念与过程 微调的优势 应用场景与案例 提示/指令模式”(Prompt/Instruct Mode) Prompt模式与Instruct模式的区别与联系 Prompt/Instruct模式的应用优势 应用案例 大模型发布版本 大…

WPF在MVVM模式下怎么实现导航功能

在mvvm的模式下wpf通过frame实现页面跳转_哔哩哔哩_bilibili 视频讲解同步可观看 如下图&#xff0c;我们要实现点击左侧的菜单&#xff0c;在右侧展示不同的页面 实现代码如下&#xff1a; 一、如何从主窗体跳转到页面。 1、在mainwindow.xaml的菜单栏代码里加入如下代码 …

ubuntu 22.04 server 安装 anaconda3

ubuntu 22.04 server 安装 anaconda3 https://www.anaconda.com/download/success Anaconda Installers wget https://repo.anaconda.com/archive/Anaconda3-2024.10-1-Linux-x86_64.sh 其他的是 默认 Executing transaction: done installation finished. Do you wish to…

亚信安全新一代WAF:抵御勒索攻击的坚固防线

近年来&#xff0c;勒索攻击已成为黑客的主要攻击手段。新型勒索攻击事件层出不穷&#xff0c;勒索攻击形势愈发严峻&#xff0c;已经对全球制造、金融、能源、医疗、政府组织等关键领域造成严重危害。如今&#xff0c;勒索攻击手段日趋成熟、攻击目标愈发明确&#xff0c;模式…