Jenkins持续集成CI,持续部署CD,Allure报告集成以及发送电子 邮件

文章目录

      • 一、Jenkins 的简介
      • 二、Jenkins的安装
      • 三、Jenkins 文件夹的作用
      • 四、Jenkins 的应用
        • 新建 job
        • 配置 job
        • jenkins 集成 Allure 报告。
        • jenkins 集成 HTML 的报告
      • 五、Jenkins 发送电子邮件
        • 1)安装插件:Email Extension
        • 2)开启 POP3/SMTP 服务
        • 3)获得邮箱的客户端密码
        • 4)配置邮箱的发件人,SMTP服务器,收件人等信息。
        • 5)在 job 里面配置:构建后的操作
      • 六、Jenkins 定时任务
      • 七、Jenkins 持续部署 CD

一、Jenkins 的简介

它是一个可以扩展的持续集成CI和持续部署CD的平台,它只是平台,主要的运作的是插
件。
主要作用:
持续的监控项目版本的发布。实现持续部署CD
监控外部的定时任务。

二、Jenkins的安装

查看文章: jenkins 持续集成环境从0到1搭建全过程

三、Jenkins 文件夹的作用

  • jobs:构建作业(job)的配置细节,以及运行作业时的产物和数据。
  • logs:日志
  • nodes:节点配置
  • plugins:插件
    • Allure jenkens Plugin 解决allure报告和jenkins集成的插件。
    • HTML publisher 集成HTML报告的插件
    • RobotFrameowrk 集成RF
    • Zentimestamp 集成日期和时间
    • Email Extesion plugin 集成电子邮件
    • Groovy 解决自动化报告样式丢失的插件
    • secrets 存放秘钥
    • updates 存放更新的插件
    • userContent 定制化的内容
    • users 用户信息
    • war 存放web应用程序
    • workspace 默认工作空间。

四、Jenkins 的应用

新建 job

配置 job
    1. 配置自定义的工作空间
      在这里插入图片描述
    1. 构建命令
jenkins 集成 Allure 报告。
    1. 安装 allure 插件
    • Manage Jenkins->Plugins
    • Available Plugins -> 搜索插件并安装
    1. 在【全局工具配置】,设置 Allure
    • Manage Jenkins->Tools
    • Allure Commandline->配置 Allure
    1. 在 job 里面配置:构建后的操作
    • Configuration->Post-build Actions
    • Add post-build actions ->Allure Report
    • Add post-build actions ->Allure Report-> 配置临时文件夹(也就是存放log的文件夹)
      • Advanced -> 配置报告文件夹位置
    1. 配置完成后,重新运行,点击 报告即可查看
jenkins 集成 HTML 的报告
  • 1)安装 HTML publisher 插件

  • 2)配置job里面的【构建后操作】

  • 3)配置【构建】,选择输入一下脚本解决HTML报告样式丢失的问题:
    System.setProperty(“hudson.model.DirectoryBrowserSupport.CSP”,“”)

五、Jenkins 发送电子邮件

1)安装插件:Email Extension
2)开启 POP3/SMTP 服务

3)获得邮箱的客户端密码

