summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--build-aux/Jenkinsfile.pr63
1 files changed, 32 insertions, 31 deletions
diff --git a/build-aux/Jenkinsfile.pr b/build-aux/Jenkinsfile.pr
index 34955f6bb..be352d110 100644
--- a/build-aux/Jenkinsfile.pr
+++ b/build-aux/Jenkinsfile.pr
@@ -12,17 +12,6 @@
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
// License for the specific language governing permissions and limitations under
// the License.
-build_and_test = '''
-mkdir -p ${COUCHDB_IO_LOG_DIR} ${ERLANG_VERSION}
-cd ${ERLANG_VERSION}
-rm -rf build
-mkdir build
-cd build
-tar -xf ${WORKSPACE}/apache-couchdb-*.tar.gz
-cd apache-couchdb-*
-./configure
-make check || (make build-report && false)
-'''
pipeline {
@@ -49,7 +38,10 @@ pipeline {
// Search for ERLANG_VERSION
// see https://issues.jenkins.io/browse/JENKINS-61047 for why this cannot
// be done parametrically
- MIN_ERLANG_VERSION = '21'
+ MINIMUM_ERLANG_VERSION = '21'
+
+ // Ensure that the SpiderMonkey version is appropriate for the $DOCKER_IMAGE
+ SM_VSN = '78'
}
options {
@@ -65,7 +57,7 @@ pipeline {
stage('Build Release Tarball') {
agent {
docker {
- image "${DOCKER_IMAGE_BASE}-${MIN_ERLANG_VERSION}"
+ image "${DOCKER_IMAGE_BASE}-${MINIMUM_ERLANG_VERSION}"
label 'docker'
args "${DOCKER_ARGS}"
registryUrl 'https://docker.io/'
@@ -74,33 +66,25 @@ pipeline {
}
steps {
timeout(time: 15, unit: "MINUTES") {
- sh '''
- set
- rm -rf apache-couchdb-*
- ./configure
- make erlfmt-check
- make dist
- chmod -R a+w * .
- '''
+ sh( script: 'rm -rf apache-couchdb-*', label: 'Clean out workspace' )
+ sh( script: './configure', label: 'Retrieve dependencies and configure build system' )
+ sh( script: 'make erlfmt-check', label: 'Verify Erlang coding style' )
+ sh( script: 'make elixir-check-formatted', label: 'Verify Elixir coding style' )
+ sh( script: 'make dist', label: 'Build self-contained release' )
}
}
post {
success {
- stash includes: 'apache-couchdb-*.tar.gz', name: 'tarball'
+ stash includes: 'apache-couchdb-*.tar.gz', name: 'release-tarball'
}
cleanup {
// UGH see https://issues.jenkins-ci.org/browse/JENKINS-41894
- sh 'rm -rf ${WORKSPACE}/*'
+ sh( script: 'rm -rf ${WORKSPACE}/*', label: 'Clean up after ourselves' )
}
}
} // stage Build Release Tarball
- // TODO Rework once Improved Docker Pipeline Engine is released
- // https://issues.jenkins-ci.org/browse/JENKINS-47962
- // https://issues.jenkins-ci.org/browse/JENKINS-48050
-
stage('Make Check') {
-
matrix {
axes {
axis {
@@ -123,19 +107,36 @@ pipeline {
}
steps {
timeout(time: 90, unit: "MINUTES") {
- unstash 'tarball'
- sh( script: build_and_test )
+ echo "Building CouchDB PR using Erlang ${ERLANG_VERSION} and SpiderMonkey ${SM_VSN}"
+ sh( script: "rm -rf build-${ERLANG_VERSION} apache-couchdb-*", label: 'Clean out workspace' )
+ unstash 'release-tarball'
+ sh( script: "mkdir -p ${COUCHDB_IO_LOG_DIR} build-${ERLANG_VERSION}" )
+ sh( script: "tar -xf apache-couchdb-*.tar.gz -C build-${ERLANG_VERSION} --strip-components=1", label: 'Unpack release' )
+ dir( "build-${ERLANG_VERSION}" ) {
+ sh( script: './configure --skip-deps', label: 'Configure CouchDB build system' )
+ sh( script: 'make', label: 'Build CouchDB' )
+ sh( script: 'make eunit', label: 'EUnit test suite' )
+ sh( script: 'make elixir-suite', label: 'ExUnit unit test suite' )
+ sh( script: 'make exunit', label: 'ExUnit integration test suite' )
+ sh( script: 'make mango-test', label: 'Python-based Mango query test suite' )
+ }
}
}
post {
always {
junit '**/.eunit/*.xml, **/_build/*/lib/couchdbtest/*.xml, **/src/mango/nosetests.xml, **/test/javascript/junit.xml'
}
+ failure {
+ dir( "build-${ERLANG_VERSION}" ) {
+ sh 'ls -l'
+ sh 'make build-report'
+ }
+ }
cleanup {
sh 'rm -rf ${WORKSPACE}/* ${COUCHDB_IO_LOG_DIR}'
}
}
- } // stage
+ } // stage "Build and Test"
} // stages
} // matrix
} // stage "Make Check"