You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by ma...@apache.org on 2018/05/17 20:14:34 UTC
[archiva-parent] 01/02: Switching to declarative jenkins pipeline
This is an automated email from the ASF dual-hosted git repository.
martin_s pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/archiva-parent.git
commit 64a37b55b51b1f33b3f327b592b763bd309e9828
Author: Martin Stockhammer <ma...@ars.de>
AuthorDate: Thu May 17 22:13:22 2018 +0200
Switching to declarative jenkins pipeline
---
Jenkinsfile | 120 +++++++++++++++++++++++++++++++-----------------------------
1 file changed, 62 insertions(+), 58 deletions(-)
diff --git a/Jenkinsfile b/Jenkinsfile
index 451adfa..78a608f 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -1,78 +1,82 @@
-def labels = 'ubuntu'
-def buildJdk = 'JDK 1.8 (latest)'
-def buildMvn = 'Maven 3.5.2'
-def deploySettings = 'DefaultMavenSettingsProvider.1331204114925'
+LABEL = 'ubuntu'
+buildJdk = 'JDK 1.8 (latest)'
+buildMvn = 'Maven 3.5.2'
+deploySettings = 'DefaultMavenSettingsProvider.1331204114925'
-node(labels) {
- try {
- stage('Checkout') {
- checkout scm
- }
- } catch (Exception e) {
- notifyBuild("Checkout Failure")
- throw e
+pipeline {
+ agent {
+ label "${LABEL}"
}
+ stages {
- try {
- stage('Build') {
- timeout(20) {
- withMaven(maven: buildMvn, jdk: buildJdk,
- mavenSettingsConfig: deploySettings,
- mavenLocalRepo: ".repository"
- )
- {
- // Run test phase / ignore test failures
- sh "mvn -B -U -e -fae clean install"
- }
- // Report failures in the jenkins UI
- //step([$class: 'JUnitResultArchiver', testResults: '**/target/surefire-reports/TEST-*.xml'])
- }
- if (isUnstable()) {
- //notifyBuild("Unstable / Test Errors")
+ stage('Checkout') {
+ steps {
+ checkout scm
+ }
+ post {
+ failure {
+ notifyBuild("Checkout failure (${currentBuild.currentResult})")
+ }
+ }
}
- }
- } catch (Exception e) {
- notifyBuild("Test Failure")
- throw e
- }
- try {
- stage('Publish') {
- timeout(10) {
- withMaven(maven: buildMvn, jdk: buildJdk,
- mavenSettingsConfig: deploySettings,
- mavenLocalRepo: ".repository"
- )
- {
- sh "mvn -B -U -e -fae deploy"
- }
- // Report failures in the jenkins UI
- //step([$class: 'JUnitResultArchiver', testResults: '**/target/surefire-reports/TEST-*.xml'])
+
+ stage('BuildAndDeploy') {
+ steps {
+ timeout(20) {
+ withMaven(maven: buildMvn, jdk: buildJdk,
+ mavenSettingsConfig: deploySettings,
+ mavenLocalRepo: ".repository",
+ options: [concordionPublisher(disabled: true), dependenciesFingerprintPublisher(disabled: true),
+ findbugsPublisher(disabled: true), artifactsPublisher(disabled: true),
+ invokerPublisher(disabled: true), jgivenPublisher(disabled: true),
+ junitPublisher(disabled: true, ignoreAttachments: false),
+ openTasksPublisher(disabled: true), pipelineGraphPublisher(disabled: true)]
+ )
+ {
+ // Run test phase / ignore test failures
+ sh "mvn -B -U -e -fae clean deploy"
+ }
+ // Report failures in the jenkins UI
+ //step([$class: 'JUnitResultArchiver', testResults: '**/target/surefire-reports/TEST-*.xml'])
+ }
+ }
+ post {
+ success {
+ archiveArtifacts '**/target/*.pom'
+ }
+ failure {
+ notifyBuild("Failure in BuildAndDeploy stage")
+ }
+ }
}
- if (isUnstable()) {
- //notifyBuild("Unstable / Test Errors")
+ }
+ post {
+ unstable {
+ notifyBuild("Unstable Build")
+ }
+ always {
+ cleanWs deleteDirs: true, notFailBuild: true, patterns: [[pattern: '.repository', type: 'EXCLUDE']]
+ }
+ success {
+ script {
+ def previousResult = currentBuild.previousBuild?.result
+ if (previousResult && !currentBuild.resultIsWorseOrEqualTo(previousResult)) {
+ notifyBuild("Fixed")
+ }
}
}
- } catch (Exception e) {
- notifyBuild("Publish Failure")
- throw e
}
}
-// Test if the Jenkins Pipeline or Step has marked the
-// current build as unstable
-def isUnstable() {
- return currentBuild.result == "UNSTABLE"
-}
-
// Send a notification about the build status
def notifyBuild(String buildStatus) {
// default the value
buildStatus = buildStatus ?: "UNKNOWN"
def email = "notifications@archiva.apache.org"
- def summary = "${env.JOB_NAME}#${env.BUILD_NUMBER} - ${buildStatus}"
+ def summary = "${env.JOB_NAME}#${env.BUILD_NUMBER} - ${buildStatus} - ${currentBuild?.currentResult}"
def detail = """<h4>Job: <a href='${env.JOB_URL}'>${env.JOB_NAME}</a> [#${env.BUILD_NUMBER}]</h4>
<p><b>${buildStatus}</b></p>
<table>
@@ -90,4 +94,4 @@ def notifyBuild(String buildStatus) {
)
}
-// vim: et:ts=2:sw=2:ft=groovy
+// vim: et:ts=4:sw=4:ft=groovy
--
To stop receiving notification emails like this one, please contact
martin_s@apache.org.