| /* | |
| * 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 { label 'ubuntu' } | |
| environment { | |
| CASS_HOME = "${WORKSPACE}/temp/apache-cassandra-2.1.20" | |
| ES_HOME = "${WORKSPACE}/temp/elasticsearch-1.7.5" | |
| } | |
| tools { | |
| maven 'maven_3_latest' | |
| jdk 'jdk_1.8_latest' | |
| } | |
| options { | |
| timeout(time: 120, unit: 'MINUTES') | |
| } | |
| stages { | |
| stage ('Initialize') { | |
| steps { | |
| sh ''' | |
| echo "PATH = ${PATH}" | |
| echo "M2_HOME = ${M2_HOME}" | |
| ''' | |
| emailext ( | |
| subject: "STARTED : UG Build Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'", | |
| body: """UG Build Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' has been kicked off \nCheck output at '${env.BUILD_URL}'""", | |
| recipientProviders: [[$class: 'RequesterRecipientProvider'], [$class: 'DevelopersRecipientProvider']] | |
| ) | |
| } | |
| } | |
| stage ('Build Usergrid-Java') { | |
| steps { | |
| git 'https://github.com/apache/usergrid-java.git' | |
| sh ''' | |
| mvn clean install -DskipTests=true | |
| ''' | |
| } | |
| } | |
| stage ('Setup C*, ES and Code') { | |
| steps { | |
| sh ''' | |
| mkdir -p $WORKSPACE/temp | |
| cd $WORKSPACE/temp | |
| rm -rf * | |
| wget http://archive.apache.org/dist/cassandra/2.1.20/apache-cassandra-2.1.20-bin.tar.gz | |
| tar -xvf apache-cassandra-2.1.20-bin.tar.gz | |
| wget https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.7.5.tar.gz | |
| tar -xvf elasticsearch-1.7.5.tar.gz | |
| echo "Setup C* and ES." | |
| ''' | |
| git 'https://github.com/apache/usergrid.git' | |
| } | |
| } | |
| stage ('Build Usergrid Stack Grp 1') { | |
| steps { | |
| startDBs() | |
| sh ''' | |
| mvn clean install -f stack/build-tools/pom.xml | |
| mvn clean install -f stack/config/pom.xml | |
| mvn clean install -f stack/corepersistence/pom.xml | |
| mvn clean install -f stack/core/pom.xml | |
| ''' | |
| stopDBs() | |
| } | |
| } | |
| stage ('Build Usergrid Stack Grp 2') { | |
| steps { | |
| startDBs() | |
| sh ''' | |
| mvn clean install -f stack/services/pom.xml | |
| ''' | |
| stopDBs() | |
| } | |
| } | |
| stage ('Build Usergrid Stack Grp 3') { | |
| steps { | |
| startDBs() | |
| sh ''' | |
| mvn clean install -f stack/rest/pom.xml | |
| ''' | |
| stopDBs() | |
| } | |
| } | |
| stage ('Build Usergrid Stack Grp 4') { | |
| steps { | |
| startDBs() | |
| sh ''' | |
| mvn clean install -f stack/tools/pom.xml | |
| mvn clean install -f stack/query-validator/pom.xml | |
| ''' | |
| stopDBs() | |
| } | |
| } | |
| } | |
| post { | |
| always { | |
| echo 'End of pipeline' | |
| junit 'stack/**/surefire-reports/*.xml' | |
| sh 'ps -ef | grep cassandra' | |
| sh 'ps -ef | grep elastic' | |
| deleteDir() /*clean up our workspace */ | |
| } | |
| success { | |
| echo 'Usergrid build and tests succeeded' | |
| emailext ( | |
| subject: "SUCCESS : UG Build Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'", | |
| body: """UG Build Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' has completed SUCCESSFULLY \nCheck output at '${env.BUILD_URL}'""", | |
| recipientProviders: [[$class: 'RequesterRecipientProvider'], [$class: 'DevelopersRecipientProvider']] | |
| ) | |
| } | |
| failure { | |
| echo 'Usergrid build and/or tests failed' | |
| emailext ( | |
| subject: "FAILURE : UG Build Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'", | |
| body: """UG Build Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' has FAILED \nCheck output at '${env.BUILD_URL}'""", | |
| recipientProviders: [[$class: 'CulpritsRecipientProvider'], [$class: 'RequesterRecipientProvider'], [$class: 'DevelopersRecipientProvider']] | |
| ) | |
| } | |
| } | |
| } | |
| def stopDBs() { | |
| sh ''' | |
| echo "Stopping C* and ES ..." | |
| $CASS_HOME/bin/nodetool status | |
| $CASS_HOME/bin/nodetool drain | |
| kill -9 $(pgrep -if 'cassandra') | |
| kill -9 $(pgrep -if 'elastic') | |
| ps -ef | grep -i cassandra | |
| ps -ef | grep -i elastic | |
| rm -rf $CASS_HOME/data/* | |
| rm -rf $CASS_HOME/logs/* | |
| rm -rf $ES_HOME/data/* | |
| rm -rf $ES_HOME/logs/* | |
| echo "Stopped C* and ES." | |
| ''' | |
| } | |
| def startDBs() { | |
| sh ''' | |
| echo "Starting C* and ES ..." | |
| $CASS_HOME/bin/cassandra | |
| $ES_HOME/bin/elasticsearch -d | |
| echo "Started C* and ES. Waiting 1 min before starting tests ..." | |
| sleep 60 | |
| ''' | |
| } | |
| def resetState() { | |
| stopDBs() | |
| startDBs() | |
| } |