GitLab+Jenkins+Maven+Tomcat 实现自动集成、打包、部署

 更新时间:2022年01月07日 10:42:11   作者:愿许浪尽天涯  
本文主要介绍了GitLab + Jenkins + Maven + Tomcat 实现自动集成、打包、部署,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

一、安装 Tomcat 服务

1.安装 JDK JDK 下载地址:传送门(需要创建 Oracle 账号)

[root@Tomcat ~]# ls
anaconda-ks.cfg  jdk-8u181-linux-x64.tar.gz
[root@Tomcat ~]# tar zxf jdk-8u181-linux-x64.tar.gz
[root@Tomcat ~]# ls
anaconda-ks.cfg  jdk-8u181-linux-x64.tar.gz  jdk1.8.0_181
[root@Tomcat ~]# mv jdk1.8.0_181/ /usr/local/java
[root@Tomcat ~]# cat <<END >> /etc/profile
export JAVA_HOME=/usr/local/java
export PATH=$PATH:"$JAVA_HOME/bin"
END
[root@Tomcat ~]# source /etc/profile
[root@Tomcat ~]# java -version

2.安装 Tomcat

[root@Tomcat ~]# wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.32/bin/apache-tomcat-8.5.32.tar.gz
[root@Tomcat ~]# ls
anaconda-ks.cfg  apache-tomcat-8.5.32.tar.gz  jdk-8u181-linux-x64.tar.gz
[root@Tomcat ~]# tar zxf apache-tomcat-8.5.32.tar.gz 
[root@Tomcat ~]# ls
anaconda-ks.cfg  apache-tomcat-8.5.32.tar.gz  apache-tomcat-8.5.32  jdk-8u181-linux-x64.tar.gz
[root@Tomcat ~]# mv apache-tomcat-8.5.32 /usr/local/tomcat

在 Tomcat 服务器上配置(优化执行路径)

[root@Tomcat ~]# sed -i '/#!\/bin\/sh/aJAVA_HOME="/usr/local/java"' /usr/local/tomcat/bin/catalina.sh
[root@Tomcat ~]# sed -i '/#!\/bin\/sh/aJRE_HOME="/usr/local/java/jre"' /usr/local/tomcat/bin/catalina.sh

启动 Tomcat

[root@Tomcat ~]# /usr/local/tomcat/bin/startup.sh							# 启动 Tomcat 服务
[root@Tomcat ~]# netstat -nlpt | grep 8080									# 查看端口是否开启

在这里插入图片描述

二、在 Jenkins 上安装 Maven

我们这里主要就是使用 Maven 来将开发写的 Java 代码,打包成 war 包后,来使用 Jenkins 将打包好的 war 包,部署到 Tomcat 上,来完成简单的版本迭代;像一些在云上的项目,基本上都在用云效(云版 Jenkins)

GitLab 和 Jenkins 安装教程:传送门

1.安装 Maven

我们可以将 Maven 安装在 Jenkins 的服务器上:

[root@Jenkins ~]# wget https://archive.apache.org/dist/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz
[root@Jenkins ~]# tar xf apache-maven-3.5.4-bin.tar.gz
[root@Jenkins ~]# mv apache-maven-3.5.4 /usr/local/maven
[root@Jenkins ~]# ln -s /usr/local/maven/bin/mvn /usr/bin/

1)配置 Maven 的环境变量

[root@Jenkins ~]# echo "export MAVEN_HOME=/usr/local/maven" >> /etc/profile
[root@Jenkins ~]# echo "export PATH=$PATH:$MAVEN_HOME/bin" >> /etc/profile
[root@Jenkins ~]# source /etc/profile

2)在 Maven 上配置阿里云加速

[root@Jenkins ~]# vim /usr/local/maven/conf/settings.xml
157     </mirror>
158      -->
159      <mirror>
160        <id>aliyun maven</id>
161        <name>aliyun</name>
162        <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
163        <mirrorOf>central</mirrorOf>
164      </mirror>
165   </mirrors>

2.创建 Jenkins 任务

1)创建 Jenkins 任务前,需要安装以下插件:

Git plugin
Maven Release Plug-in

2)进入配置阶段

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3)开始新建一个 Jenkins 任务

在这里插入图片描述

General

在这里插入图片描述

源码管理

在这里插入图片描述

在这里插入图片描述

Build

在这里插入图片描述

4)编写脚本

