当前位置: 首页 > news >正文

四、jenkins自动构建和设置邮箱

一、jenkins自动构建

什么自动构建、有啥用:

  1. 触发方式

    • 代码提交(Git push)

    • 定时任务(如每天凌晨构建)

    • 手动点击等方式(立即执行)

  2. 执行内容

    • 从 Git/SVN 拉取最新代码

    • 运行编译(如 Maven/Gradle)

    • 执行单元测试、代码扫描

    • 生成部署包(如 JAR/WAR/Docker 镜像)

    • 自动部署到测试/生产环境

  3. 核心价值

    • 省时:无需手动操作,提交代码即触发流程。

    • 可靠:避免人为失误,确保每次构建一致。

    • 快速反馈:失败时立即通知,问题早发现早修复。

一句话总结
Jenkins 自动构建 = “代码提交后,全流程自动化处理,直到软件可运行”

二、自动构建方式

注意:版本不同,自动构建按钮的位置有差距,反正找到自动构建进行。

点击项目

 点击配置

方法1:触发远程构建 

设置密码后保存

目前构建是第5次

现在访问jenkins网址+后面的路径和密码试试,能不能自动构建

 方法2:其他项目构建后触发

意思:就是前面有个项目构建了,构建完成后触发我的项目构建,这种适用于有子项目或者项目有关系的。

目前我的项目构建序号是6,现在我执行我前面那个项目“web_demo_liushui”

刷新项目一看确实自动构建了

方法3:定时任务构建

* * * * * :表示分 时 日 月 周,和linux定时任务类似,但不完全一样,到时候直接让deepseek给你生成想要的时间也行,知道大概逻辑即可。

以下是案例:

现在我们设置下时间,保存看看到时间后,构建不

可以看到我设置的是下午6点47分,时间到了后刷新一下,发现构建了

方法4:轮询SCM
轮询SCM,是指定时扫描本地代码仓库的代码是否有变更,如果代码有变更就触发项目构建。 

大概意思:我用的gitlab仓库,他会扫描我的gitlab,如果gitlab变更了,就会执行构建,如果gitlab没更新,那一直不会自动构建。

注意:这次构建触发器,Jenkins会定时扫描本地整个项目的代码,增大系统的开销,不建议使用。

现在我设置一下,设置为2分钟扫描一次gitlab,如果gitlab有变动,给我自动构建。

2分钟过了,一直没构建(以为我没改代码)

现在我idea改代码,提交到gitlab

提交成功后,等待2分钟,刷新项目。

方法5:githook自动触发构建

刚才我们看到在Jenkins的内置构建触发器中,轮询SCM可以实现Gitlab代码更新,项目自动构建,但是该方案的性能不佳。

那有没有更好的方案呢?有的。就是利用Gitlab的webhook发现代码提交或者修改后,gitlab立即触发项目自动构建。

jenkins设置

(1)下载插件:GitLab 、 Gitlab Hook

(注意:新版本jenkins只安装GitLab即可,老版本还得安装Gitlab Hook)

遇到的问题:安装这个插件时,部分安装失败,看报错是已存在部分插件需要先手动跟新下。

插件安装完成后,这里多了一个这种方式的触发器

注意这里有个地址,就是jenkins的项目地址,这个地址要配置到gitlab,下面会说。 

(2)jenkins的全局变量设置

关闭一个东西

 gitlab设置

root登录,开启githook功能,且配置地址

开启githook功能

 

设置项目的发送地址

 

 

添加成功后,测试一下。发现测试通了

 

验证 

修改idea代码,提交,会自动构建

看tomcat项目更新了,没问题

 三、分支构建

例如说我们实际项目中会使用时又uat、sit、生产等环境。

jenkins可以根据设置,选择我们想启动的分支。

jenkins设置

进入项目,添加参数

设置参数名和默认值

 

自带默认值

 

idea设置

 

提交代码,build一下

 

新增一个uat分支

新增一个uat分支

 

创建成功,已经在uat分支了

同时查看gitlab也多了一个uat分支

修改代码,提交到uat分支

 

 build选择uat

看日志,看tomcat已经是uat项目

 

 build选择master

 四、邮箱配置

安装插件

email extension template

配置邮箱

插件安装成功后,进入全局配置

 配置这一块

在配置这一块

在最上面,搜索系统管理员邮箱地址配置上

 

当面倒数第2个图里的那个test config……也可以验证下邮箱是不是通了

验证邮箱配置成功

 

 给项目配置邮件发送

给具体某个项目配置,项目启动成功后,发送邮箱,idea新增文件email.html,内容如下