4)配置邮箱的发件人,SMTP服务器,收件人等信息。
  • 配置系统管理员的邮箱:Manage Jenkins->System->System Admin e-mail address

    • 填写:和发件人邮箱保持一致
  • 配置发件人信息:Manage Jenkins->System->Extended E-mail Notification

  • 配置收件人信息&邮件的标题和内容:

  • 邮件的服务器和后缀:Manage Jenkins->System->E-mail Notification

  • 邮件参数解释:
      1. Default Content Type
      • 含义:默认邮件内容格式
      • 选项:Plain Text (text/plain) 是纯文本格式,也可按需选 HTML 格式(若支持),决定邮件正文的解析方式
      1. List ID
      • 含义:邮件列表标识
      • 作用:给批量发送的邮件标记统一 ID(类似邮件列表的 “分组名” ),方便收件箱规则识别、归类
      1. Add ‘Precedence: bulk’ E-mail Header
      • 含义:添加 “批量邮件” 头信息
      • 作用:勾选后,邮件头会带 Precedence: bulk ,提示收件箱这是批量发送的邮件,部分邮箱会据此调整拦截策略(如降低进垃圾箱概率)
      1. Default Recipients
      • 含义:默认收件人
      • 用法:填邮箱地址(多个用逗号分隔),作为全局默认收件人,项目级配置未指定时会用这里的地址
      1. Reply To List
      • 含义:回复邮件的目标地址
      • 作用:指定 “回复邮件” 时默认发到哪个邮箱,可设邮件列表地址或统一回复邮箱
      1. Emergency reroute
      • 含义:紧急转发地址
      • 作用:极端情况(如主收件系统故障)下,邮件会转发到这里的地址,保障通知不丢失
      1. Allowed Domains
      • 含义:允许的收件域名
      • 作用:填域名(如 yourcompany.com ),限制只有该域名的邮箱能收邮件,避免误发到外部
      1. Excluded Recipients
      • 含义:排除的收件人
      • 用法:填邮箱地址,即使在默认 / 项目收件人里,这些地址也不会收到邮件(用于临时屏蔽)
      1. Default Subject
      • 含义:默认邮件主题
      • 示例:KaTeX parse error: Expected 'EOF', got '#' at position 22: …T_NAME - Build #̲BUILD_NUMBER - $BUILD_STATUS! 是 Jenkins 变量,自动替换为 项目名、构建编号、构建状态 ,让主题动态体现构建结果
      1. Maximum Attachment Size
      • 含义:最大附件大小
      • 说明:-1 表示不限制大小,也可填数值(如 10 代表 10MB ),控制邮件附件的上限
  • 邮件内容格式参考:
标题:【构建通知】:$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!
内容:
<!DOCTYPE html>    
<html>    
<head>    
<meta charset="UTF-8">    
<title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>    
</head>    <body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"    offset="0">    <table width="95%" cellpadding="0" cellspacing="0"  style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">    <tr>    本邮件由系统自动发出,无需回复!<br/>            各位同事,大家好,以下为${PROJECT_NAME }项目构建信息</br> <td><font color="#CC0000">构建结果 - ${BUILD_STATUS}</font></td>   </tr>    <tr>    <td><br />    <b><font color="#0B610B">构建信息</font></b>    <hr size="2" width="100%" align="center" /></td>    </tr>    <tr>    <td>    <ul>    <li>项目名称 : ${PROJECT_NAME}</li>    <li>构建编号 : 第${BUILD_NUMBER}次构建</li>    <li>触发原因: ${CAUSE}</li>    <li>构建状态: ${BUILD_STATUS}</li>    <li>构建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li>    <li>构建  Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li>    <li>工作目录 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>    <li>项目  Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li>  </ul>    <h4><font color="#0B610B">失败用例</font></h4>
<hr size="2" width="100%" />
$FAILED_TESTS<br/><h4><font color="#0B610B">最近提交(#$SVN_REVISION)</font></h4>
<hr size="2" width="100%" />
<ul>
${CHANGES_SINCE_LAST_SUCCESS, reverse=true, format="%c", changesFormat="<li>%d [%a] %m</li>"}
</ul>
详细提交: <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a><br/></td>    </tr>    </table>    
</body>    
</html>
5)在 job 里面配置:构建后的操作
  • configure->Add post-build action->Editable Email Notification:
  • Andvanced Settings->Triggers->Add Trigger(注意把构建失败才发送的默认配置给去掉再添加)
  • 修改触发的方式,默认是失败触发,改成总是触发 Always:
  • 保存配置,重新运行完成后,便可接收到邮件

六、Jenkins 定时任务

  • configure->Triggers->Build periodically
  • 五星大法:* * * * * [分 时 日 月 年]
  • 比如下图是每天的 11:34 自动触发运行

