Jenkinsfile脚本
//项目名,你的项目名称
def project_name = ''
//项目版本,常用版本
def tag = '1.0-SNAPSHOT'
//Gitee ID,你的Gitee(码云)秘钥凭证
def id = ''
//Gitee 项目地址
def git_url = ''
//远程部署路径,你的项目部署到远程服务器的地址
def project_file="/usr/local/webService/"
//sh 脚本,你的自动化部署脚本
def sh_name="project.sh"
//sh 远程服务器,你的远程服务器名称
def service=""
pipeline {
agent any
stages {
stage('拉取代码') {
steps {
checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: "${id}", url: "${git_url}"]]])
}
}
stage('清理并且打包项目') {
steps {
sh 'mvn clean package'
}
}
stage('远程部署服务') {
steps {
sshPublisher(publishers: [sshPublisherDesc(configName: "${service}", transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: "sh ${project_file}/${sh_name} ${project_name}-${tag} ${project_file} ${project_name} ${sh_name}", execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'target/*.jar,project.sh')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: true)])
}
}
}
}
project.sh 脚本
#!/bin/bash
#阻止jenkins自动结束启动程序
JENKINS_NODE_COOKIE=dontKillMe
#$1 项目名+版本 $2 项目部署路径 $3项目名 $4sh脚本
#部署远程服务器重新刷新环境
echo "刷新环境"
source /etc/profile
target="target"
echo "切换目录"
cd $2
echo "创建项目目录 $3"
mkdir $3
echo "复制项目 $2/$target/$1.jar"
cp $target/$1.jar $3/
echo "复制sh脚本 $4"
cp $4 $3/
echo "显示 $1 路径"
echo "切换项目目录 $3"
cd $3
echo "删除旧文件"
rm -rf ../$target
rm -rf ../$4
echo "查询项目是否启动"
isStart=$(ps -ef | grep $1.jar | awk 'NR==1 {print $3 }')
echo "检查程序是在否启动"
if [ $isStart == 1 ]
then
echo "停止项目 $1"
startId=$(ps -ef | grep $1.jar | awk 'NR==1 {print $2 }')
echo "$1 项目启动的ID是:$startId, 结束进程"
kill -9 $startId
fi
echo "启动项目 $1"
nohup java -jar $1.jar>$1.log 2>&1 &
echo "$1 启动成功 "