HBASE-14220 nightly check that we can build a source tarball.

Signed-off-by: Michael Stack <st...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/36f5e60b
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/36f5e60b
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/36f5e60b

Branch: refs/heads/branch-1.4
Commit: 36f5e60bc5c5a0e0e54a63b63065b48bf0a783a8
Parents: ef51f2c
Author: Sean Busbey <bus...@apache.org>
Authored: Mon Jul 31 01:08:16 2017 -0500
Committer: Andrew Purtell <apurt...@apache.org>
Committed: Tue Aug 8 16:00:33 2017 -0700

----------------------------------------------------------------------
 dev-support/Jenkinsfile | 56 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 56 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/36f5e60b/dev-support/Jenkinsfile
----------------------------------------------------------------------
diff --git a/dev-support/Jenkinsfile b/dev-support/Jenkinsfile
index b5c7660..cdb62b9 100644
--- a/dev-support/Jenkinsfile
+++ b/dev-support/Jenkinsfile
@@ -241,6 +241,62 @@ curl -L  -o personality.sh "${env.PROJET_PERSONALITY}"
         }
       }
     }
+    // This is meant to mimic what a release manager will do to create RCs.
+    // See http://hbase.apache.org/book.html#maven.release
+    stage ('create source tarball') {
+      tools {
+        maven 'Maven (latest)'
+        // this needs to be set to the jdk that ought to be used to build 
releases on the branch the Jenkinsfile is stored in.
+        jdk "JDK 1.7 (latest)"
+      }
+      steps {
+        sh 'mvn --version --offline'
+        dir ("component") {
+          sh '''#!/bin/bash -e
+            echo "Clean..."
+            mvn --batch-mode -DskipTests clean
+            echo "Step 3 Build the source tarball"
+            mvn -Prelease --batch-mode 
-Dmaven.repo.local="${WORKSPACE}/.m2-for-repo" install -DskipTests 
assembly:single -Dassembly.file=hbase-assembly/src/main/assembly/src.xml
+'''
+        }
+        dir ("unpacked_src_tarball") {
+          sh '''#!/bin/bash -e
+            echo "Unpack the source tarball"
+            tar --strip-components=1 -xzf 
../component/hbase-assembly/target/hbase-*-src.tar.gz
+            echo "Building from source artifact."
+            mvn -DskipTests -Prelease --batch-mode 
-Dmaven.repo.local="${WORKSPACE}/.m2-for-src" clean install assembly:single
+            echo "Clean up after checking ability to build."
+            mvn -DskipTests --batch-mode clean
+'''
+        }
+        dir ("component") {
+          sh '''#!/bin/bash -e
+            echo "Clean up the source checkout"
+            mvn -DskipTests --batch-mode clean
+            echo "Diff against source tree"
+            diff --binary --recursive . ../unpacked_src_tarball 
>../diff_output || true
+'''
+        }
+        // expectation check largely based on HBASE-14952
+        sh '''#!/bin/bash -e
+          echo "Checking against things we don't expect to include in the 
source tarball (git related, hbase-native-client, etc.)"
+          cat >known_excluded <<END
+Only in .: .git
+Only in .: .gitattributes
+Only in .: .gitignore
+Only in .: hbase-native-client
+END
+          if ! diff known_excluded diff_output >/dev/null ; then
+            echo "Any output here are unexpected differences between the 
source artifact we'd make for an RC and the current branch."
+            echo "The expected differences are on the < side and the current 
differences are on the > side."
+            echo "In a given set of differences, '.' refers to the branch in 
the repo and 'unpacked_src_tarball' refers to what we pulled out of the 
tarball."
+            diff known_excluded diff_output
+          else
+            echo "Everything looks as expected."
+          fi
+'''
+      }
+    }
   }
   post {
     failure {

Reply via email to