《笔记》Jenkinsfile 与 自动化部署shell脚本

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 启动成功 "

你可能感兴趣的:(自动化,Linux,环境,自动化,个人开发,jenkins)