Jenkins Pipeline - War File deployen

Mit dem folgende Script kann man eine war Datei mit Jenkins Pipeline auf einem Tomcat deployen. Für das deployen mit curl auf einem tomcat wird ein User mit der Rolle manager-script benötigt.

node {
def devHost = ‘localhost’
// Mark the code checkout ‘stage’….
stage(‘Checkout’) {
checkout changelog: false, poll: true, scm: [$class: ‘GitSCM’, branches: [[name: ‘/branchname’]], doGenerateSubmoduleConfigurations: false,
extensions: [[$class: ‘CloneOption’, depth: 2, noTags: true, reference: ‘’, shallow: true, timeout: 15]], submoduleCfg: [],
userRemoteConfigs: [[credentialsId: ‘credentialsId’, url: ‘giturl’, name: ‘origin’, refspec: ‘+refs/heads/branchname:refs/remotes/origin/branchname’]]]
}
// Mark the code build ‘stage’….
stage(‘Deploy’) {
sh “mvn clean package”
deploy(“target/
.war”, devHost, “/serverpath”)
}
stage(‘Archive’) {
archive ‘target/.war,target/**/\failsafe*/,target//*surefire*/**’
}
}
// Deploy file to tomcat
def deploy(file, host, context) {
sh “curl -v -u username:password -T ${file} ‘http://${host}:8080/manager/text/deploy?path=${context}&update=true’”
}

Checkout: Beim checkout wird nur eine Schatten Kopie mit einer Tiefe von 2 vom Ziel Branch heruntergeladen. Das reduziert die Zeit für den checkout. Bei einem

checkout scm

werden hingegen alle branches und auch die History des aktuellen Branches komplett heruntergeladen. Dies wird an dieser Stelle aber nicht benötigt. Deploy Stage: Nach dem bauen wird mittels curl einfach die war Datei auf dem Tomcat deployed. Was noch fehlt ist eine Prüfung ob das deployen erfolgreich war und das Neustarten des Tomcats falls nicht. Die Prüfung kann man mit curl oder wget machen und das Neustarten mit Hilfe einer ssh Verbindung auf den Tomcat.