Jenkins实现CICD之Java基于Maven源码编译并部署应用

                                              作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

目录

一.gitlab仓库中准备Java代码

1 新建gitlab项目

如上图所示,我们可以新建项目,创建成功之后,如下图所示。

2 将代码推送到远程仓库

	(1)从Gitee下载源代码
[root@ubuntu11.yinzhengjie.com ~]# git clone https://gitee.com/jasonyin2020/java-demo.git
Cloning into 'java-demo'...
remote: Enumerating objects: 19, done.
remote: Counting objects: 100% (19/19), done.
remote: Compressing objects: 100% (16/16), done.
remote: Total 19 (delta 2), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (19/19), done.
Resolving deltas: 100% (2/2), done.
[root@ubuntu11.yinzhengjie.com ~]# 


	(2)将代码推送到gitlab
[root@ubuntu11.yinzhengjie.com ~]# cd java-demo/
[root@ubuntu11.yinzhengjie.com java-demo]# 
[root@ubuntu11.yinzhengjie.com java-demo]# git config --global user.name "root"
[root@ubuntu11.yinzhengjie.com java-demo]# git config --global user.email "y1053419035@qq.com"
[root@ubuntu11.yinzhengjie.com java-demo]# 
[root@ubuntu11.yinzhengjie.com java-demo]# git remote rename origin old-origin
Renaming remote references: 100% (3/3), done.
[root@ubuntu11.yinzhengjie.com java-demo]# 
[root@ubuntu11.yinzhengjie.com java-demo]# git remote add origin https://www.yinzhengjie.com/dev/java-demo.git
[root@ubuntu11.yinzhengjie.com java-demo]#
[root@ubuntu11.yinzhengjie.com java-demo]# git push -u origin --all
Username for 'https://www.yinzhengjie.com': root
Password for 'https://root@www.yinzhengjie.com': 
Enumerating objects: 19, done.
Counting objects: 100% (19/19), done.
Delta compression using up to 2 threads
Compressing objects: 100% (14/14), done.
Writing objects: 100% (19/19), 2.58 KiB | 2.58 MiB/s, done.
Total 19 (delta 2), reused 19 (delta 2), pack-reused 0
To https://www.yinzhengjie.com/dev/java-demo.git
 * [new branch]      master -> master
branch 'master' set up to track 'origin/master'.
[root@ubuntu11.yinzhengjie.com java-demo]# 
[root@ubuntu11.yinzhengjie.com java-demo]# git push -u origin --tags
Username for 'https://www.yinzhengjie.com': root
Password for 'https://root@www.yinzhengjie.com': 
Everything up-to-date
[root@ubuntu11.yinzhengjie.com java-demo]# 

3 查看gitlab的webUI

如上图所示。

二.安装2台Tomcat服务并配置管理账号

1 10.0.0.13节点安装tomcat

	(1)安装tomcat
root@ubuntu13:~# apt -y install tomcat9 tomcat9-admin

	(2)查看JDK版本
root@ubuntu13:~# java -version  # 注意哟,会自动安装JDK环境哟~
openjdk version "11.0.17" 2022-10-18
OpenJDK Runtime Environment (build 11.0.17+8-post-Ubuntu-1ubuntu220.04)
OpenJDK 64-Bit Server VM (build 11.0.17+8-post-Ubuntu-1ubuntu220.04, mixed mode, sharing)
root@ubuntu13:~# 

	(3)访问tomcat的webui
如上图所示。

2 10.0.0.13节点修改tomcat的配置

	(1)拷贝tomcat9-admin的文件拷贝到tomcat的数据目录下
root@ubuntu13:~# ll /var/lib/tomcat9/webapps/
total 12
drwxrwxr-x 3 tomcat tomcat 4096 Feb 19 22:11 ./
drwxr-xr-x 5 root   root   4096 Feb 19 22:11 ../
drwxr-xr-x 3 root   root   4096 Feb 19 22:11 ROOT/
root@ubuntu13:~# 
root@ubuntu13:~# cp -r /usr/share/tomcat9-admin/* /var/lib/tomcat9/webapps/
root@ubuntu13:~# 
root@ubuntu13:~# ll /var/lib/tomcat9/webapps/
total 20
drwxrwxr-x 5 tomcat tomcat 4096 Feb 19 23:01 ./
drwxr-xr-x 5 root   root   4096 Feb 19 22:11 ../
drwxr-xr-x 5 root   root   4096 Feb 19 23:01 host-manager/
drwxr-xr-x 5 root   root   4096 Feb 19 23:01 manager/
drwxr-xr-x 3 root   root   4096 Feb 19 22:11 ROOT/
root@ubuntu13:~# 


	(2)创建用户和授权,如上图所示,仅需添加3行即可。
# vim /var/lib/tomcat9/conf/tomcat-users.xml 
...
  <!--仅需添加如下3行即可完成授权 -->
  <role rolename="manager-gui"/>
  <role rolename="manager-script" />
  <user username="tomcat" password="yinzhengjie" roles="manager-gui,manager-script"/>

</tomcat-users>


	(3)配置远程连接权限
