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

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

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



一、安装 Tomcat 服务


1.安装 JDK

2.安装 Tomcat


二、在 Jenkins 上安装 Maven


1.安装 Maven

2.创建 Jenkins 任务

3.验证


一、安装 Tomcat 服务



1.安装 JDK


[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                  # 查看端口是否开启


image.png


二、在 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)进入配置阶段


image.png

image.png

image.png

image.png


3)开始新建一个 Jenkins 任务


image.png


General


image.png


源码管理


image.png

image.png


Build


image.png


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 项目


image.png


问题(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/


image.png

相关文章
|
10月前
|
Ubuntu 安全 数据安全/隐私保护
在Docker容器中部署GitLab服务器的步骤(面向Ubuntu 16.04)
现在,你已经成功地在Docker上部署了GitLab。这就是我们在星际中的壮举,轻松如同土豆一样简单!星际旅行结束,靠岸,打开舱门,迎接全新的代码时代。Prepare to code, astronaut!
641 12
|
8月前
|
Java jenkins 应用服务中间件
结合Jenkins与Tomcat,实施Maven项目的自动构建和部署流程。
任何项目构建和部署的自动化流程,总离不开对各个环节精细把控与密切配合。涉及到源代码管理、构建工具、持续集成服务器以及最终的运行时环境的协调。通过上述简洁实用的步骤,可以实现Maven项目从源代码到运行状态的无缝过渡,进而提升软件开发的效率与质量。
445 0
|
12月前
|
存储 Java Maven
Maven系统级别依赖:解决部署时Jar包缺失问题
以上就是关于Maven系统级别依赖解决部署时Jar包缺失问题的解答,希望对你有所帮助。在软件开发中,遇到问题并解决问题是常态,希望你能够善用这些工具,解决你遇到的问题。
739 28
|
监控 jenkins Shell
jenkins结合gitlab实现CI(持续集成)
通过本文的介绍,我们详细了解了如何结合Jenkins和GitLab实现持续集成。从环境准备、插件配置到Pipeline任务创建和CI流程监控,每一步都提供了详细的操作步骤和示例代码。希望本文能帮助开发者快速搭建起高效的CI系统,提高项目开发效率和代码质量。
1486 9
|
Kubernetes 持续交付 数据库
阿里云ACK+GitLab企业级部署实战教程
GitLab 是一个功能强大的基于 Web 的 DevOps 生命周期平台,整合了源代码管理、持续集成/持续部署(CI/CD)、项目管理等多种工具。其一体化设计使得开发团队能够在同一平台上进行代码协作、自动化构建与部署及全面的项目监控,极大提升了开发效率和项目透明度。 GitLab 的优势在于其作为一体化平台减少了工具切换,高度可定制以满足不同项目需求,并拥有活跃的开源社区和企业级功能,如高级权限管理和专业的技术支持。借助这些优势,GitLab 成为许多开发团队首选的 DevOps 工具,实现从代码编写到生产部署的全流程自动化和优化。
|
Java Maven
maven打包出现没有主类的原因,详细分析并解决
本文分析了使用Maven打包Java应用时找不到或无法加载主类的问题,通常是由于未配置主类或打包时未包含依赖,并通过添加Maven插件解决了依赖问题,同时指出了JavaFX应用可能遇到的运行时组件缺失的错误。
1249 1
maven打包出现没有主类的原因,详细分析并解决
|
Java 应用服务中间件 Maven
Maven的三种项目打包方式——pom,jar,war的区别
Maven 提供了多种打包方式,分别适用于不同类型的项目。pom 用于父项目或聚合项目,便于项目的结构和依赖管理;jar 用于Java类库或可执行的Java应用程序;war 则专用于Java Web应用程序的部署。理解这些打包方式的用途和特点,可以帮助开发者更好地配置和管理Maven项目,确保构建和部署过程的顺利进行。无论是单模块项目还是多模块项目,选择合适的打包方式对于项目的成功至关重要。
2531 3
|
Java Maven Android开发
【Azure Developer】VS Code打包Java maven Project 遇见 BUILD FAILURE
Unknown lifecycle phase "lean". You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>
576 5
|
缓存 IDE Java
idea的maven项目打包时没有source下的文件
【10月更文挑战第21天】idea的maven项目打包时没有source下的文件
1195 1
|
Java 测试技术 Maven
maven 打包命令
maven 打包命令
288 6

推荐镜像

更多