目录
废话不多说,我们直接开始上手操作!!!
一、环境配置
我们想利用jenkins帮我们自动从git上拉取代码,完成代码的打包,部署,需要一些环境的支持,包括JDK,Maven, git,下面我们来安装和配置一下这些环境。
1.1 JDK环境配置
1.1.1 下载
JDK下载地址:Oracle官网下载JDK
这里我们使用的是JDK8,目前Oracle已经开放了JDK17了..............
1.1.2 安装
接下来就是安装的步骤:
1. 新建文件夹 /usr/local/java
mkdir /usr/local/java
2. 将压缩包上传到/usr/local/java文件夹中,使用Xshell,Xftp都可以
3. 解压压缩包
tar -zxvf jdk-8u321-linux-x64.tar.gz
4. (可选)这里可以把之前的压缩包删除,也可以不删
rm -rf jdk-8u321-linux-x64.tar.gz
此时文件的目录接口应该是这样的
1.1.3 配置环境变量
1.编辑 /etc/profile文件,在文件的末尾加上如下配置
#java environment
export JAVA_HOME=/usr/local/java/jdk1.8.0_321
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin
2.使配置生效
source /etc/profile
1.1.4 测试java配置有没有成功
在命令行中输入 java -version 显示如下,即表示配置成功
1.2 Maven的安装配置
1.2.1 下载
Maven下载地址:Maven下载
1.2.2 安装
同样的,我们重复上面和java一样的操作
1.新建文件夹
mkdir /usr/local/maven
2.上传压缩包到 /usr/local/maven目录下
3.解压
tar -zxvf apache-maven-3.8.4-bin.tar.gz
4.(可选)删除maven压缩包
rm -rf apache-maven-3.8.4-bin.tar.gz
此时,我们的目录结构应该下面这样子的
1.2.3 maven的配置
接下来,我们配置一下maven的本地仓库地址以及镜像仓库的地址
vim /usr/local/maven/apache-maven-3.8.4/conf/settings.xml
添加如下配置:
在settings标签下添加
<localRepository>/usr/local/maven/repo</localRepository>
在mirrrors标签中将原有的配置删除,添加阿里云的镜像
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
配置完成之后,保存并退出 :wq
1.2.4 配置环境变量
编辑 /etc/profile 文件
vim /etc/profile
在末尾添加如下配置
#maven environment
export MAVEN_HOME=/usr/local/maven/apache-maven-3.8.4
export PATH=$PATH:${MAVEN_HOME}/bin
使配置生效
source /etc/profile
1.2.5 检查maven有没有配置成功
输入指令 mvn -v
如此,maven也配置成功了
1.3 git的安装
git从yum仓库中下载就可以了
yum install git -y
下载完成之后,查看一下git在什么位置,后面要用到
whereis git
二、Jenkins的安装配置
2.1 Jenkins的下载
下载地址:Jenkins下载
2.2 使用Jenkins
2.2.1 启动War包
将下载好的War包放入指定文件夹中,我这里是放在了/home/sofrware/jenkins中
使用命令启动war包
nohup java -jar /home/software/jenkins/jenkins.war > jenkins.log
2.2.2 防护墙开启8080端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload
如果使用云服务器的小伙伴,可以直接在云服务网站上开启就行了,不需要操作防火墙。
2.2.3访问jenkins
浏览器访问:主机IP:8080 就可以访问到了,如果不知道主机的IP的话,可以使用
ifconfig
命令查看一下。
2.2.4 Jenkins网站的使用
刚刚进来,可以看到这个界面
这里需要我们输入管理员的密码,这个密码上面已经给出了访问的地址,也可以通过我们之前的jenkins.log日志获取到。
cd /home/software/jenkins
cat jenkins.log
可以看到下面这一段内容
只需要把中间的这个密码复制上来就行了。
复制密码,点击继续,可以看到下面的画面
我们这里点击安装推荐的插件就可以了,如果有基础的小伙伴,可以选择插件来安装。
此时正在帮助我们安装插件,过程可能有点漫长,等待就行了。
安装完成后,点击继续,这里如果安装失败了也没问题,后面我们配置了镜像仓库之后,再安装。
这里会让我们创建一个管理员的账号和密码。
这里需要我们设置jenkins的访问地址,如果有公网地址的话,最好用公网地址,没有的话,就默认当前访问的地址就行了。
2.2.5 jenkins插件仓库的配置
首先我们配置一下插件仓库的地址,不然下载插件的速度太慢了
英文:点击 Manage Jenkins -> Manage Plugins-> Advance -> Update Site
中文:点击 系统管理 -> 插件管理 -> 高级 -> 升级站点
设置成:
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
另外,我们需要修改一下jenkins本地文件的插件仓库地址
cd /root/.jenkins/updates
我们要修改的是default.json文件
sed -i 's/http:\/\/updates.jenkinsci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json
修改完成之后,需要重启一下jenkins,只需要在地址栏后面加入/restart就可以重启了
2.2.6 工具设置(Java,Maven,Git)
进入系统设置 -> 全局工具设置里面
进入Manage Jenkins -> Global Tool Configuration
1. 配置JDK
2.配置Git
3.配置Maven
注意:这里我们要把自动安装的按钮给取消掉,因为之前我们已经安装过所需要的所有环境了
2.2.7 插件的安装
自动拉取打包代码需要一些插件的支持,我这里用的是SpringBoot项目,用的是Gitee,所以这里需要安装这两个插件
进入插件管理 -> 可选插件
搜索下面两个插件:
点击安装,安装好后重启就行了。如果你们使用的是gitLab,gogs或者是github,只需要安装对应的插件就行了。
重启后,点击新建项目可以在新建任务中看到构建Maven项目
三、Jenkins实现拉取,打包,部署操作
3.1 新建Maven任务
输入名称》》勾选“构建一个Maven项目”》》点击确定
3.2 配置Git仓库地址
首先需要在Git仓库中新建一个私有的仓库,这里我就不详细展开说了,我这里用的是Gitee,如果不会的小伙伴,自己搜索一下如何使用Gitee.
复制Gitee的地址
在Jenkins中粘贴地址,这时候会出现以下的报错
因为我们的仓库是私有的,所以,没有账号密码,Jenkins是获取不到你的代码的,我们需要添加一下凭证。
再回到之前的Git配置地方
这样仓库地址就配置Ok了
3.3 配置打包后的脚本
完成上面两步,点击构建之后,其实就可以完成拉代码和打包了
进入jenkins的运行空间内部
cd /root/.jenkins/workspace
我们进入到目录里面查看一下
可以看到此时jar已经有了,接下来完成的就是让jar能跑起来。
进入jenkins刚刚我们创建的项目的配置中,输入项目打包后的命令
在文本框中输入以下内容
#!/bin/bash
echo "开始部署项目..."
DIR="/data/app"
projectName="test-1.0"
echo "移动上个版本的jar..."]
mkdir -p $DIR/backup/${projectName}
if [ -f "$DIR/${projectName}/${projectName}.jar" ];then
mv $DIR/${projectName}/${projectName}.jar $DIR/backup/${projectName}/${projectName}-`date "+%Y%m%d_%H%M%S"`.jar
fi
echo "移动jar到制定目录..."
cp ${WORKSPACE}/target/*.jar $DIR/${projectName}/${projectName}.jar
sh $DIR/${projectName}/stop.sh
sh $DIR/${projectName}/start.sh
echo "success"
这里的命令含义是:
DIR:项目部署的文件夹,我们要把Jar包移动到这个里面来运行。
projectName:jar包的名称,如果不确定可以在maven项目中指定jar的名字。
if中的内容:判断DIR下的目录内是否已经有了相同名称的JAR,如果有的话,将这里面的Jar给移出去,并在名称后加上时间戳,方便我们做备份
cp后面的内容:将我们构建生成的jar,移动到我们项目的目录内。
sh后面的内容:我们要在项目文件夹中写两个文件,一个是stop.sh,一个是start.sh,stop.sh是把我们之前起的jar服务给关闭,start.sh是将我们的jar启动。
3.4 配置包所在服务器中的环境和脚本
新建项目目录 /data/app
mkdir -p /data/app
根据项目的名称再建三级的文件夹,我这里项目名称是test-1.0
mkdir -p /data/app/test-1.0
进入到该目录内新建两个文件
touch start.sh
touch stop.sh
编辑start.sh
vim start.sh
#!/bin/bash
set -e
set -o pipefail
APP_ID=test-1.0
APP_DIR="/data/app"
nohup /java -jar ${APP_DIR}/${APP_ID}/${APP_ID}.jar > app.log & start_ok=false
编辑stop.sh
vim stop.sh
#!/bin/bash
APP_ID=test-1.0
ps aux | grep ${APP_ID} | grep -v "grep" | awk '{print "kill -9 "$2}' | sh
3.5 提交代码,打包部署
我这里已经建了一个SpringBoot的项目,这里有不懂的小伙伴,可以自学一下,或者直接从网上找。
端口设置的是9080
我们来构建一下,看看能不能访问,别忘了,记得把服务的端口打开,我这里要打开9080这个端口
点击构建
试试来访问一下
3.6 错误原因查询
这里有些人可能会访问不到,可能的原因有很多,我这里列举几种:
3.6.1 查看控制台日志
在我们的构建信息中,是可以查看到控制台的输出的,如果是脚本错误,或者一些原因,可以通过控制台输出的错误原因进行更改。
3.6.2 进程自动结束原因
这里还有一种情况,就是控制台并没有报错,但是就是访问不到,还有一种可能的原因就是jenkins在构建完成之后,会自动的把当前进程给杀死,我们这里配置一下不要杀死线程就行了:
在节点管理中配置一下参数:
新建一个变量:
键:BUILD_ID
值:DontKillMe
四、WebHook
钩子技术,可以帮助我们实现从git提交代码后,Jenkins自动开始拉取代码,并帮助我们打包,然后构建,发布,实现全自动,这里用到的就是钩子技术。
还记得我们之前下载过的一个gitee的插件吗?这里就派上了用场。
4.1 新建任务的触发器
我们继续回到刚刚任务的配置中,找到构建触发器
看到此时的这个选项就是插件支持的,如果没有安装插件,这里是没有这个选项的,如果你用的是gitLab、gogs、github这里同样也会有相应的选项。
注意一点,这个选项后面有一个URL地址,并且提醒我们需要在Gitee WebHook中填写。什么意思呢?其实就是,类似于我们做的SpringBoot应用暴露出来的接口,这个接口直接触发刚刚任务的构建,其实就是这么简单。
继续往下翻,可以看到有一个密码的选项,我们这里直接点自动生成
4.2 Git仓库配置WebHook
打开我们的仓库地址,进入到管理页面中去
进入到WebHook,或者叫钩子的选项中去
输入地址和密码,勾选触发时机
4.3 测试效果
我们提交一下代码看看
进入Jenkins,可以看到,我们并没有点立即构建,Jenkins自动就开始构建了,甚至可以看到是由哪一个用户触发的构建。
测试访问一下,看看能不能访问
如此,我们就实现了使用Jenkins自动化部署Maven类型的项目。
下一章节中,我将介绍一下,Maven如何部署前端项目。