开发者的下一步Jenkins部署SpringBoot

1 缘起

这篇文章,没有想法。
大概我有些累了。但,不是很累。
想到,要发出来,还是写一些文字吧。
曾经的纯纯开发者,只管对着原型,开发CURD,修Bug。
可是我想更进一步,学习、了解、掌握服务上线的全流程(全生命周期),
完善技能拼图,补齐短板,减少盲区,开拓眼界,
于是,在不断探索完成开发之后的领域,
先从服务部署开始,
于开发员而言,完成开发后,只要没有Bug,
其他的任务,交由运维即可,包括部署、扩容、回退等等,
可是,对于组建团队而言,需要哪些人、具备哪些能力,
还是需要先有部分积累,才能更好地挑选人才。
所以,从Jenkins部署服务开始学习,逐步向后学习,如Docker、K8S等。

2 构建项目

2.1 新建任务

进入Jenkins,首页中选择新建任务,如下图。
在这里插入图片描述

输入任务名称,选择构建的任务类型:
构建一个自由风格的软件项目,确认之后,进入具体配置,如下图。
在这里插入图片描述

2.2 General

通用配置,有两个部分,一部分是项目描述,另一部分是构建前的准备,如参数构建。

2.2.1 项目描述

项目描述如下图。
在这里插入图片描述

2.2.2 构建参数

添加参数,
General->参数化构建过程->添加参数->选项参数。
这里,使用选项参数,作为外部参数传入Shell脚本,如下图。
在这里插入图片描述

参数添加样例:
添加参数:选项参数。
其中,名称为键(key),
选项为值(value),如下图。
在这里插入图片描述

2.3 源码管理

添加Git仓库,Jenkins连接具体的项目地址,用于拉取代码。
这部分是自动化构建的核心步骤,
添加Git项目后,需要配置认证,这里配置认证有两种方式,
一种是在系统配置中设置Gitee,
一种是在当前认证中直接配置,
本章在Gitee中配置,因此无需再次配置。
配置参考:
分支为*/master,通配master,如下图。
在这里插入图片描述

2.4 构建

构建自定义执行脚本,这里选择:执行shell,如下图,
在Shell脚本中定义代码打包、上传、运行等步骤。
在这里插入图片描述

2.4.1 执行命令

这里采用Shell执行具体的文件和传入外部参数的方式,执行shell,如下图。

sh /var/jenkins_home/workspace/tutorial-deploy.sh $project_name $branch $host $port

在这里插入图片描述

2.4.2 脚本

构建服务的脚本有两部分:
(1)构建打包脚本;
(2)启动服务脚本;

注意:

Jenkins使用Docker部署,所有的操作都是在容器内,
因此,想在容器内操作另一台服务器,需要先登录,再操作,
本脚本中使用公钥的方式,登录到其他服务器,
所以,为了是脚本正常执行,在Jenkins的容器内,需要生成公钥和秘钥。

2.4.2.1 构建脚本

由于配置了路径挂载,在本地目录添加脚本即可:
/home/xindaqi/software/install/jekins/data/workspace/tutorial-deploy.sh
会自动传输到Jenkins镜像内。

#!/bin/bash
project_name=$1 #项目名字
branch=$2 #分支
host=$3
port=$4
currentTime=`date "+%Y%m%d_%H%M%S"`

#代码路径
base_dir="/var/jenkins_home/workspace/"
prj_dir=$base_dir$project_name
mvn_dir=$base_dir"apache-maven-3.8.1/bin"
remote_dir="/home/xindaqi/project/deploy-project/$project_name"

#远端项目路径
echo "####################ProjectName######################"
echo $project_name

echo "####################开始pull code######################"
cd $prj_dir && git pull && git checkout origin/$branch && git pull
echo "################开始编译##########################"
sleep 2
cd $prj_dir && $mvn_dir/mvn clean -Dmaven.test.skip=true package
echo "####################开始执行备份######################"
#执行备份
ssh xindaqi@$host -p$port "[ ! -d $remote_dir/backup ] && mkdir -p $remote_dir/backup || echo '存在' "
ssh xindaqi@$host -p$port  "mv $remote_dir/*.jar $remote_dir/backup/"
echo "#################开始拷贝jar包#######################"
#拷贝jar包到远程主机
scp -P$port -r $prj_dir/target/*.jar xindaqi@$host:$remote_dir #不带日志的jar包
#查看新的jar包名字
jarname=`ssh xindaqi@$host -p$port "ls -lt $remote_dir/*.jar" | awk '{print $9}' |awk -F '[/]' '{print $5}'`
echo "#################jarname=$jarname#######################"
#启动服务
echo "#################开始启动服务#######################"
ssh xindaqi@$host -p$port "cd $remote_dir && sh start.sh $project_name"
echo "#################Running#######################"
2.4.2.2 启动脚本

/home/xindaqi/project/deploy-project/tutorial/start.sh

#!/bin/sh
project_name=$1
nohup java -jar tutorial.jar >nohup.out 2>&1 &

2.5 生成公钥和秘钥

2.5.1 进入Jenkins容器

sudo docker exec -it fe682ca1d6aa /bin/sh

2.5.2 生成秘钥

ssh-keygen -t rsa

在这里插入图片描述

2.5.3 获取公钥

cat /var/jenkins_home/.ssh/id_rsa.pub

在这里插入图片描述

2.5.4 公钥传输

将容器内生成的公钥,添加到目的服务器的文件中:
进入文件夹:/home/xindaqi/.ssh
将公钥添加到文件:authorized_keys
这个文件可以配置多个公钥,每个公钥换行存储。
在这里插入图片描述

2.6 任务列表

通过控制面板查看任务列表,如下图。
构建任务,通过指定任务,如tutorial任务,
Build with Parameters(参数构建)。
在这里插入图片描述

2.7 参数构建

通过参数构建服务,如工程:tutorial。
上面已经配置参数,效果如下图所示。
执行:开始构建。
在这里插入图片描述

2.8 构建过程

2.8.1 控制台

构建任务是,可查看构建过程,如下图。
在这里插入图片描述

2.8.2 日志

通过控制台查看运行日志,如下图所示。
在这里插入图片描述
日志内容如下图所示。
在这里插入图片描述

在这里插入图片描述
查看启动的服务:

jps -l

在这里插入图片描述

3 小结

(1)构建任务:自由软件任务;
(2)配置构建参数:外部传参到Shell脚本;
(3)免密登录服务器:容器内生成公钥和私钥;
(4)打包服务:通过登录服务器,使用Maven打包;
(5)启动服务:登录服务器,执行任务,添加守护进程文件:>nohup.out 2>&1。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天然玩家

坚持才能做到极致

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值