| /* |
| * 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() |
| } |