Jenkins实现CI/CD自动构建和发布步骤
最近更新:2022.11.8
使用Jenkins实现CI/CD.这个虽然是非常简单和基础的功能,但是我用了很长时间才摸着石头过了这趟水.
本文使用的技术为:
Jenkins+Git+Maven+Tomcat
简单来说:
通过Jenkins手动拉取git仓库代码,将已经maven编译好的war包通过刷scp发送(发布)到远程Tomcat服务器上。这里我用的方式是手动的CI/CD,其实我们还可以通过配置gitlab webhook(当gitlab检测到代码变更事件后,触发webhook,发送http请求到配置的webhook的url)实现开发提交代码后,自动触发CI/CD。配置webhook步骤
具体步骤:
假设Jenkins已安装,远程Tomcat也已安装.(具体安装步骤老生常谈了,不再废话,不知道的可以自行搜索我的博客,都有记录的)
我这里是Jenkins/Git/Maven在同一台服务器上,所以下面的内容,需要根据你的具体情况做微调
1.Jenkins服务器安装Git和Maven
git安装步骤: 直接yum install git -y
Maven安装步骤:https://www.cnblogs.com/biaopei/p/11104130.html
获取git和maven的命令所在位置
[root@130-node1 SayHi]# which git /usr/bin/git [root@130-node1 SayHi]# which mvn /usr/local/maven/bin/mvn [root@130-node1 SayHi]#
2.Jenkins配置git和maven
配置git
配置maven
3.Git服务器新建Maven Web项目
我这里是在Jenkins服务器上
#生成Maven web项目库
mvn archetype:generate -DgroupId=com.companyname.automobile -DartifactId=SayHi -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false -DarchetypeCatalog=internal #SayHi是项目名,可自定义,报错的话可以多执行几次 cd SayHi/
#打包生成jar包 mvn clean package
git init #我们需要将这个项目初始化为代码库
git add ./*
git commit -m "add first code"
我们来看一下Maven Web项目结构
[root@130-node1 SayHi]# tree . |-- pom.xml |-- src | `-- main | |-- resources | `-- webapp | |-- index.jsp | `-- WEB-INF | `-- web.xml `-- target |-- classes |-- maven-archiver | `-- pom.properties |-- SayHi | |-- index.jsp | |-- META-INF | `-- WEB-INF | |-- classes | `-- web.xml `-- SayHi.war 12 directories, 7 files [root@130-node1 SayHi]# cat src/main/webapp/index.jsp <html> <body> <h2>Hello World!</h2> </body> </html> [root@130-node1 SayHi]#
我们的Web项目页面内容就是index.jsp.如果CI/CD成功的话,我们可以在远程Tomcat服务器上访问到这个页面
4.Jenkins新增项目任务
选择自由项目即可.
在代码管理这里.我没有使用凭证,直接通过ssh-copy-id免密登陆git服务器实现的.通过帐号密码的话,一直会报错,搞不懂....
配置自动发送到远程tomcat的webapp下
5.开始构建该项目
进入该项目,点击左侧的Build Now
这是我的第三次构建的日志.可以看到,构建成功的提示
6.确认是否发布到Tomcat服务器
以下是我的Tomcat目录,可以看到有一个SayHi.war并且自动进行解压
[root@129-node2 webapps]# pwd /root/apache-tomcat-9.0.34/webapps [root@129-node2 webapps]# ls docs examples host-manager manager ROOT SayHi SayHi.war [root@129-node2 webapps]#
尝试访问远程Tomcat服务器服务
搞定!!!
Jenkins上(即Git仓库)的Maven Web项目成功编译测试并发布到远程Tomcat服务器上