diff options
author | Thomas Müller <DeepDiver1975@users.noreply.github.com> | 2016-08-12 11:49:18 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-08-12 11:49:18 +0200 |
commit | 87275c7757da779ec86b7b9b74e250601929434b (patch) | |
tree | a2483f16af4b279664f2860211364a40387ecdc8 | |
parent | accf28a35547700a860a01049f23dd047f97337b (diff) | |
download | nextcloud-server-87275c7757da779ec86b7b9b74e250601929434b.tar.gz nextcloud-server-87275c7757da779ec86b7b9b74e250601929434b.zip |
[Stable8.2] fix unit test on new jenkins setup and adjust Jenkinsfile (#25772) (#25775) (#25783)
* Next step jenkinsfile (#25622)
* Adding timestamper and evaluation of test results even in case of failure
* Adding build timeout
* use fixed value 120 minutes as timeout for each test executing for now
* Terminate the build as soon as test execution fails
* Adjust external testing as well
* Finalize use of executeAndReport
* Array sort order is of no relevance
-rw-r--r-- | Jenkinsfile | 139 |
1 files changed, 100 insertions, 39 deletions
diff --git a/Jenkinsfile b/Jenkinsfile index c1eebaad71e..2eaed1b1a93 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,55 +1,116 @@ #!groovy +/* + * This Jenkinsfile is intended to run on https://ci.owncloud.org and may fail anywhere else. + * It makes assumptions about plugins being installed, labels mapping to nodes that can build what is needed, etc. + */ -node('SLAVE') { +timestampedNode('SLAVE') { stage 'Checkout' checkout scm sh '''git submodule update --init''' stage 'JavaScript Testing' - sh '''./autotest-js.sh''' - step([$class: 'JUnitResultArchiver', testResults: 'tests/autotest-results-js.xml']) + executeAndReport('tests/autotest-results-js.xml') { + sh '''./autotest-js.sh''' + } stage 'PHPUnit' - sh ''' - export NOCOVERAGE=1 - unset USEDOCKER - phpenv local 7.0 - ./autotest.sh sqlite - phpenv local 5.4 - ./autotest.sh mysql - phpenv local 5.6 - ./autotest.sh pgsql - phpenv local 5.5 - ./autotest.sh oci - ''' - step([$class: 'JUnitResultArchiver', testResults: 'tests/autotest-results-sqlite.xml']) - step([$class: 'JUnitResultArchiver', testResults: 'tests/autotest-results-mysql.xml']) - step([$class: 'JUnitResultArchiver', testResults: 'tests/autotest-results-oci.xml']) - step([$class: 'JUnitResultArchiver', testResults: 'tests/autotest-results-pgsql.xml']) + executeAndReport('tests/autotest-results-sqlite.xml') { + sh ''' + export NOCOVERAGE=1 + unset USEDOCKER + phpenv local 5.6 + ./autotest.sh sqlite + ''' + } + executeAndReport('tests/autotest-results-mysql.xml') { + sh ''' + export NOCOVERAGE=1 + unset USEDOCKER + phpenv local 5.4 + ./autotest.sh mysql + ''' + } + executeAndReport('tests/autotest-results-pgsql.xml') { + sh ''' + export NOCOVERAGE=1 + unset USEDOCKER + phpenv local 5.6 + ./autotest.sh pgsql + ''' + } + executeAndReport('tests/autotest-results-oci.xml') { + sh ''' + export NOCOVERAGE=1 + unset USEDOCKER + phpenv local 5.5 + ./autotest.sh oci + ''' + } stage 'Files External Testing' - sh '''phpenv local 7.0 - export NOCOVERAGE=1 - unset USEDOCKER - ./autotest-external.sh sqlite webdav-ownCloud - ./autotest-external.sh sqlite smb-silvershell - ./autotest-external.sh sqlite swift-ceph - ''' + executeAndReport('tests/autotest-external-results-sqlite-webdav-ownCloud.xml') { + sh '''phpenv local 5.6 + export NOCOVERAGE=1 + unset USEDOCKER + ./autotest-external.sh sqlite webdav-ownCloud + ''' + } + executeAndReport('tests/autotest-external-results-sqlite-smb-silvershell.xml') { + sh '''phpenv local 5.6 + export NOCOVERAGE=1 + unset USEDOCKER + ./autotest-external.sh sqlite smb-silvershell + ''' + } + executeAndReport('tests/autotest-external-results-sqlite-smb-windows.xml') { + sh '''phpenv local 5.6 + export NOCOVERAGE=1 + unset USEDOCKER + ./autotest-external.sh sqlite smb-windows + ''' + } + step([$class: 'JUnitResultArchiver', testResults: 'tests/autotest-external-results-sqlite.xml']) - step([$class: 'JUnitResultArchiver', testResults: 'tests/autotest-external-results-sqlite-webdav-ownCloud.xml']) - step([$class: 'JUnitResultArchiver', testResults: 'tests/autotest-external-results-sqlite-smb-silvershell.xml']) - step([$class: 'JUnitResultArchiver', testResults: 'tests/autotest-external-results-sqlite-swift-ceph.xml']) stage 'Integration Testing' - sh '''phpenv local 7.0 - rm -rf config/config.php - ./occ maintenance:install --admin-pass=admin - rm -rf build/integration/output - rm -rf build/integration/vendor - rm -rf build/integration/composer.lock - cd build/integration - ./run.sh - ''' - step([$class: 'JUnitResultArchiver', testResults: 'build/integration/output/*.xml']) + executeAndReport('build/integration/output/*.xml') { + sh '''phpenv local 5.6 + rm -rf config/config.php + ./occ maintenance:install --admin-pass=admin + rm -rf build/integration/output + rm -rf build/integration/vendor + rm -rf build/integration/composer.lock + cd build/integration + ./run.sh + ''' + } } +void executeAndReport(String testResultLocation, def body) { + def failed = false + // We're wrapping this in a timeout - if it takes longer, kill it. + try { + timeout(time: 120, unit: 'MINUTES') { + body.call() + } + } catch (Exception e) { + failed = true + echo "Test execution failed: ${e}" + } finally { + step([$class: 'JUnitResultArchiver', testResults: testResultLocation]) + } + + if (failed) { + error "Test execution failed. Terminating the build" + } +} + +// Runs the given body within a Timestamper wrapper on the given label. +def timestampedNode(String label, Closure body) { + node(label) { + wrap([$class: 'TimestamperBuildWrapper']) { + body.call() + } + } +} |