登录Jenkins并创建视图
- 登录Jenkins后点击下图中加号
- 填写视图名称,根据自己具体项目可以具体定义,这里以test-demo为例,点击create按钮,视图创建成功
创建任务流程
-
选择自己的试图后,选择左侧的新建任务按钮,弹出任务框
-
点击新建任务后,弹出下图所示的内容
-
点击ok后,弹出下图所示内容,这里选择参数化构建,选择Git参数
-
选择Git参数后,弹出如下内容,名称随意填写,这里我天的是version,参数类型我这里选择分支,默认分支选择master
-
填好上面的内容,鼠标拉到最后,进行一键部署脚本编写,在流水线中编写脚本
-
进行脚本编写,jenkins所在服务器一定要和目标服务器做好免密登录
pipeline {
agent any
environment {
giturl="这里填写自己项目的gitlab地址"
target_server_path="/mnt/test/" #项目部署路径
tar_name="demo.tar.gz" #打的是项目的tar包,我这里用的是自定义打包,
tar_name_back="demo.tar.gz.back" #原来的tar包备份
testchine_ssh="root@127.0.0.1" #目标服务ip,这里我已127.0.0.1为例,登录目标服务器需要做服务之间的免密登录
}
// 存放所有任务的合集
stages {
stage('拉取Git代码') {
steps {
checkout([$class: 'GitSCM', branches: [[name: "${version}"]], browser: [$class: 'GitLab', repoUrl: ''],
extensions: [],
userRemoteConfigs: [[credentialsId: '67c2edba-f7c9-4cdf-a1d4-277c4896ef4f', url: "${giturl}"]]])
}
}
stage('构建代码') {
steps {
sh 'mvn clean package -Dmaven.test.skip=true'
sh 'ssh ${testchine_ssh} "cd ${target_server_path}; rm -rf ${tar_name_back};mv ${tar_name} ${tar_name_back}; rm -rf demo"'
sh 'scp -r ${WORKSPACE}/target/demo.tar.gz ${testchine_ssh}:${target_server_path}/'
}
}
stage('重启服务') {
steps {
echo '重启服务'
sh "ssh ${testchine_ssh} 'cd ${target_server_path}; tar -zxvf demo.tar.gz; ./restart.sh restart'"
}
}
}
post {
always {
echo '构建结束...'
}
success {
echo '恭喜您,构建成功!!!'
}
failure {
echo '抱歉,构建失败!!!'
}
unstable {
echo '该任务已经被标记为不稳定任务....'
}
changed {
echo ''
}
}
}
- gitlab的凭证创建
- 选择系统管理
- 进入系统管理后,鼠标拉到最后,选择Manage Credentials
- 进入后点击添加凭证
- 添加好凭证,点击创建,就ok了
- 配置好,点击应用,就可以进行一键打包部署,首次打包部署时,只有你填写默认分支。
- 项目重启脚本
#! /bin/bash
ID=`ps -ef|grep demo.jar|grep -v grep|awk '{print $2}'`
echo "${ID}"
if [ -z "${ID}" ];
then
echo "正在启动..."
source /etc/profile #一定要有这个命令,否则脚本无法执行
nohup java -jar -Dspring.config.location=bootstrap-test.yml -Xms1024M -Xmx2048M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/mnt/openapi/heapdump.hprof -XX:+PrintGC -XX:+PrintGCDetails -Xloggc:/mnt/openapi/logs/gc.log demo.jar > /dev/null 2>&1 &
else
echo $ID
kill -9 $ID
echo "终止进程 $ID 成功"
echo "正在启动..."
source /etc/profile
nohup java -jar -Dspring.config.location=bootstrap-test.yml -Xms1024M -Xmx2048M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/mnt/openapi/heapdump.hprof -XX:+PrintGC -XX:+PrintGCDetails -Xloggc:/mnt/openapi/logs/gc.log demo.jar > /dev/null 2>&1 &
resID=`ps -ef|grep demo.jar|grep -v grep|awk '{print $2}'`
echo "${resID}"
echo "启动完成"
fi