SpringBoot+Jenkins+Github+Docker+Maven持续集成CI与持续部署CD全自动化部署

简介: 我们采用tomcat运行war包的这种方式,先来到官网下载war包:https://www.jenkins.io/download/然后把war包上传到tomcat的webapps里,自动就解压运行了,访问页面,然后查看并输入密码:cat /root/.jenkins/secrets/initialAdminPassword

1 准备各种环境


1.1 安装jenkins

我们采用tomcat运行war包的这种方式,先来到官网下载war包:https://www.jenkins.io/download/

然后把war包上传到tomcat的webapps里,自动就解压运行了,访问页面,然后查看并输入密码:

cat /root/.jenkins/secrets/initialAdminPassword

然后点击推荐安装,进入安装插件的页面:20201003211922711.png


下载完成后注册个用户即可。

20201003212813541.png


1.2 安装git和maven

yum -y install git

yum -y install maven

都学到jenkins了,java环境相信应该都是有的,这里不在阐述。


1.3 创建SpringBoot项目

随便写一个接口就行,然后进行代码推送和仓库创建。

20201003230113243.png


1.4 配置密钥和webhook

为了能访问仓库,得配置密钥,也可以用用户名密码(但是我添加后下拉框还是没有。。。只能用密钥了),把密钥复制出去保存好!!!

20201003233444719.png


为了让项目每次push时触发自动部署,需要来到这里配置:

20201003231220131.png


1.5 来到jenkins配置访问密钥

20201003234138663.png


这页内容较多,github在中间靠下点位置,输入刚才的密钥添加

20201003234435587.png


然后测试一下连接是否成功

20201003234258191.png


2 开始进入主题


2.1 创建任务

名称随意,选择Freestyle project。

20201003234705557.png


配置源码管理,选择Git

20201003235303509.png


配置触发器:

2020100323575286.png


配置执行脚本:


clean package -DskipTests

