jenkins 使用 - 部署 springboot 应用

接上文 jenkins 搭建 - rpm

主要步骤

  • 使用 gitlab 部署专用账户, 拉取指定分支, 指定commit的代码
  • 使用 maven 编译和打包
  • 远程发送部署包到指定的主机和目录
  • 操作远程主机, 杀死旧的进程, 启动新的进程

配套环境

# 安装 git
yum install git

# 安装 maven
wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
sed -i s/\$releasever/6/g /etc/yum.repos.d/epel-apache-maven.repo
yum install -y maven
# 为 maven 配置镜像加速
less /usr/share/apache-maven/conf/settings.xml
# 修改 localRepository (个人喜好, 仅供参考)
## /usr/share/apache-maven/repo
# 添加 mirror
##       
##          nexus-aliyun
##          central
##          Nexus aliyun
##          http://maven.aliyun.com/nexus/content/groups/public
##      

# 开放 jenkins 用户的 bash 权限, jenkins 服务默认是由 jenkins 用户和组启动
less /etc/passwd   # 将 jenkins 那一行的行尾, false 改为 bash

# 切换 jenkins 用户, 配置远程主机的免密登录
su jenkins
cd ~/.ssh
ssh-keygen -t rsa
ssh-copy-id [email protected]

新建任务

  • 起名字, 选择 自由风格, 确认
  • General

丢弃旧的构建 - 建议勾选, 只保存有限的历史记录
参数化构建过程 - 建议勾选, 使用变量编写脚本, 复用性和可维护性会大大提高
以下是本示例使用的参数 (均为字符参数, 结合shell使用)

参数名 参数说明 参数值
PROJECT_NAME 项目名称 mms-backend
REPO_URL 仓库地址 http://username:[email protected]/first/mms-backend.git
CHECKOUT_BRANCH 检出分支 master
COMMIT_ID 提交短ID f2b45d3 或 HEAD
MVN_CMD mvn打包命令 clean package -U -Dmaven.test.skip=true
JAR_NAME jar包名称(不带后缀) mms-backend-1.0
REMOTE_URL 远端用户地址 [email protected]
REMOTE_DIR 远端目录('/'结尾) /opt/springboot/mms/
JAVA_OPTION jvm参数 -Xms128M -Xmx128M -server -Dfile.encoding=UTF-8
JAVA_PROFILE 自定义参数 --spring.profiles.active=beta
  • 源码管理 - 无
  • 构建触发器

触发远程构建 (例如,使用脚本) - 按需勾选, 通过 http 远程执行任务
其他工程构建后触发 - 按需勾选
定时构建 - 按需勾选

  • 构建

增加构建步骤 > 执行shell

# 清除上次构建的内容
rm -rf $PROJECT_NAME
# 拉取代码
git clone $REPO_URL
cd $PROJECT_NAME
git checkout $BRANCH
git reset --hard $COMMIT_ID
export PARAM_0=`git rev-parse --short $COMMIT_ID`
# 打包
mvn $MVN_CMD
cd target
# 发送远程主机
scp $JAR_NAME.jar $REMOTE_URL:$REMOTE_DIR$JAR_NAME.$CHECKOUT_BRANCH.$PARAM_0.jar
export PARAM_1=`ssh $REMOTE_URL ps -ef | grep $REMOTE_DIR$PROJECT_NAME | awk '{print $2}'`
# 杀死旧进程
ssh $REMOTE_URL bash -c "'kill -9 $PARAM_1'" || true
sleep 1
# 启动新进程
ssh $REMOTE_URL bash -c "'rm -f $REMOTE_DIR$PROJECT_NAME.jar'"
ssh $REMOTE_URL bash -c "'ln -s $REMOTE_DIR$JAR_NAME.$CHECKOUT_BRANCH.$PARAM_0.jar $REMOTE_DIR$PROJECT_NAME.jar'"
ssh $REMOTE_URL bash -c "'nohup java $JAVA_OPTION -jar $REMOTE_DIR$PROJECT_NAME.jar $JAVA_PROFILE >/dev/null 2>&1 &'"
  • 构建后操作 - 按需添加

执行任务

  • 在首页点击任务名称, 进入任务详情
  • 点击左侧的 Build with Parameters, 确认参数后, 开始构建
  • 查看构建历史, 控制台输出, 检查脚本执行过程

远程执行任务

  • 添加远程访问的授权Token

右上角, 点击用户名, 左侧点击设置, 在 API Token 下, 添加新 Token, 记录下来

  • 关闭跨域拦截

主页 > 系统管理 > 全局安全设置 > 跨站请求伪造保护, 取消勾选

  • 通过 url 执行任务

四个要素: 用户名, 用户token, 任务名, 任务token (任务 > 配置 > 构建 > 触发远程构建中配置)
http://username:apitoken@192.168.x.x:8080/job/jobname/buildWithParameters?token=jobtoken&cause=测试远程执行

  • 查看构建历史, 控制台输出, 检查脚本执行过程

你可能感兴趣的:(jenkins 使用 - 部署 springboot 应用)