<!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><td>(本邮件是程序自动下发的,请勿回复!)</td></tr><tr><td><h2><font color="#0000FF">构建结果 - ${BUILD_STATUS}</font></h2></td></tr><tr><td><br /><b><font color="#0B610B">构建信息</font></b><hr size="2" width="100%" align="center" /></td></tr><tr><td><ul><li>项目名称&nbsp;:&nbsp;${PROJECT_NAME}</li><li>构建编号&nbsp;:&nbsp;第${BUILD_NUMBER}次构建</li><li>触发原因:&nbsp;${CAUSE}</li><li>构建日志:&nbsp;<a href="${BUILD_URL}console">${BUILD_URL}console</a></li><li>构建&nbsp;&nbsp;Url&nbsp;:&nbsp;<a href="${BUILD_URL}">${BUILD_URL}</a></li><li>工作目录&nbsp;:&nbsp;<a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li><li>项目&nbsp;&nbsp;Url&nbsp;:&nbsp;<a href="${PROJECT_URL}">${PROJECT_URL}</a></li></ul></td></tr><tr><td><b><font color="#0B610B">Changes Since LastSuccessful Build:</font></b><hr size="2" width="100%" align="center" /></td></tr><tr><td><ul><li>历史变更记录 : <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></li></ul> ${CHANGES_SINCE_LAST_SUCCESS,reverse=true, format="Changes for Build #%n:<br />%c<br />",showPaths=true,changesFormat="<pre>[%a]<br />%m</pre>",pathFormat="&nbsp;&nbsp;&nbsp;&nbsp;%p"}</td></tr><tr><td><b>Failed Test Results</b><hr size="2" width="100%" align="center" /></td></tr><tr><td><prestyle="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">$FAILED_TESTS</pre><br /></td></tr><tr><td><b><font color="#0B610B">构建日志 (最后 100行):</font></b><hr size="2" width="100%" align="center" /></td></tr><tr><td><textarea cols="80" rows="30" readonly="readonly"style="font-family: Courier New">${BUILD_LOG, maxLines=100}</textarea></td></tr>
</table>
</body>
</html>

然后jenkinsfile引用上面的文件

pipeline {agent anystages {stage('pull code') {steps {checkout scmGit(branches: [[name: '*/${branch}']], extensions: [], userRemoteConfigs: [[credentialsId: 'dd118ea3-a9af-414b-9e56-3316395b041f', url: 'http://192.168.157.159:82/testjenkinszu/web_demo.git']])}}stage('build project') {steps {sh 'mvn clean package'}}stage('publis project') {steps {deploy adapters: [tomcat9(credentialsId: '0c67a409-c11f-46a0-ac46-f659c6097b0a', path: '', url: 'http://192.168.157.160:8090')], contextPath: null, war: 'target/*.war'}}}post {always{emailext(subject: '构建通知:${PROJECT_NAME} - Build # ${BUILD_NUMBER} - ${BUILD_STATUS}!',body: '${FILE,path="email.html"}',to:'2311685383@qq.com')}}
}

然后提交到gitlab,build一下,看看有没发邮箱。我这没法,但没报错,方式是这么个方法,没法邮箱也没排查出来,估计某个地方不对。

这个发邮箱生产、测试估计都用不到,用到了在排查吧。 

http://www.dtcms.com/a/267469.html

相关文章:

  • Matplotlib 安装部署与版本兼容问题解决方案(pyCharm)
  • nginx部署发布Vite项目
  • H3C WA6322 AP版本升级
  • 2 大模型高效参数微调;prompt tunning
  • (LeetCode 每日一题) 1394. 找出数组中的幸运数 (哈希表)
  • Vue前端项目接收webSocket信息
  • uniapp 国密sm2加密
  • 国产数据库之达梦DM:破甲成蝶
  • php协程
  • 【内存】Linux 内核优化实战 - net.ipv4.tcp_tw_reuse
  • Spring boot之身份验证和访问控制
  • FreeCAD傻瓜教程-拉簧拉力弹簧的画法及草图的附着位置设定和Part工作台中形体构建器的妙用
  • C#扩展方法全解析:给现有类型插上翅膀的魔法
  • spring中 方法上@Transation实现原理
  • Flink-Source算子状态恢复分析
  • 机器视觉对位中的常见模型与技术原理
  • HTML网页应用打包Android App 完整实践指南
  • 【Project】基于kafka的高可用分布式日志监控与告警系统
  • openstack安装并初始化
  • 智能自主运动体的革命:当AI学会奔跑与协作 ——从单机定位到群体智能的跨越
  • 2025年的前后端一体化CMS框架优选方案
  • 未来趋势:AI与量子计算对服务器安全的影响
  • 博弈论基础-笔记
  • RTX5可以在中断中调用的API
  • 08_容器化与微服务:构建弹性架构
  • Ubuntu 22.04 修改默认 Python 版本为 Python3 笔记
  • Hbase2.6.2集群部署(最新版)
  • spring-initializer
  • OneCode MQTT插件开发实战:基于Paho.Client的物联网通信解决方案
  • python使用fastmcp包编写mcp服务端(mcp server)