#!groovy
def oper_checkout(SCM_TYPE,SCM_URL,SCM_AUTH_PASS,SCM_BRANCH=' ',SCM_AUTH_USER=' '){
if (SCM_TYPE =='git') {
return checkout([$class: "GitSCM", branches: [[name: "${SCM_BRANCH}"]], \
doGenerateSubmoduleConfigurations: false, extensions: [], \
submoduleCfg: [], userRemoteConfigs: [[credentialsId: "${SCM_AUTH_PASS}", \
url: "${SCM_URL}"]]])
}
else if (SCM_TYPE == 'tfs' ) {
// need SCM_AUTH_USER args
return checkout(changelog: false, poll: false, scm: [$class: 'TeamFoundationServerScm', \
password: new hudson.util.Secret("$SCM_AUTH_PASS"), projectPath: "${SCM_BRANCH}", \
serverUrl: "${SCM_URL}", useOverwrite: true, useUpdate: true, userName: "$SCM_AUTH_USER", \
workspaceName: 'Hudson-${JOB_NAME}'])
}
else if (SCM_TYPE == 'svn' ){
return checkout([$class: 'SubversionSCM', additionalCredentials: [], excludedCommitMessages: '', excludedRegions: '', \
excludedRevprop: '', excludedUsers: '', filterChangelog: false, ignoreDirPropChanges: false, includedRegions: '', \
locations: [[cancelProcessOnExternalsFail: true, credentialsId: "${SCM_AUTH_PASS}",\
depthOption: 'infinity', ignoreExternalsOption: true, local: '.', \
remote: "${SCM_URL}" ]], \
quietOperation: true, workspaceUpdater: [$class: 'CheckoutUpdater']])
}
}
pipeline {
environment {
// define output packagename
sourcefile="project_name"
//Tomcat Home Path
SCM_TYPE = 'git'
SCM_URL = 'gitutl'
SCM_AUTH_PASS = 'jenkins_auth'
SCM_BRANCH = 'dev'
SCM_AUTH_USER = ' '
// build cmd
BUILD_CMD = 'mvn clean package'
// define app env
START_CMD = '/opt/apache-tomcat-8.5.34/bin/startup.sh'
STOP_CMD = '/opt/apache-tomcat-8.5.34/bin/shutdown.sh'
APP_PATH = '/opt/apache-tomcat-8.5.34/webapps/ROOT'
// Not need often change
zipfile="${sourcefile}.zip"
outfile="${sourcefile}.war"
}
tools {
maven 'maven3'
jdk 'jdk-8'
}
agent { label 'master' }
options {
buildDiscarder(logRotator(numToKeepStr: '30', artifactNumToKeepStr: '30' ))
}
stages{
stage('checkout'){
steps{
oper_checkout(SCM_TYPE,SCM_URL,SCM_AUTH_PASS,SCM_BRANCH,SCM_AUTH_USER)
}
}
stage('build'){
steps{
sh """
${BUILD_CMD};
"""
// sh """
// find target -name '*.war' | xargs -i mv {} target/${sourcefile}-1.0.jar
// """
script{
rvfind = sh returnStdout: true,script: "find target -name '${sourcefile}*.war'"
if (rvfind == ''){
outfile = "${sourcefile}.jar"
rvfind = sh returnStdout: true, script: "find target -name '${sourcefile}*.jar'"
}
rvfind = rvfind.trim()
sh """
if test ! -d ${sourcefile};then mkdir ${sourcefile};else rm -rf ${sourcefile}/* ; fi;
"""
if (outfile.contains('war')){
sh """
unzip -q ${rvfind} -d ${sourcefile};
"""
} else {
sh " cp ${rvfind} ${sourcefile}/;"
}
sh ""
}
script {
if (outfile.contains('war')){
if (APP_PATH.contains('ROOT')) {
sh """
cd ${sourcefile};
zip -qry $zipfile .;
cd .. && mv ${sourcefile}/$zipfile .;
"""
}else{
sh """
zip -qry $zipfile ${sourcefile};
"""
}
} else {
sh """
cd ${sourcefile};
zip -qry $zipfile .;
cd .. && mv ${sourcefile}/$zipfile .;
"""
}
}
stash includes: "$zipfile", name: "$zipfile"
}
}
stage('service oper'){
agent { label '192.168.8.105'}
steps{
sh 'rm -rf ./*'
unstash "$zipfile"
sh '''
echo "Normal Stop Process ...";
sudo su -c "$STOP_CMD" && echo 'Process Stop Success' || echo 'Process Stop Fariure'
'''
script {
if (APP_PATH.contains('ROOT')) {
sh '''
sudo su -c "if test ! -d $APP_PATH;then mkdir -p $APP_PATH;fi; cd ${APP_PATH};rm -rf ./*;unzip $WORKSPACE/$zipfile;";
'''
} else {
sh '''
sudo su -c "if test ! -d $APP_PATH;then mkdir -p $APP_PATH;fi; cd ${APP_PATH};rm -rf ./${sourcefile}*;unzip $WORKSPACE/$zipfile;";
'''
}
}
sh '''
echo "Normal Start Process ...";
sudo su -c "$START_CMD" && echo 'Process Start Success' || echo 'Process Start Fariure'
'''
}
}
}
}