# vim /var/lib/tomcat9/webapps/manager/META-INF/context.xml 
...
  <!-- 注释如下的内容,默认仅允许本机链接,注释后,所有节点都可以链接哟~ -->
<!--    
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->

3 10.0.0.13节点重启tomcat使得配置生效

	(1)重启服务使得配置生效
root@ubuntu13:~# systemctl restart tomcat9

	(2)登录tomcat后台管理界面
如上图所示,点击后就可以登录tomcat,用户名密码使我们上一步配置文件配置的。
用户名: tomcat ,密码: yinzhengjie。

	(3)登录成功
如下图所示。

4 10.0.0.14安装tomcat服务

	(1)另一个节点安装tomcat服务
root@web14:~# apt -y install tomcat9 tomcat9-admin


	(2)拷贝tomcat9-admin的文件拷贝到tomcat的数据目录下
root@web14:~# cp -r /usr/share/tomcat9-admin/* /var/lib/tomcat9/webapps/

5 将10.0.0.13的配置拷贝到10.0.0.14节点

	(1)将用户和授权的配置文件也拷贝过去
root@ubuntu13:~# scp /var/lib/tomcat9/conf/tomcat-users.xml 10.0.0.14:/var/lib/tomcat9/conf/tomcat-users.xml


	(2)将远程连接权限的配置文件也拷贝过去。
root@ubuntu13:~# scp /var/lib/tomcat9/webapps/manager/META-INF/context.xml 10.0.0.14:/var/lib/tomcat9/webapps/manager/META-INF/context.xml


温馨提示:
	我们也可以手动配置10.0.0.14节点,但是由于10.0.0.13的配置是正确也得到了验证,没必要在手动做一次。

6 10.0.0.14测试服务是否正常

	(1)重启服务使得配置生效
root@web14:~# systemctl restart tomcat9


	(2)验证tomcat是否正常
如上图所示,2个tomcat服务都是正常工作的。

三.手动部署Java应用到tomcat服务(用于测试)

1 开发机安装maven环境

	(1)在开发机上安装maven环境
[root@ubuntu11.yinzhengjie.com hello-world]# apt -y install maven


	(2)查看maven版本
[root@ubuntu11.yinzhengjie.com hello-world]# mvn --version

2 配置maven的镜像加速

[root@ubuntu11.yinzhengjie.com hello-world]# vim /etc/maven/settings.xml 
...
  <mirrors>
   	   <!-- 在mirrors标签内部添加如下内容即可。 --> 
       <mirror>
          <id>aliyunmaven</id>
          <mirrorOf>*</mirrorOf>
          <name>阿里云公共仓库</name>
          <url>https://maven.aliyun.com/repository/public</url>
       </mirror>
  </mirrors>

  
参考链接:
  	https://developer.aliyun.com/mvn/guide

3 编译前目录查看

[root@ubuntu11.yinzhengjie.com hello-world]# tree 
.
├── dist
│   └── hello-world.war
├── pom.xml
├── README.md
└── src
    └── main
        └── webapp
            ├── index.jsp
            └── WEB-INF
                └── web.xml

5 directories, 5 files
[root@ubuntu11.yinzhengjie.com hello-world]# 

3 编译Java应用

	(1)忽略maven的检测过程
[root@ubuntu11.yinzhengjie.com hello-world]# mvn clean package -Dmaven.test.skip=true -e

	(2)编译成功
如上图所示。

4 编译后目录查看

[root@ubuntu11.yinzhengjie.com hello-world]# tree 
.
├── dist
│   └── hello-world.war
├── pom.xml
├── README.md
├── src
│   └── main
│       └── webapp
│           ├── index.jsp
│           └── WEB-INF
│               └── web.xml
└── target
    ├── hello-world-v0.1
    │   ├── index.jsp
    │   ├── META-INF
    │   └── WEB-INF
    │       ├── classes
    │       └── web.xml
    ├── hello-world-v0.1.war
    └── maven-archiver
        └── pom.properties

11 directories, 9 files
[root@ubuntu11.yinzhengjie.com hello-world]# 

5 将编译后的war包拷贝tomcat

	(1)将war包拷贝到tomcat服务器
[root@ubuntu11.yinzhengjie.com hello-world]# scp target/yinzhengjie-hello-world-v0.1.war  10.0.0.13:/var/lib/tomcat9/webapps/hello.war

	(2)查看tomcat的目录会自动解压
如下图所示。

6 访问Java项目

	(1)如上图所示,直接访问即可。
http://10.0.0.13:8080/hello/

7 测试完毕后将后端代码清楚

root@ubuntu13:~# rm -rf /var/lib/tomcat9/webapps/hello*



温馨提示:
	如上图所示,删除测试代码后,我们接下来使用Jenkins部署Java应用到tomcat服务

四.使用Jenkins部署Java应用到tomcat服务

1 Jenkins安装maven和Tomcat插件

1.1 安装maven的编译插件

如上图所示,我们可以安装maven集成的插件。"Maven Integration"插件可以让Jenkins实现maven风格的任务。

1.2 安装tomcat的插件