七、Jenkins 持续部署 CD

  • 手工发布版本:
    开发1.0,代码和数据库导出,部署到测试环境。
    开发2.0,代码和数据库导出,部署到测试环境。
  • 持续部署:
    • configure->Source Code Management:
    • 根据上图提示,配置完项目克隆的 git 仓库地址和拉取分支,下次在 build 项目时,会拉取仓库上对应分支的最新代码,然后再运行,这样便可完成持续部署

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

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

相关文章

算术图片验证码(四则运算)+selenium

一、表达式解析 这里假设已经识别出来表达式&#xff0c;如何识别验证码图片里的表达式&#xff0c;放在下面讲。涉及到的正则表达式的解析放在本篇文章最后面。 import re # 表达式解析&#xff08;支持小数的 -*/ 和中文运算符&#xff09; def parse_math_expression(text)…

使用 Laravel 中的自定义存根简化工作

在开发与外部服务、API 或复杂功能交互的应用程序时&#xff0c;测试几乎总是很困难。简化测试的一种方法是使用存根类。以下是我通常使用它们的方法。 福利简介 存根是接口或类的伪实现&#xff0c;用于模拟真实服务的行为。它们允许您&#xff1a; 无需调用外部服务即可测试…

将 tensorflow keras 训练数据集转换为 Yolo 训练数据集

以 https://www.kaggle.com/datasets/vipoooool/new-plant-diseases-dataset 为例 1. 图像分类数据集文件结构 (例如用于 yolov11n-cls.pt 训练) import os import csv import random from PIL import Image from sklearn.model_selection import train_test_split import s…

排序算法-归并排序与快速排序

归并排序与快速排序 快速排序是利用的递归思想&#xff1a;选取一个基准数&#xff0c;把小于基准数的放左边 大于的放右边直到整个序列有序 。快排分割函数 O(lognn), 空间 :没有额外开辟新的数组但是递归树调用函数会占用栈内存 O(logn) 。 归并排序&#xff1a;在递归返回的…

北大开源音频编辑模型PlayDiffusion,可实现音频局部编辑,比传统 AR 模型的效率高出 50 倍!

北大开源了一个音频编辑模型PlayDiffusion&#xff0c;可以实现类似图片修复(inpaint)的局部编辑功能 - 只需修改音频中的特定片段&#xff0c;而无需重新生成整段音频。此外&#xff0c;它还是一个高性能的 TTS 系统&#xff0c;比传统 AR 模型的效率高出 50 倍。 自回归 Tra…

MyBatis————入门

1&#xff0c;配置相关 我们上一期详细讲了一下使用注解来实现操作数据库的方式&#xff0c;我们今天使用xml来实现&#xff0c;有同学可能有疑问&#xff0c;使用注解挺方便呀&#xff0c;为啥还要注解呀&#xff0c;先来说一下注解我感觉挺麻烦的&#xff0c;但是我们后面要…

【推荐算法】推荐算法演进史:从协同过滤到深度强化学习

推荐算法演进史&#xff1a;从协同过滤到深度强化学习 一、传统推荐时代&#xff1a;协同过滤的奠基&#xff08;1990s-2006&#xff09;1.1 算法背景&#xff1a;信息爆炸的挑战1.2 核心算法&#xff1a;协同过滤1.3 局限性 二、深度学习黎明&#xff1a;神经网络初探&#xf…

Java基于SpringBoot的校园闲置物品交易系统,附源码+文档说明

博主介绍&#xff1a;✌Java老徐、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&…

Ajax Systems公司的核心产品有哪些?

Ajax Systems 是一家专注于家庭安全和智能系统的公司&#xff0c;其核心产品如下3&#xff1a; 入侵保护设备&#xff1a;如 MotionCam Outdoor 无线室外运动探测器&#xff0c;配备内置摄像头和两个红外传感器&#xff0c;可通过预装电池运行长达三年&#xff0c;能在 15 米距…

64、js 中require和import有何区别?

在 JavaScript 中&#xff0c;require 和 import 都是用于模块导入的语法&#xff0c;但它们属于不同的模块系统&#xff0c;具有显著的区别&#xff1a; 1. 模块系统不同 require 属于 CommonJS 模块系统&#xff08;Node.js 默认使用&#xff09;。 语法&#xff1a;const…

