前言:
文章是图文教程,内容略长,你可以选择部分需要集成的内容查看
如果是从零部署,建议仔细阅读每一个步骤

开发环境:
docker : 20.10.2
jenkins : 2.303.1
tomcat : 9.0.48
springboot : 2.5.x
java 8

1.Jenkins部署配置

1.1)下载启动jenkins

docker run -u root -d --name myjenkins -p 9090:8080 -p 50000:50000 -v /home/jenkins/conf:/var/jenkins_home  jenkins/jenkins:lts

-u 赋予管理员权限,因为这里需要用到jenkins_home目录挂载,部分没有权限
- d 后台启动
- - name 自定义容器名称
- p 映射端口,9090:jenkins访问端口,50000代理端口号
- v 挂载jenkins目录

1.2)查看容器启动状态

1.3)访问jenkins [http://IP地址:9090/]

1.4)输入管理员密码

获取管理员密码

docker logs 容器id


复制红框密码到jenkins登录页面,点击继续

1.5)安装插件



点击安装推荐的插件,等待几分钟完成即可

1.6)创建jenkins用户


切记邮箱一定要输入正确的邮箱,这里后面邮件通知会使用到
输入信息点击保存并完成。

1.7)实例配置


这里不需要额外配置,直接保存并完成

1.8)开始使用jenkins


到这里配置已初步完成,可以点击开始使用jenkins

1.9)配置全局变量

1.10)配置Java Jdk 、Git、Maven


1.10.1)Java Jdk安装


点击新增安装->去掉自动安装

1.10.2)查看Java Jdk版本

查看运行中的容器
docker ps
进入容器内部
docker exec -it 容器id /bin/bash
查看Jdk路径
echo $JAVA_HOME

例如:/opt/java/openjdk 这个就是我们要的Jdk路径,注意前后不要有空格符号

Jdk配置完成

1.10.3)Git安装


直接使用jenkins默认自带的git即可

1.10.4)Maven安装


点击新增Maven->去掉自动安装

1.10.5)查看Maven版本

步骤跟1.10.2一致,先进入容器
如果没有Maven,则手动安装

 更新资源,以确保能够获取到Mavenapt update安装Mavenapt install maven -y

- y 同意安装

时间可能有点久,静待安装完成即可

安装完成

 查看maven版本mvn -v

/usr/share/maven 复制这个路径到jenkins

Maven配置完成,点击保存即可

1.11)构建一个测试案例



这里以Maven项目为例,自己创建一个SpringBoot Maven项目

1.11.1)项目构建参数配置

1.11.2)配置git项目源


这里注意,一定要使用SSL方式访问你的项目仓库,应为后面会设计出发构建的问题。
如果你的仓库不是公开(pubilc)的,必须配置用户账号密码或者SSL私钥。

1.11.3)配置Git SSL密钥

1.11.3.1)创建SSL,以阿里云效Git为例



具体获取方式,参考阿里文档说明步骤去实现

1.11.3.2)jenkins配置Git SSL凭证




点击确定即可

1.11.4)继续1.11.2的步骤实现项目配置

1.11.5)安装Generic Webhook Trigger插件,触发构建需要



静待安装完成即可

1.11.6)配置用户token,触发构建身份认证




复制token保存,待会要用到

1.11.7)配置构建触发器(故名思义,就是git提交项目到仓库自动构建)


1.11.8)配置构建环境

1.11.9)项目构建(clean install -Dmaven.test.skip=true)

1.11.10)配置构建成功后续操作

1.11.10.1)企业微信通知


1.11.10.2)部署项目到tomcat

1.11.10.2.1)安装Deploy to container插件


静待安装完成即可

1.11.10.2.2)全局配置tomcat用户



这里注意你的war路径和名称,这里不教SpringBoot项目打包
到这里就已经完成项目的构建,接下来需要做tomcat的配置,和Git Webhook的配置,才能完成项目的自动部署和访问我们的项目

2.Docker方式部署tomcat

2.1.1)docker下载运行tomcat

docker run -d --name mytomcat -p 8088:8080 tomcat:9.0.48

-d 后台运行方式
- - name 自定义容器名称
-p 映射端口号

我这里已经下载过了,所以直接运行tomcat,如果是第一次安装tomcat,则等待安装完成会自动启动容器。

2.1.2)进入tomcat容器,配置tomcat设置

查看运行中的容器,找到容器id
docker ps
进入运行中的容器
docker exec -it 容器id /bin/bash

-it 前台运行方式

2.1.3)配置webapps

由于docker安装的tomcat是简易版,所以webapps下面是没有任何文件,这样我们就没有办法访问我们的tomcat页面,所以我们需要把webapps.dist文件复制到webapps目录下**