BUILD_ID=DONTKILLME
#!/bin/bash
# find jar
echo `pwd`
cd ./target
FILENAME=$(find -name springboot_jenkins**.jar)
echo $FILENAME
JARNAME=${FILENAME##*/}
# stop previous service
PID=$(ps -ef | grep $JARNAME | grep -v grep | awk '{ print $2 }')
if [ -z "$PID" ]
then
  echo $JARNAME is already stopped
else
  echo kill $PID
  kill -9 $PID
fi
# cp jar to /root and start service
cd /root
cp /root/.jenkins/workspace/springboot_jenkins/target/$JARNAME .
nohup java -jar $JARNAME > springboot_jenkins.log &
# make sure the service had started
ps -ef | grep springboot_jenkins


20201004005950286.png



保存后,点击立即构建(maven建议换成阿里云镜像,settings.xml在这里:/usr/share/maven/conf):

2020100400175999.png



然后就打包成功了,但是还是访问不了,因为8080端口被tomcat占用了,项目并没有启动成功,现在去改改端口,顺便也能测试下push后的自动部署是否生效:

20201004010156255.png


经过测试,push第一次没效果:

20201004012530182.png


后来也没咋搞,最后次终于行了:

20201004012618326.png


试了试效果,还是很快的,一分钟就完事了:

image.png



到这里终于结束了,鼓捣了几小时,可见jenkins的强大之处!


3 使用docker方式启动

创建三个文件:

2020100410302368.png


dockerfile用于创建镜像:

#基于jdk8镜像进行构建,创建的镜像已经配置好java环境
FROM openjdk:8-jdk-alpine
#配置个变量记录jar的名称,方便修改
ARG JAR_FILE=springboot_jenkins-0.0.1-SNAPSHOT.jar
#在镜像中创建一个工作目录
run mkdir /springboot_worker
#将jar文件复制到工作目录中
add /target/${JAR_FILE} /springboot_worker
#暴露镜像的端口8989,其他端口不开放
expose 8989
#启动项目: java -jar /springboot_worker/springboot_jenkins-0.0.1-SNAPSHOT.jar
CMD ["java","-jar","/springboot_worker/springboot_jenkins-0.0.1-SNAPSHOT.jar"]


加入两个脚本,build.sh和run.sh,其实写一个也行,或者直接在构建那边的执行shell里写都行。


build.sh:

# 打包项目这个在构建配置那边配置了调用顶层Maven目标就不用再写了,不然就打包两次了(虽然不会错)
# mvn package -DskipTests
# 先删除上次创建的
docker rmi -f baikunlong.top/springboot_jenkins:1.0
# 创建镜像,最后个.是指使用当前目录下文件(dockerfile)
docker build -t baikunlong.top/springboot_jenkins:1.0 .
# 查看当前有哪些镜像
docker images


run.sh

# 停止容器
docker stop springboot_jenkins_8989
# 删除容器
docker rm -f springboot_jenkins_8989
# 创建容器
docker run -d --name springboot_jenkins_8989 -p 8989:8989 baikunlong.top/springboot_jenkins:1.0
# 查看docker进程
docker ps -a


如果写成脚本文件,需要在这里加入修改权限和执行代码,不然直接把上面的代码复制到文本框里也行:

20201004102837416.png


然后去推送代码,看看构建信息:

20201004103224662.png


因为上边第二节使用了非docker方式启动过这个项目,端口被占用了,先去杀掉:

2020100410370823.png


然后再随便改改代码,推送试试,应该就正常启动了:

20201004105842855.png


看看文件到底放在哪里去了:

20201004105733852.png

目录
相关文章
|
存储 文字识别 自然语言处理
通义大模型在文档自动化处理中的高效部署指南(OCR集成与批量处理优化)
本文深入探讨了通义大模型在文档自动化处理中的应用,重点解决传统OCR识别精度低、效率瓶颈等问题。通过多模态编码与跨模态融合技术,通义大模型实现了高精度的文本检测与版面分析。文章详细介绍了OCR集成流程、批量处理优化策略及实战案例,展示了动态批处理和分布式架构带来的性能提升。实验结果表明,优化后系统处理速度可达210页/分钟,准确率达96.8%,单文档延迟降至0.3秒,为文档处理领域提供了高效解决方案。
1199 1
|
XML jenkins 机器人
JMeter+Ant+Jenkins实现接口自动化测试持续集成
本文介绍了如何使用Ant生成JMeter接口测试报告,并集成到Jenkins中实现自动化测试。内容涵盖Ant与JMeter环境配置、build.xml文件设置、测试执行及报告生成,同时包括Jenkins插件安装、项目配置和钉钉消息通知的集成,帮助实现持续测试与结果可视化。
1360 0
|
人工智能 Kubernetes jenkins
容器化AI模型的持续集成与持续交付(CI/CD):自动化模型更新与部署
在前几篇文章中,我们探讨了容器化AI模型的部署、监控、弹性伸缩及安全防护。为加速模型迭代以适应新数据和业务需求,需实现容器化AI模型的持续集成与持续交付(CI/CD)。CI/CD通过自动化构建、测试和部署流程,提高模型更新速度和质量,降低部署风险,增强团队协作。使用Jenkins和Kubernetes可构建高效CI/CD流水线,自动化模型开发和部署,确保环境一致性并提升整体效率。
|
存储 Kubernetes 监控
Docker与Kubernetes集成挑战及方案
面对这些挑战,并不存在一键解决方案。如同搭建灌溉系统需要考虑多种因素,集成Docker与Kubernetes也需要深思熟虑的规划、相当的技术知识和不断的调试。只有这样,才能建立起一个稳定、健康、高效的Docker-Kubernetes生态,让你的应用像花园中的植物一样繁荣生长。
483 63
|
11月前
|
Java 测试技术 API
自动化测试工具集成及实践
自动化测试用例的覆盖度及关键点最佳实践、自动化测试工具、集成方法、自动化脚本编写等(兼容多语言(Java、Python、Go、C++、C#等)、多框架(Spring、React、Vue等))
819 6
|
Web App开发 开发框架 .NET
Playwright 自动化测试系列(6)| 第三阶段:测试框架集成​指南:参数化测试 + 多浏览器并行执行
Pytest 与 Playwright 集成可提升自动化测试效率,支持参数化测试、多浏览器并行执行及统一报告生成。通过数据驱动、Fixture 管理和并行优化,显著增强测试覆盖率与执行速度,适用于复杂 Web 应用测试场景。
|
测试技术 API C++
Playwright 自动化测试系列(7)| 第三阶段:测试框架集成​​Page Object 模式
本课程详解Playwright测试框架中的Page Object模式,通过电商登录-下单实战演示PO架构设计与高级技巧,结合Pytest实现多用户测试。重点解析PO模式提升代码复用性、降低维护成本的核心价值,并提供常见问题解决方案,助力构建高可维护性的自动化测试体系。
|
人工智能 API 开发工具
GitHub官方开源MCP服务!GitHub MCP Server:无缝集成GitHub API,实现Git流程完全自动化
GitHub MCP Server是基于Model Context Protocol的服务器工具,提供与GitHub API的无缝集成,支持自动化处理问题、Pull Request和仓库管理等功能。
3677 2
GitHub官方开源MCP服务!GitHub MCP Server:无缝集成GitHub API,实现Git流程完全自动化
|
监控 jenkins Shell
jenkins结合gitlab实现CI(持续集成)
通过本文的介绍,我们详细了解了如何结合Jenkins和GitLab实现持续集成。从环境准备、插件配置到Pipeline任务创建和CI流程监控,每一步都提供了详细的操作步骤和示例代码。希望本文能帮助开发者快速搭建起高效的CI系统,提高项目开发效率和代码质量。
1852 9
|
安全 持续交付 云计算
课时5:阿里云容器服务:最原生的集成Docker和云服务
阿里云容器服务以服务化形式构建容器基础设施,大幅提升开发效率,简化应用部署流程。通过Docker容器和DevOps工具(如Jenkins),实现自动化部署与迭代,优化企业内部复杂部署问题。该服务支持GPU调度、混合云架构无缝迁移,并与阿里云产品体系无缝集成,提供安全防护、网络负载均衡等多重功能支持。凭借微服务架构,帮助企业突破业务瓶颈,提高资源利用率,轻松应对海量流量。
554 0
课时5:阿里云容器服务:最原生的集成Docker和云服务

热门文章

最新文章