Gitlab+jenkins+maven+tomcat 自动化部署

文章目录

    • jenkins的介绍
    • 环境准备
    • 安装
    • 小结

jenkins的介绍

         Jenkins是一款自动化部署软件,主要用于快速地构建、测试和部署软件代码。在软件开发团队中,Jenkins被广泛应用于持续集成和持续交付环节,可以让代码在开发过程中快速、高效地集成,自动进行编译、测试和部署,从而减少手动操作的繁琐和错误。Jenkins拥有丰富的插件系统,可以支持多种编程语言、版本控制和构建工具,在软件开发流程中发挥着重要的作用。

jenkins的工作流程

开发者会将代码上传到版本库中。

jenkins通过配置版本库的连接地址,获取到源代码。

jenkins获取到源代码之后通过参数化构建(或者触发器)开始编译打包。

jenkins通过调用maven(Ant或者Gradle)命令实现编译打包过程。

生成的war包通过ssh插件上传到远程tomcat服务器中通过shell脚本自动发布项目

jenkins安装

环境准备

三台服务器

服务器一: 搭建Gitlab

服务器二: 搭建jenkins等

服务器三: tomcat(部署真实项目)

三台都关闭防火墙

        

systemctl stop firewalld
setenforce 0

Gitlab安装教程发布过 

Gitlab的安装_XguiG的博客-CSDN博客

软件版本介绍

 tomcat  8.5版本

 jdk         1.8版本

jenkins   2.346.2版本

maven    3.9版本

安装包大家自己去下载,不懂的私我。

 jenkins官网地址:www.jenkins.io

 

将tomcat解压到/usr/local/下改名为tomcat

[root@jenkins ~]# tar -xzf apache-tomcat-8.5.45.tar.gz -C /usr/local/
[root@jenkins ~]# cd /usr/local/
[root@jenkins local]# mv apache-tomcat-8.5.45/ tomcat

 将jdk解压到/usr/local/下改名为java

[root@jenkins local]# tar -xzf jdk-8u211-linux-x64.tar.gz -C /usr/local
[root@jenkins local]# cd /usr/local/
[root@jenkins local]# mv jdk1.8.0_211/ java

解压maven,移动到/usr/local/java/下

