aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Müller <DeepDiver1975@users.noreply.github.com>2016-08-12 11:49:18 +0200
committerGitHub <noreply@github.com>2016-08-12 11:49:18 +0200
commit87275c7757da779ec86b7b9b74e250601929434b (patch)
treea2483f16af4b279664f2860211364a40387ecdc8
parentaccf28a35547700a860a01049f23dd047f97337b (diff)
downloadnextcloud-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--Jenkinsfile139
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()
+ }
+ }
+}