查看tomcat文件
ls
复制文件到webapps目录下
cp -r webapps.dist/* webapps
进入webapps查看文件
cd webapps
查看webapps文件
ls


修改tomcat/webapps/manager/META-INF/context.xml
这步是为了让你的tomcat用户能够正常访问

tomcat目录下直接进入
cd webapps/manager/META-INF
编辑context.xml文件
vim context.xml


注视掉下图配置

esc-> shift+: ->wq 按照步骤退出并保存配置

webapps配置完成

2.1.4)配置tomcat用户

进入tomcat/conf目录下编辑tomcat-users.xml文件
这里会提示没有vim指令


安装vim指令

先执行更新资源,确保能获取到vim安装包
apt update
执行安装指令
apt install vim -y

安装完成继续前面的操作

进入tomcat/conf目录编辑tomcat-users.xml文件
vim tomcat-users.xml

复制如下配置到tomcat-users最底部

<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<role rolename="manager-jmx"/> <role rolename="manager-script"/>
<role rolename="manager-status"/>
<user username="admin" password="123456" roles="admin-gui,manager-gui,manager-jmx, manager-script,manager-status"/>


esc-> shift+: ->wq 按照步骤退出并保存配置

退出容器

重启容器

查看运行中的容器
docker ps
重启容器
docker restart 容器id


访问tomcat
这里特别注意,查看你8088端口的防火墙是否有开启,服务器的安全组是否有开放8088端口,缺少一个都访问不了你的tomcat


看到这里你的tomcat就部署成功了

3.配置Git Webhook构建触发

3.1)jenkin项目设置


复制这个链接待会需要
http://JENKINS_URL/generic-webhook-trigger/invoke


URL配置格式:
http://jenkins用户名:jenkins用户密码@ip地址:jenkins访问端口号/generic-webhook-trigger/invoke?token=jenkins用户token(步骤1.11.6生成的token)


配置完成点击测试hook,如图即配置成功。

4.项目构建

首次建议先手动点击立即构建,让jenkins先构建项目包
之后只要git push到仓库,会直接触发构建


http://ip地址:tomcat端口号/项目名称/接口

5.邮件通知

5.1)邮箱配置

这里以163邮箱为例

5.1.1)开启服务协议

IMAP/SMTP服务
POP3/SMTP服务

5.1.2)短信认证获取授权码

直接微信扫码发送短信认证

短信认证完成后复制你的授权码待会会使用

邮箱服务协议配置完成

5.2)jenkins配置邮件通知



配置管理员邮箱,即步骤5.1配置的邮箱

5.2.1)配置邮箱参数




没有看到Use SSL,记得点击右下角的高级按钮


邮件模版(我抄的)

Default Content :
<!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>SVN&nbsp;版本:&nbsp;${SVN_REVISION}</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><pre><textarea cols="80" rows="30" readonly="readonly"style="font-family: Courier New">${BUILD_LOG, maxLines=100}<pre></textarea></td></tr></table>
</body>
</html>

设置邮箱触发机制

这里选择两个机制触发邮箱通知,构建成功和失败都发送通知

勾选Enable Debug Mode,用于调试

5.2.2)测试邮箱配置功能




经过测试,如果显示Email was successfully sent,则证明邮箱配置成功,你的邮箱会收到一封邮件

5.3)构建项目完成部署发送邮件通知

5.3.1)创建邮件模版(Email Extension Template)


静待安装完成即可

5.3.2)配置邮件模版

系统管理拉至最底部



设置以上参数信息提交即可,其他参数会从全局配置获取,千万别忘记了邮箱的触发机制

5.3.3)为项目配置邮件模版



选择步骤5.3.2创建的邮件模版保存即可

5.3.4)测试构建发送邮件通知



查看构建日志,出现以上日志则表示邮件发送成功

在邮箱可以查看构建信息,表示邮箱通知完成

6.企业微信机器人通知

6.1)打开插件管理

6.2)安装 Qy Wechat Notification插件



静待安装完成即可

6.3)全局配置企业微信设置



点击保存即可

6.4)创建企业微信机器人


这里不过多赘述,直接创建一个群,在设置页面可以创建机器人

6.5)测试企业微信机器人通知

重复步骤4,构建项目

看到上图即已完成企业微信通知配置

7.可能会遇到的异常处理

7.1)企业微信配置异常

javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
原因是Java Jdk8之后 SSLv3、TLSv1、TLSv1.1协议被禁用了
解决方案:

进入jenkins容器
docker exec -it 容器id /bin/bash
查看JDK安装路径
echo $JAVA_HOME
进入JDK安装目录
cd /opt/java/openjdk
进入JDK配置文件目录
cd conf/security
编辑java.security文件
vim  java.security


找到协议配置的地方,把SSLv3、TLSv1、TLSv1.1删除即可
esc-> shift+: ->wq 按照步骤退出并保存配置
最后重启容器

7.2)发送测试邮件测试配置553异常

com.sun.mail.smtp.SMTPSenderFailedException: 553 authentication is required,163 smtp8,DMCowADnvyh74jFhtV00XA–.15673S2 1630659196

这里主是没有同意smtp认证

勾选使用SMTP认证即可,即时这里报错,也不会影响你正常构建邮件通知

7.3)构建成功邮件没有发送成功

No emails were triggered

这里其实是没有设置邮件构建成功之后的triggered操作,核实步骤5.3.2中的模板配置


安装以上步骤一一实现,不会出现大问题,正常部署完全没有问题。

结束语: 可加微信进学习互帮互助群 Benjamin19950304

docker启动jenkins部署springboot到tomcat(集成:企业微信和邮件通知)相关推荐

  1. SpringBoot+Docker+Git+Jenkins实现简易的持续集成和持续部署

    前言 本篇文章引导你使用Jenkins部署[SpringBoot项目],同时使用Docker和Git实现简单的持续集成和持续部署.(项目地址:sso-merryyou) 流程图如下: push代码到G ...

  2. Jenkins部署SpringBoot应用到远程服务器

    Jenkins部署SpringBoot应用到远程服务器 使用SpringBoot.SpringCloud写后台服务,也引入了当下比较流行的微服务的理念,模块也比较多.为了方便前期测试和后期线上部署更新 ...

  3. docker安装以及部署springboot项目

    一.docker安装 1.安装 Docker Engine-Community 安装最新版本的 Docker Engine-Community 和 containerd,或者转到下一步安装特定版本: ...

  4. 集成企业微信,给企业微信用户发消息

    1.企业微信申请 企业微信官方地址:https://work.weixin.qq.com/ 2.企业微信给用户发消息 申请企业微信以后,我们可以用管理员登录企业微信后台. 2.1.登录企业微信后台管理 ...

  5. java集成企业微信完成授权登录

    java集成企业微信完成授权登录 文章目录 前言 一.背景 二.使用步骤 1.前端请求链接获取Code 2.后端接收Code,请求微信链接完成返回用户信息 总结 前言 java集成企业微信完成授权登录 ...

  6. 从零学习Jenkins部署SpringBoot项目

    前言 之前项目中虽然使用过 Jenkins,但是都只是使用,没有自己搭建过,完整部署一个项目.既然工作中没有独立部署过,那么就只能自己动手实操一番,技多不压身嘛. 一开始是在本机上下载安装 Jenki ...

  7. 只需10分钟!就能用Flask,Docker和Jenkins部署机器学习模型

    在生产环境中部署机器学习模型是数据工程中经常被忽视的领域.网上的大多数教程/博客都侧重于构建.训练和调整机器学习模型.如果它不能用于实际的预测,那么它又有什么用呢? 接下来了解一下有哪些部署选项吧: ...

  8. docker启动jenkins环境

    [注意:]jenkins的docker镜像,需要从官网进入直接获取,其他地方获取到的docker镜像,可能因为Jenkins版本过低,导致后续插件安装失败等问题!!! jenkins基本工作原理 1. ...

  9. Jenkins 教程(一)实现自动化打包及邮件通知

    个人不喜欢装腔作势一堆专业术语放上去,让大多数人看不懂来提升逼格(所谓的专家),所以我简单的介绍jenkins是干啥的.本文使用jenkins,就是让它把git仓库里的东西取出来,然后在jenkins ...

最新文章

  1. python max函数_Python3
  2. 安徽池州贵池中学老师经典语录,我喷了
  3. Java 如何使用radio button保存值
  4. linux下的a.out文件
  5. 1.7 ConcurrentHashMap增删改查
  6. 面向对象程序设计第二次作业(2)
  7. 光电数字直接式中高压电力电能表
  8. mysql my.cnf_如何知道mysql的my.cnf位置
  9. python的多行语句可以使用反斜杠_Python的续行符:反斜杠\
  10. Linux | 如何通过Xshell上传文件到Linux
  11. 包工协议书样本_个人承包协议书范本
  12. Java练习10:输入两个正整数m和n,求其最大公约数和最小公倍数
  13. 台式win10怎么开启无线服务器,无线网卡怎么用? win10系统台式机安装无线网卡的详细教程...
  14. 在家怎么做冰皮月饼 冰皮月饼的做法
  15. 对伪元素::after和::before的理解
  16. 成都千锋培训python就业班
  17. 5000字干货 | 决策树、随机森林、bagging、boosting、Adaboost、GBDT、XGBoost总结
  18. vmdk和img相互转换
  19. STM32CubeMX-5.0.0使用遇到的问题
  20. 路由守卫(登录_vue3)

热门文章

  1. 难道我买了一个假路由器?解决光猫引出的路由器网速很慢的问题
  2. 浅谈 Android 的安全启动和完整性保护
  3. 编译原理实验二 自上而下的语法分析器(算术表达式)
  4. 非线性方程的数值解法:牛顿下山法 python
  5. What?Tomcat-竟然也算中间件?
  6. 终于有人把Vite2讲明白了!
  7. 【LittleVGL】stm32f412-discovery探索板-ft6x06驱动问题
  8. 在eclipse上使用Maven创建动态web项目
  9. 机器学习的R实现(mlr包)
  10. 线下门店管理运营 线下门店数据分析