[root@jenkins ~]# tar -xzf apache-maven-3.9.2-bin.tar.gz 
[root@jenkins ~]# mv apache-maven-3.9.2 /usr/local/java/
[root@jenkins ~]# cd /usr/local/java
[root@jenkins ~]# mv apache-maven-3.9.2 maven

 删除tomcat/webapps/*,将jenkins.war包移动到/usr/local/tomcat/webapps/下

[root@jenkins ~]# rm -rf /usr/local/tomcat/webapps/*
[root@jenkins ~]# cp jenkins.war /usr/local/tomcat/webapps/

配置环境变量

[root@jenkins local]# vim /etc/profile


### 到最后一行添加以下内容  ####
JAVA_HOME=/usr/local/java
MAVEN_HOME=/usr/local/java/maven
PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL JAVA_HOME MAVEN_HOME

刷新配置文件

source /etc/profile

启动tomcat

[root@jenkins java]# /usr/local/tomcat/bin/startup.sh 

访问登录(等待一会)

Gitlab+jenkins+maven+tomcat 自动化部署_第1张图片

 Gitlab+jenkins+maven+tomcat 自动化部署_第2张图片

 拿到密码输入进去

 Gitlab+jenkins+maven+tomcat 自动化部署_第3张图片

 Gitlab+jenkins+maven+tomcat 自动化部署_第4张图片

 Gitlab+jenkins+maven+tomcat 自动化部署_第5张图片

 我的用户名跟密码都是admin 

 Gitlab+jenkins+maven+tomcat 自动化部署_第6张图片

Gitlab+jenkins+maven+tomcat 自动化部署_第7张图片

 安装插件

Gitlab+jenkins+maven+tomcat 自动化部署_第8张图片

 Gitlab+jenkins+maven+tomcat 自动化部署_第9张图片

 Gitlab+jenkins+maven+tomcat 自动化部署_第10张图片

 Gitlab+jenkins+maven+tomcat 自动化部署_第11张图片

 Gitlab+jenkins+maven+tomcat 自动化部署_第12张图片

 安装邮件插件

Gitlab+jenkins+maven+tomcat 自动化部署_第13张图片

 Gitlab+jenkins+maven+tomcat 自动化部署_第14张图片

 Gitlab+jenkins+maven+tomcat 自动化部署_第15张图片

 Gitlab+jenkins+maven+tomcat 自动化部署_第16张图片

 Gitlab+jenkins+maven+tomcat 自动化部署_第17张图片

 Gitlab+jenkins+maven+tomcat 自动化部署_第18张图片

Gitlab+jenkins+maven+tomcat 自动化部署_第19张图片

Gitlab+jenkins+maven+tomcat 自动化部署_第20张图片

 Gitlab+jenkins+maven+tomcat 自动化部署_第21张图片

 Gitlab+jenkins+maven+tomcat 自动化部署_第22张图片

 Gitlab+jenkins+maven+tomcat 自动化部署_第23张图片

可看到邮箱确实接收到了邮件,则配置成功;

当然邮箱能接收到邮件的前提是,邮箱要开启smtp服务

配置jenkins私钥

[root@jenkins ~]# ssh-keygen   #连敲三下enter键生成公钥跟密钥

[root@jenkins ~]# cat .ssh/id_rsa

 Gitlab+jenkins+maven+tomcat 自动化部署_第24张图片

 Gitlab+jenkins+maven+tomcat 自动化部署_第25张图片

jenkins机器向真实服务器发送公钥

[root@jenkins ~]# ssh-copy-id -i [email protected]

 Gitlab+jenkins+maven+tomcat 自动化部署_第26张图片

配置jdk和maven

Gitlab+jenkins+maven+tomcat 自动化部署_第27张图片

 Gitlab+jenkins+maven+tomcat 自动化部署_第28张图片

 Gitlab+jenkins+maven+tomcat 自动化部署_第29张图片

Gitlab+jenkins+maven+tomcat 自动化部署_第30张图片

 Gitlab+jenkins+maven+tomcat 自动化部署_第31张图片

 Gitlab+jenkins+maven+tomcat 自动化部署_第32张图片

Gitlab+jenkins+maven+tomcat 自动化部署_第33张图片

 Gitlab+jenkins+maven+tomcat 自动化部署_第34张图片

Gitlab+jenkins+maven+tomcat 自动化部署_第35张图片

 Gitlab+jenkins+maven+tomcat 自动化部署_第36张图片

 在tomcat真实服务器上面安装git客户端

yum -y install git

tomcat上编写脚本 

mkdir /opt/script  #创建脚本目录
 vim app-jenkins.sh   #创建脚本  内容在下面
chmod +x /opt/script/app-jenkins.sh
#!/usr/bin/bash
#本脚本适用于jenkins持续集成,实现备份war包到代码更新上线!使用时请注意全局变量。
#================
#Defining variables
export JAVA_HOME=/usr/local/java
webapp_path="/data/application/tomcat/webapps"
tomcat_run="/data/application/tomcat/bin"
updata_path="/data/update/`date +%F-%T`"
backup_path="/data/backup/`date +%F-%T`"
tomcat_pid=`ps -ef | grep tomcat | grep -v grep | awk '{print $2}'`
files_dir="easy-springmvc-maven"
files="easy-springmvc-maven.war"
job_path="/root/upload"

#Preparation environment
echo "Creating related directory"
mkdir -p $updata_path
mkdir -p $backup_path

echo "Move the uploaded war package to the update directory"
mv $job_path/$files $updata_path

echo "========================================================="
cd /opt
echo "Backing up java project"
if [ -f $webapp_path/$files ];then
	tar czf $backup_path/`date +%F-%H`.tar.gz $webapp_path
	if [ $? -ne 0 ];then
		echo "打包失败,自动退出"
		exit 1
	else
		echo "Checking if tomcat is started"
		if [ -n "$tomcat_pid" ];then
			kill -9 $tomcat_pid
			if [ $? -ne 0 ];then
				echo "tomcat关闭失败,将会自动退出"
				exit 2
			fi
		fi
		cd $webapp_path
		rm -rf $files && rm -rf $files_dir
		cp $updata_path/$files $webapp_path
		cd /opt
		$tomcat_run/startup.sh
		sleep 5
		echo "显示tomcat的pid"
		echo "`ps -ef | grep tomcat | grep -v grep | awk '{print $2}'`"
		echo "tomcat startup"
		echo "请手动查看tomcat日志。脚本将会自动退出"
	fi
else
	echo "Checking if tomcat is started"
        if [ -n "$tomcat_pid" ];then
        	kill -9 $tomcat_pid
                if [ $? -ne 0 ];then
                	echo "tomcat关闭失败,将会自动退出"
                       	exit 2
                fi
        fi
	cp $updata_path/$files $webapp_path
	$tomcat_run/startup.sh
        sleep 5
        echo "显示tomcat的pid"
        echo "`ps -ef | grep tomcat | grep -v grep | awk '{print $2}'`"
        echo "tomcat startup"
        echo "请手动查看tomcat日志。脚本将会自动退出"
fi

Gitlab+jenkins+maven+tomcat 自动化部署_第37张图片

Gitlab+jenkins+maven+tomcat 自动化部署_第38张图片

Gitlab+jenkins+maven+tomcat 自动化部署_第39张图片

Gitlab+jenkins+maven+tomcat 自动化部署_第40张图片

 Gitlab+jenkins+maven+tomcat 自动化部署_第41张图片

Gitlab+jenkins+maven+tomcat 自动化部署_第42张图片

Gitlab+jenkins+maven+tomcat 自动化部署_第43张图片

 Gitlab+jenkins+maven+tomcat 自动化部署_第44张图片

 Gitlab+jenkins+maven+tomcat 自动化部署_第45张图片

 做到这就成功了

小结

        在做的过程中一定要仔细,重点就是配置那一块,一个错误可能需要排好久,所以一定要一步一步来,加油喔!

你可能感兴趣的:(运维,jenkins,gitlab,maven,tomcat)