[root@Jenkins ~]# vim tomcat_update.sh
#!/bin/bash
scp /var/lib/jenkins/workspace/tomcat/gameoflife-web/target/*.war  root@192.168.1.3:/usr/local/tomcat/webapps/
ssh root@192.168.1.3 "/usr/local/tomcat/bin/shutdown.sh"
sleep 3
ssh root@192.168.1.3 "/usr/local/tomcat/bin/startup.sh"

5)将代码上传到 GitLab 远程仓库中

[root@Jenkins ~]# git clone git@192.168.1.1:ZhangSan/test.git
[root@Jenkins ~]# git clone git@github.com:wakaleo/game-of-life.git				# 克隆 GitHub 上的代码
[root@Jenkins ~]# cd test/
[root@Jenkins test]# git rm -rf *												# 删除原有仓库上的代码 (生产环境需慎重考虑)
[root@Jenkins test]# mv ../game-of-life/* .										# 将克隆过来的代码移动到当前目录		
[root@Jenkins test]# git add .													# 上传到暂存区
[root@Jenkins test]# git commit -m 'This is Tomcat of Test'						# 将暂存区代码上传到本地仓库
[root@Jenkins test]# git push origin master										# 将本地仓库上传到远程仓库

当克隆 GitHub 上代码出现:Permission denied (publickey). 时,我们只将公钥上传到 GitHub 上即可。

6)在 Jenkins 构建 Tomcat 项目

在这里插入图片描述

问题(1):如果在构建时出现如下错误,原因是因为没有配置密钥对。

Permission denied, please try again. Permission denied, please try again. Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

配置 SSH 密钥对

[root@Jenkins ~]# ssh-keygen -t rsa										# 创建密钥对 (三连回车即可)
[root@Jenkins ~]# ssh-copy-id root@192.168.1.3

问题(2):如果在构建时出现如下错误,原因是因为没有优化执行路径。

Neither the JAVA_HOME nor the JRE_HOME environment variable is defined At least one of these environment variable is needed to run this program Neither the JAVA_HOME nor the JRE_HOME environment variable is defined At least one of these environment variable is needed to run this program

在 Tomcat 服务器上配置

[root@Tomcat ~]# sed -i '/#!\/bin\/sh/aJAVA_HOME="/usr/local/java"' /usr/local/tomcat/bin/catalina.sh
[root@Tomcat ~]# sed -i '/#!\/bin\/sh/aJRE_HOME="/usr/local/java/jre"' /usr/local/tomcat/bin/catalina.sh

3.验证

访问: 192.168.1.3:8080/gameoflife/

在这里插入图片描述

 到此这篇关于GitLab+Jenkins+Maven+Tomcat 实现自动集成、打包、部署的文章就介绍到这了,更多相关GitLab Jenkins Maven Tomcat自动集成打包部署内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Kafka单节点伪分布式集群搭建实现过程详解

    Kafka单节点伪分布式集群搭建实现过程详解

    这篇文章主要介绍了Kafka单节点伪分布式集群搭建实现过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • SpringBoot中打war包需要注意事项

    SpringBoot中打war包需要注意事项

    这篇文章主要介绍了SpringBoot中打war包需要注意事项,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Spring事务管理原理及方法详解

    Spring事务管理原理及方法详解

    这篇文章主要介绍了Spring事务管理原理及方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • JAVA中Context的详细介绍和实例分析

    JAVA中Context的详细介绍和实例分析

    这篇文章主要介绍了JAVA中Context的详细介绍和实例分析,Context是维持android各组件能够正常工作的一个核心功能类。如果感兴趣来学习一下
    2020-07-07
  • 深入理解Java中的Lambda表达式

    深入理解Java中的Lambda表达式

    这篇文章主要介绍了深入理解Java中的Lambda表达式,Lambda在各编程语言中都是非常重要的特性,而Java中则加入得有些太晚...需要的朋友可以参考下
    2015-07-07
  • Java中管理资源的引用队列相关原理解析

    Java中管理资源的引用队列相关原理解析

    这篇文章主要介绍了Java中管理资源的引用队列相关原理解析,涉及到Java的垃圾回收机制方面的知识,需要的朋友可以参考下
    2015-12-12
  • SpringMVC的ModelAndView传值方法

    SpringMVC的ModelAndView传值方法

    今天小编就为大家分享一篇SpringMVC的ModelAndView传值方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • java之Thread不捕获异常默认处理逻辑

    java之Thread不捕获异常默认处理逻辑

    这篇文章主要介绍了java之Thread不捕获异常默认处理逻辑,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Springboot项目保存本地系统日志文件的实现方法

    Springboot项目保存本地系统日志文件的实现方法

    这篇文章主要介绍了Springboot项目保存本地系统日志文件的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • Java中的JScrollPane使用详细说明

    Java中的JScrollPane使用详细说明

    这篇文章主要给大家介绍了关于Java中JScrollPane使用的相关资料,Java JScrollPane是Swing库提供的一个组件,用于在需要滚动的区域中显示内容,需要的朋友可以参考下
    2024-07-07

最新评论