This is an automated email from the ASF dual-hosted git repository. britter pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-lang.git
The following commit(s) were added to refs/heads/master by this push: new 4b0f3ed Add proposal for Jenkins Pipeline (#410) 4b0f3ed is described below commit 4b0f3ed081fc9b82778deeb7b7babef5b6f5ecf4 Author: Benedikt Ritter <benerit...@gmail.com> AuthorDate: Sat Mar 23 13:50:53 2019 +0100 Add proposal for Jenkins Pipeline (#410) Introduces a Jenkins pipeline with a build stage and an optional deploy stage that is only executed when master branch is build. Post actions send mails in case of build failures. --- Jenkinsfile | 115 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..36799d0 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,115 @@ +#!groovy + +/* + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +pipeline { + agent { + node { + label 'ubuntu' + } + } + + tools { + maven 'Maven 3 (latest)' + jdk 'JDK 1.8 (latest)' + } + + stages { + stage('Build') { + steps { + sh 'mvn' + } + post { + always { + junit(testResults: '**/surefire-reports/*.xml', allowEmptyResults: true) + } + } + } + stage('Deploy') { + when { + branch 'master' + } + steps { + sh 'mvn deploy' + } + } + } + + // Send out notifications on unsuccessful builds. + post { + // If this build failed, send an email to the list. + failure { + script { + if(env.BRANCH_NAME == "master") { + def state = (currentBuild.previousBuild != null) && (currentBuild.previousBuild.result == 'FAILURE') ? "Still failing" : "Failure" + emailext( + subject: "[Lang] Change on branch \"${env.BRANCH_NAME}\": ${env.JOB_NAME} - Build # ${env.BUILD_NUMBER} - $state", + body: """The Apache Jenkins build system has built ${env.JOB_NAME} (build #${env.BUILD_NUMBER}) + +Status: ${currentBuild.result} + +Check console output at <a href="${env.BUILD_URL}">${env.BUILD_URL}</a> to view the results. +""", + to: "notificati...@commons.apache.org", + recipientProviders: [[$class: 'DevelopersRecipientProvider']] + ) + } + } + } + + // If this build didn't fail, but there were failing tests, send an email to the list. + unstable { + script { + if(env.BRANCH_NAME == "master") { + def state = (currentBuild.previousBuild != null) && (currentBuild.previousBuild.result == 'UNSTABLE') ? "Still unstable" : "Unstable" + emailext( + subject: "[Lang] Change on branch \"${env.BRANCH_NAME}\": ${env.JOB_NAME} - Build # ${env.BUILD_NUMBER} - $state", + body: """The Apache Jenkins build system has built ${env.JOB_NAME} (build #${env.BUILD_NUMBER}) + +Status: ${currentBuild.result} + +Check console output at <a href="${env.BUILD_URL}">${env.BUILD_URL}</a> to view the results. +""", + to: "notificati...@commons.apache.org", + recipientProviders: [[$class: 'DevelopersRecipientProvider']] + ) + } + } + } + + // Send an email, if the last build was not successful and this one is. + success { + script { + if ((env.BRANCH_NAME == "master") && (currentBuild.previousBuild != null) && (currentBuild.previousBuild.result != 'SUCCESS')) { + emailext ( + subject: "[Lang] Change on branch \"${env.BRANCH_NAME}\": ${env.JOB_NAME} - Build # ${env.BUILD_NUMBER} - Back to normal", + body: """The Apache Jenkins build system has built ${env.JOB_NAME} (build #${env.BUILD_NUMBER}) + +Status: ${currentBuild.result} + +Check console output at <a href="${env.BUILD_URL}">${env.BUILD_URL}</a> to view the results. +""", + to: "notificati...@commons.apache.org", + recipientProviders: [[$class: 'DevelopersRecipientProvider']] + ) + } + } + } + } +}