From 7879e4262f9b1a12f65622ee29cd41523d8362cc Mon Sep 17 00:00:00 2001 From: Frank Celler Date: Mon, 19 Jun 2017 22:56:55 +0200 Subject: [PATCH] Feature/jenkins pipeline (#2611) * added properties --- Installation/Pipeline/Jenkinsfile.feature | 83 +++++++++++++++++-- ...est_singleserver_EDITION_ENGINE_linux.inc} | 20 ++++- ...st_singleserver_community_mmfiles_linux.sh | 2 +- ...st_singleserver_community_rocksdb_linux.sh | 2 +- ...t_singleserver_enterprise_mmfiles_linux.sh | 3 + 5 files changed, 98 insertions(+), 12 deletions(-) rename Installation/Pipeline/include/{test_singleserver_community_ENGINE_linux.inc => test_singleserver_EDITION_ENGINE_linux.inc} (92%) create mode 100755 Installation/Pipeline/test_singleserver_enterprise_mmfiles_linux.sh diff --git a/Installation/Pipeline/Jenkinsfile.feature b/Installation/Pipeline/Jenkinsfile.feature index b45b833f45..e5c0bf2eed 100644 --- a/Installation/Pipeline/Jenkinsfile.feature +++ b/Installation/Pipeline/Jenkinsfile.feature @@ -1,19 +1,53 @@ // -*- mode: groovy-mode +properties([ + parameters([ + booleanParam( + defaultValue: false, + description: 'clean build', + name: 'cleanBuild' + ), + booleanParam( + defaultValue: false, + description: 'build enterprise', + name: 'buildEnterprise' + ), + booleanParam( + defaultValue: true, + description: 'build Linux', + name: 'buildLinux' + ), + booleanParam( + defaultValue: false, + description: 'build Mac', + name: 'buildMac' + ), + booleanParam( + defaultValue: false, + description: 'build Windows', + name: 'buildWindows' + ), + ]) +]) + // start with empty build directory -cleanBuild = false +cleanBuild = params.cleanBuild // build enterprise version -buildEnterprise = false +buildEnterprise = params.buildEnterprise // build linux -buildLinux = true +buildLinux = params.buildLinux // build mac -buildMac = false +buildMac = params.buildMac // build windows -buildWindows = false +buildWindows = params.buildWindows + +// ----------------------------------------------------------------------------- +// --SECTION-- CONSTANTS AND HELPERS +// ----------------------------------------------------------------------------- // github repositiory for enterprise version enterpriseRepo = 'https://github.com/arangodb/enterprise' @@ -34,6 +68,10 @@ def PowerShell(psCmd) { // ----------------------------------------------------------------------------- def checkoutCommunity() { + if (cleanBuild) { + sh 'rm -rf *' + } + retry(3) { try { checkout scm @@ -103,6 +141,16 @@ def checkCommitMessages() { cleanBuild = true } + if (msg ==~ /(?i).*\[ci:[^\]]*no-clean[ \]].*/) { + echo "using clean build because message contained 'no-clean'" + cleanBuild = false + } + + if (msg ==~ /(?i).*\[ci:[^\]]*linux[ \]].*/) { + echo "not building linux because message contained 'linux'" + buildLinux = true + } + if (msg ==~ /(?i).*\[ci:[^\]]*no-linux[ \]].*/) { echo "not building linux because message contained 'no-linux'" buildLinux = false @@ -113,16 +161,31 @@ def checkCommitMessages() { buildMac = true } + if (msg ==~ /(?i).*\[ci:[^\]]*no-mac[ \]].*/) { + echo "building mac because message contained 'no-mac'" + buildMac = false + } + if (msg ==~ /(?i).*\[ci:[^\]]*windows[ \]].*/) { echo "building windows because message contained 'windows'" buildWindows = true } + if (msg ==~ /(?i).*\[ci:[^\]]*no-windows[ \]].*/) { + echo "building windows because message contained 'no-windows'" + buildWindows = false + } + if (msg ==~ /(?i).*\[ci:[^\]]*enterprise[ \]].*/) { echo "building enterprise because message contained 'enterprise'" buildEnterprise = true } + if (msg ==~ /(?i).*\[ci:[^\]]*no-enterprise[ \]].*/) { + echo "building enterprise because message contained 'no-enterprise'" + buildEnterprise = false + } + def files = new ArrayList(entry.affectedFiles) for (int k = 0; k < files.size(); k++) { @@ -132,6 +195,12 @@ def checkCommitMessages() { } } } + + echo 'Clean Build: ' + (cleanBuild ? 'true' : 'false') + echo 'Build Enterprise: ' + (buildEnterprise ? 'true' : 'false') + echo 'Build Linux: ' + (buildLinux ? 'true' : 'false') + echo 'Build Mac: ' + (buildMac ? 'true' : 'false') + echo 'Build Windows: ' + (buildWindows ? 'true' : 'false') } def stashSourceCode() { @@ -293,7 +362,7 @@ if (buildLinux) { def edition = 'community' node(os) { - echo "Running singleserver community rocksdb linux test" + echo "Running singleserver " + edition + " rocksdb " + os + " test" unstashBinaries(edition, os) testEdition(edition, os, 'singleserver', 'rocksdb') @@ -305,7 +374,7 @@ if (buildLinux) { if (buildEnterprise) { node(os) { - echo "Running singleserver enterprise mmfiles linux test" + echo "Running singleserver " + edition + " mmfiles " + os + " test" unstashBinaries(edition, os) testEdition(edition, os, 'singleserver', 'mmfiles') diff --git a/Installation/Pipeline/include/test_singleserver_community_ENGINE_linux.inc b/Installation/Pipeline/include/test_singleserver_EDITION_ENGINE_linux.inc similarity index 92% rename from Installation/Pipeline/include/test_singleserver_community_ENGINE_linux.inc rename to Installation/Pipeline/include/test_singleserver_EDITION_ENGINE_linux.inc index 42c4da9b01..18f6118006 100755 --- a/Installation/Pipeline/include/test_singleserver_community_ENGINE_linux.inc +++ b/Installation/Pipeline/include/test_singleserver_EDITION_ENGINE_linux.inc @@ -1,17 +1,31 @@ #!/bin/bash concurrency="$1" -engine="$2" +edition="$2" +engine="$3" + +type="test_singleserver" + +if [ "$edition" == community ]; then + type="${type}_${edition}" +elif [ "$edition" == enterprise ]; then + type="${type}_${edition}" +else + echo "$0: unknown edition '$edition', expecting 'community' or 'enterprise'" + exit 1 +fi if [ "$engine" == mmfiles ]; then - type="test_singleserver_community_mmfiles_linux" + type="${type}_${engine}" elif [ "$engine" == rocksdb ]; then - type="test_singleserver_community_rocksdb_linux" + type="${type}_${engine}" else echo "$0: unknown engine '$engine', expecting 'mmfiles' or 'rocksdb'" exit 1 fi +type="${type}_linux" + . ./Installation/Pipeline/include/test_log_info.inc . ./Installation/Pipeline/include/test_setup_tmp.inc diff --git a/Installation/Pipeline/test_singleserver_community_mmfiles_linux.sh b/Installation/Pipeline/test_singleserver_community_mmfiles_linux.sh index e471ddc578..17c230f629 100755 --- a/Installation/Pipeline/test_singleserver_community_mmfiles_linux.sh +++ b/Installation/Pipeline/test_singleserver_community_mmfiles_linux.sh @@ -1,3 +1,3 @@ #!/bin/bash -./Installation/Pipeline/include/test_singleserver_community_ENGINE_linux.inc $1 mmfiles +./Installation/Pipeline/include/test_singleserver_EDITION_ENGINE_linux.inc $1 community mmfiles diff --git a/Installation/Pipeline/test_singleserver_community_rocksdb_linux.sh b/Installation/Pipeline/test_singleserver_community_rocksdb_linux.sh index 9ec1edef2c..cbc215021f 100755 --- a/Installation/Pipeline/test_singleserver_community_rocksdb_linux.sh +++ b/Installation/Pipeline/test_singleserver_community_rocksdb_linux.sh @@ -1,3 +1,3 @@ #!/bin/bash -./Installation/Pipeline/include/test_singleserver_community_ENGINE_linux.inc $1 rocksdb +./Installation/Pipeline/include/test_singleserver_EDITION_ENGINE_linux.inc $1 community rocksdb diff --git a/Installation/Pipeline/test_singleserver_enterprise_mmfiles_linux.sh b/Installation/Pipeline/test_singleserver_enterprise_mmfiles_linux.sh new file mode 100755 index 0000000000..9c2b400cb9 --- /dev/null +++ b/Installation/Pipeline/test_singleserver_enterprise_mmfiles_linux.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +./Installation/Pipeline/include/test_singleserver_EDITION_ENGINE_linux.inc $1 enterprise mmfiles