如上图所示,"Deploy to container"插件实现连接tomcat使用,其实tomcat类似于一个容器,里面放的是war包,会自动解压并加载。

2 Jenkins服务器上安装maven和配置镜像加速

2.1 安装maven

[root@ubuntu12.yinzhengjie.com ~]# apt -y install maven

2.2 配置maven加速

[root@ubuntu12.yinzhengjie.com ~]# vim /etc/maven/settings.xml 
...
<mirrors>
	   ...
   	   <!-- 在mirrors标签内部添加如下内容即可。 --> 
       <mirror>
          <id>aliyunmaven</id>
          <mirrorOf>*</mirrorOf>
          <name>阿里云公共仓库</name>
          <url>https://maven.aliyun.com/repository/public</url>
       </mirror>
</mirrors>
  
  
参考链接:
  	https://developer.aliyun.com/mvn/guide

2.3 查看mvn和jdk相关路径

如上图所示,此处我们先查看maven和jdk的路径,便于后续配置Jenkins时使用。

[root@ubuntu12.yinzhengjie.com ~]# mvn -version
Apache Maven 3.6.3
Maven home: /usr/share/maven
Java version: 11.0.17, vendor: Ubuntu, runtime: /usr/lib/jvm/java-11-openjdk-amd64
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.4.0-139-generic", arch: "amd64", family: "unix"
[root@ubuntu12.yinzhengjie.com ~]# 


值得注意的时,上面的并非jdk目录,而是jre目录,因此需要咱们单独安装jdk环境哟。
[root@ubuntu12.yinzhengjie.com ~]# apt -y install openjdk-11-jdk-headless


温馨提示:
	如下图所示,如果安装jdk成功后,不难发现bin目录下是存在javac这个编译器的哟。

3 Jenkins全局工具配置jdk和maven

3.1 全局工具配置

如上图所示,进入到全局工具配置界面。

3.2 Jenkins配置JAVA_HOME环境

如上图所示,点击"新增 JDK",而后配置JDK的别名和JAVA_HOME环境。

值得注意的是,如果有多个JDK版本可以使用别名来标识哟~若不配置路径,则系统默认会从互联网下载较新版本哟~

3.3 Jenkins配置maven环境

如上图所示,点击"新增 Maven",配置名称和MAVEN_HOME变量。

4 创建Tomcat的全局凭据

4.1 进入到Jenkins的管理凭证界面

如上图所示,依次点击"系统管理","Manage Credentials"就可以进入到全局管理凭证啦。


如下图所示,点击"System"就可以进入到全局管理凭证界面啦。

4.2 进入添加凭证界面

如上图所示,点击"全局凭据"就可以看到如下图所示的界面,我们可以点击"Add Credentials"来添加凭据。

4.3 根据tomcat的用户权限设置,创建Jenkins连接tomcat的用户和权限

如上图所示,我们根据tomcat的配置,在Jenkins上填写与其对应的用户名和密码即可。

如下图所示,凭据添加成功啦。

5 创建maven风格的任务

5.1 新建项目

如上图所示,点击"新建任务",进入到如下图所示的界面,按照步骤操作即可。

5.2 配置源码管理

如上图所示,配置源码管理,此处我直接基于ssh协议拉去代码,如果想要使用https协议拉取代码,私有仓库可能需要配置用户凭据哟。

5.3 指定构建参数

如上图所示,配置"Build"的编译参数。不需要加"mvn"命令后,只需要加选项即可。

5.4 设置编译后的动作(Post Steps)

如上图所示,我们可以设置在任务执行后是否执行其他操作。比如任务执行成功执行哪些动作等等。

如下图所示,我们将编译后的war包进行更名,更名后方便将来移动到tomcat时就不需要更名啦~

5.5 配置构建后操作

如上图所示,设置好war包文件,并选择tomcat9的实例来部署war项目。

如下图所示,我们成功配置tomcat的连接信息及IP地址相关信息,点击"保存"即可。

6 构建验证

6.1 立即构建

如上图所示,点击立即构建就可以弹出如下图所示的界面,点击"控制台"输出。

6.2 查看构建信息

如上图所示,等待构建完成后,访问Java项目。如下图所示。

6.3 修改代码再次构建验证

6.3.1 修改java代码

如上图所示,修改副本代码。

如下图所示,将其提交到gitlab仓库。

# git commit -am 'v2.0'
# git push origin master

6.3.2 再次部署

如上图所示,在Jenkins中再次构建后就能部署成功啦!

7 添加参数化构建

7.1 添加一个git参数

如上图所示,我们可以添加一个名为COMMIT_ID的git参数变量。其中的配置要参考上图选择哟~

7.2 指定分支变量

如上图所示,此处要引用咱们自己定义的git参数变量哟~

7.3 基于commit id部署案例

如上图所示,我们可以基于参数化构建选择相应的commit id即可完成部署哟~

当然,如果有需要的话,也可以基于标签进行部署哈!具体配置可参考我之前的笔记哟~

posted @ 2024-12-12 23:55  尹正杰  阅读(261)  评论(0)    收藏  举报