Java+Access综合测评系统源码分享:含论文、开题报告、任务书全套资料

JAVAaccess综合测评系统毕业设计 一、系统概述 本系统采用Java Swing开发前端界面&#xff0c;结合Access数据库实现数据存储&#xff0c;专为教育机构打造的综合测评解决方案。系统包含学生管理、题库管理、在线测评、成绩分析四大核心模块&#xff0c;实现了测评流程的全自…

【python】RGB to YUV and YUV to RGB

文章目录 1、YUV2、YUV vs RGB3、RGB to YUV4、YUV to RGB附录——YUV NV12 vs YUV NV21参考1、YUV YUV 颜色空间,又常被称作 YCbCr 颜色空间,是用于数字电视的颜色空间,在 ITU-R BT.601、BT.709、BT.2020 标准中被明确定义,这三种标准分别针对标清、高清、超高清数字电视…

运行示例程序和一些基本操作

欢迎 ----> 示例 --> 选择sample CTRL B 编译代码 CTRL R 运行exe 项目 中 Shadow build 表示是否 编译生成文件和 源码是否放一块 勾上不在同一个地方 已有项目情况下怎么打开项目 方法一: 左键双击 xxx.pro 方法二: 文件菜单里面 选择打开项目

计算机网络第2章(下):物理层传输介质与核心设备全面解析

目录 一、传输介质1.1 传输介质的分类1.2 导向型传输介质1.2.1 双绞线&#xff08;Twisted Pair&#xff09;1.2.2 同轴电缆&#xff08;Coaxial Cable&#xff09;1.2.3 光纤&#xff08;Optical Fiber&#xff09;1.2.4 以太网对有线传输介质的命名规则 1.3 非导向型传输介质…

PHP文件包含漏洞详解:原理、利用与防御

PHP文件包含漏洞详解&#xff1a;原理、利用与防御 什么是文件包含漏洞&#xff1f; 文件包含漏洞是PHP应用程序中常见的安全问题&#xff0c;当开发者使用包含函数引入文件时&#xff0c;如果传入的文件名参数未经严格校验&#xff0c;攻击者就可能利用这个漏洞读取敏感文件…

5.4.2 Spring Boot整合Redis

本次实战主要围绕Spring Boot与Redis的整合展开&#xff0c;首先创建了一个Spring Boot项目&#xff0c;并配置了Redis的相关属性。接着&#xff0c;定义了三个实体类&#xff1a;Address、Family和Person&#xff0c;分别表示地址、家庭成员和个人信息&#xff0c;并使用Index…

java内存模型JMM

Java 内存模型&#xff08;Java Memory Model&#xff0c;JMM&#xff09;定义了 Java 程序中的变量、线程如何和本地内存以及主内存进行交互的规则。它主要涉及到多线程环境下的共享变量可见性、指令重排等问题&#xff0c;是理解并发编程中的关键概念。 核心概念&#xff1a…

配置git命令缩写

以下是 Git 命令缩写的配置方法及常用方案&#xff0c;适用于 Linux/macOS/Windows 系统&#xff1a; &#x1f527; 一、配置方法 1. 命令行设置&#xff08;推荐&#xff09; # 基础命令缩写 git config --global alias.st status git config --global alias.co che…

准确--k8s cgroup问题排查

k8s cgroup问题排查 6月 06 17:20:39 k8s-node01 containerd[1515]: time"2025-06-06T17:20:39.42902033408:00" levelerror msg"StartContainer fo r \"46ae0ef9618b96447a1f28fd2229647fe671e8acbcec02c8c46b37051130c8c4\" failed" error&qu…

Go 中 map 的双值检测写法详解

Go 中 map 的双值检测写法详解 在 Go 中&#xff0c;if char, exists : pairs[s[i]]; exists { 是一种利用 Go 语言特性编写的优雅条件语句&#xff0c;用于检测 map 中是否存在某个键。让我们分解解释这种写法&#xff1a; 语法结构解析 if value, ok : mapVariable[key]; …