1.全局配置
1.1 Maven 配置
Manage Jenkins-> System Configuration -> Tools -> Maven配置
这里配置的是全局的settings文件路径;
1.2 JDK安装
Manage Jenkins-> System Configuration -> Tools -> JDK安装
点击JDK安装,进入安装安装界面
填入JDK的别名,JAVA_HOME(安装目录);
1.3 Git安装
Manage Jenkins-> System Configuration -> Tools -> Git installations
点击Add Git ,选择 Git ;
填入别名和 Git安装地址 ;
1.4 Maven安装
Manage Jenkins-> System Configuration -> Tools -> Maven 安装
点击Maven 安装进入安装界面;
点击新增Maven ,填入Name(别名)以及MAVEN_HOME(安装地址);
1.5 Credentials
Manage jenkins -> Security -> Credentials
点击 Add Credentials 进入新增页面;
类型 :Username with password #用户名和密码
范围: Global #全局的
用户名:拉取代码的用户名
密码:拉取代码的用户的密码
创建成功;
1.6 配置SSH
Manage jenkins -> System-> Pushlish over SSH
Passphrase: 登录服务器的用户密码;
点击SSH Servers 下面的新增
Name: 别名;
Hostname: IP地址;
Username: 登录用户名称
Remote Directory: 远程服务器目录(jar包上传的地址)
2. 创建Job
2.1 新建Item
登录Jenkins, 点击左侧的 新建Item ;
任务名称:water_auto_deploy
模式:Freestyle project #自由模式
2.2 配置
2.2.1 General
描述:Job的作用;
JDK:根据项目的JDK版本选择,这里选择Java 8 #已全局工具中配置
2.2.2 源码管理
根据代码管理工具选择,这里选择Git(如果没有对应的版本管理工具,先去安装插件);
Repository URL:代码的远程地址(就是Git克隆的地址);
Credentials:拉取代码的用户名和密码配置而成的凭据;
指定分支:选择master分支
2.2.3 构建触发器
构建触发器就是选择一种触发构建的方式;
触发远程构建:通过手动在浏览器输入url,触发job进行构建。如果需要做成自动构建,这里地址就由Github或者Gitlab回调,触发构建;
回调地址: JENKINS_URL/job/jenkins_test/build?token=TOKEN_NAME
示例:http://localhost:8282/job/jenkins_test/build?token=test
2.2.4 构建步骤
点击增加构建步骤,选择 Invoke top-level Maven targets
Maven版本选择 3.8.1 ;
目标: clean install #先执行 清理,再执行 打包,和IDEA上的打包操作是一样的;
2.2.5 构建后操作
构建后的操作包括:jar包打包好之后,将jar包发送到哪个路径,以及如何启动等等;
这些操作需要提前在服务器上设置好路径,写好启动和停止的脚本,并设置成可执行的shell脚本。
点击增加构建后操作步骤;
选择 Send build artifacts over SSH,将构建好的jar发送到远程服务器;
Name : 配置好的SSH别名();
Source files: jar所在的相对路径 #路径从和 .mvn 、 .git文件同级开始
Remove prefix: 需要去掉的地址前缀
Remote directory: 远程仓库目录
#注意:这个目录会和Manage Jenkins->System->SSH Server中的Remote Directory这个目录拼接到一起;
假设Manage Jenkins->System->SSH Server中的Remote Directory配置是的/root ,那么最终的路径是 /root/water/jenk
Exec command: jar包上传之后需要执行的操作;
oper_water.sh脚本
#!/bin/bash
#端口
port=${1}
root_path=/root/water/jenk
boot_path=/usr/local/smart_water/dev
jar_name=boot-main-0.0.1-SNAPSHOT
#1.停止服务
#参数为空默认8383端口
if [ ! -n "${port}" ]; then
port=8383
fi
echo "port=${port}"
pid=$(netstat -nlp | grep :${port} | awk '{print $7}' | awk -F"/" '{ print $1 }')
echo "pid=${pid}"
#不为空,杀掉进程
if [ -n "${pid}" ];then
kill -9 ${pid}
echo "停止服务!"
fi
echo "清理日志文件"
cd ${root_path}/
rm -rf log/ && mkdir log/
rm -rf system.log
#2.备份jar包(开发环境仅备份一次)
echo "备份jar包"
cd ${root_path}/
rm -rf ${jar_name}_bak.jar
cp ${jar_name}.jar ${jar_name}_bak.jar
#3.替换配置文件
echo "替换配置文件"
cd ${root_path}/
yml_path=$(jar -tvf ${jar_name}.jar |grep application-dev.yml |awk '{print $8}')
echo "yml_path=${yml_path}"
jar -xvf ${jar_name}.jar ${yml_path}
cp application-dev.yml ${yml_path}
jar -uvf ${jar_name}.jar ${yml_path}
log_path=$(jar -tvf ${jar_name}.jar |grep logback-spring.xml |awk '{print $8}')
echo "log_path=${log_path}"
jar -xvf ${jar_name}.jar ${log_path}
cp logback-spring.xml ${log_path}
jar -uvf ${jar_name}.jar ${log_path}
#4.启动服务
echo "启动服务...."
cd ${root_path}
source /etc/profile
nohup /usr/local/java/jdk1.8.0_381/bin/java -jar ./${jar_name}.jar > ./system.log 2>&1 &
3. 构建项目
手动构建项目的方式有两种,效果是一样的:
3.1 回调地址触发构建
步骤2.2.3 构建的触发器,回调地址格式: JENKINS_URL/job/jenkins_test/build?token=TOKEN_NAME
在浏览器输入回调地址触发:http://localhost:8282/job/jenkins_test/build?token=test
3.2 手动点击触发
在job详细页面,点击Build Now,也可以触发构建;
点击需要构建的jenkins_test ,进入详情界面
点击Build Now,也可以构建项目,效果和使用浏览器回调地址是相同的。
3.3 回调地址示例
3.3.1 构建前
这是job的初始状态(没有构建),构建历史是空的,工作空间也没有(构建后才会生成);
构建之前的服务器目录/root/water/jenk,项目端口8383 也没有运行;
3.3.2 构建
在浏览器输入回调地址:http://localhost:8282/job/jenkins_test/build?token=test
3.3.3 构建后
构建历史中新增了1条记录,进入工作空间,可以看见打包好的jar包;
点击构建历史 #1 进入构建详情界面,可以在控制台输出查看构建过程的详细信息;
jar已经上传到远程服务器,并且已经启动,表示构建成功。