You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ti...@apache.org on 2018/02/23 04:59:10 UTC

maven-surefire git commit: [SUREFIRE-1489] Implement lock() and zip() in jenkinsfile [Forced Update!]

Repository: maven-surefire
Updated Branches:
  refs/heads/SUREFIRE-1489 4725c1f97 -> 722868dc4 (forced update)


[SUREFIRE-1489] Implement lock() and zip() in jenkinsfile


Project: http://git-wip-us.apache.org/repos/asf/maven-surefire/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-surefire/commit/722868dc
Tree: http://git-wip-us.apache.org/repos/asf/maven-surefire/tree/722868dc
Diff: http://git-wip-us.apache.org/repos/asf/maven-surefire/diff/722868dc

Branch: refs/heads/SUREFIRE-1489
Commit: 722868dc429d786659cce7ecbfa3343d8c68880c
Parents: d46556f
Author: Tibor17 <ti...@apache.org>
Authored: Fri Feb 23 05:39:47 2018 +0100
Committer: Tibor17 <ti...@apache.org>
Committed: Fri Feb 23 05:55:23 2018 +0100

----------------------------------------------------------------------
 Jenkinsfile | 137 ++++++++++++++++++++++++++++---------------------------
 1 file changed, 70 insertions(+), 67 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/722868dc/Jenkinsfile
----------------------------------------------------------------------
diff --git a/Jenkinsfile b/Jenkinsfile
index 822bbc1..95d44a9 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -26,42 +26,50 @@ properties(
     ]
 )
 
-final String NIX_LABEL = 'ubuntu-1||ubuntu-4||ubuntu-6||H19||H20'
-final String WIN_LABEL = 'windows-2016-1'
-
 final def oses = ['linux', 'windows']
-final def mavens = ['3.2.x', '3.3.x', '3.5.x'] // env.BRANCH_NAME == 'master' ? ['3.2.x', '3.3.x', '3.5.x'] : ['3.5.x']
-final def jdks = ['7', '8', '9', '10'] // env.BRANCH_NAME == 'master' ? ['7', '8', '9', '10'] : ['10']
+final def mavens = env.BRANCH_NAME == 'master' ? ['3.2.x', '3.3.x', '3.5.x'] : ['3.5.x']
+final def jdks = env.BRANCH_NAME == 'master' ? [7, 8, 9, 10] : [9, 10]
 
-final def cmd = ['mvn']
 final def options = ['-e', '-V', '-nsu', '-P', 'run-its']
+final def optionsIT = ['-pl', 'maven-failsafe-plugin', '-P', 'run-its']
 final def goals = ['clean', 'install', 'jacoco:report']
 final Map stages = [:]
 
 oses.eachWithIndex { os, indexOfOs ->
-    stages[os] = {
-        mavens.eachWithIndex { maven, indexOfMaven ->
-            jdks.eachWithIndex { jdk, indexOfJdk ->
-                final String label = jenkinsEnv.labelForOS(os);
-                final String jdkTestName = jenkinsEnv.jdkFromVersion(os, jdk)
-                final String jdkName = jenkinsEnv.jdkFromVersion(os, '8')
-                final String mvnName = jenkinsEnv.mvnFromVersion(os, maven)
-                final String stageKey = "${os}-jdk${jdk}-maven${maven}"
+    mavens.eachWithIndex { maven, indexOfMaven ->
+        jdks.eachWithIndex { jdk, indexOfJdk ->
+            final String label = jenkinsEnv.labelForOS(os);
+            final String jdkTestName = jenkinsEnv.jdkFromVersion(os, jdk.toString())
+            final String jdkName = jenkinsEnv.jdkFromVersion(os, '8')
+            final String mvnName = jenkinsEnv.mvnFromVersion(os, maven)
+            final String stageKey = "${os}-jdk${jdk}-maven${maven}"
 
-                if (label == null || jdkTestName == null || mvnName == null) {
-                    println "Skipping ${stageKey} as unsupported by Jenkins Environment."
-                    return;
-                }
+            def mavenOpts = '-server -XX:+UseG1GC -XX:+TieredCompilation -XX:TieredStopAtLevel=1 -XX:UseNUMA \
+-Xms64m -Djava.awt.headless=true'
+            if (jdk > 7) {
+                mavenOpts += ' -XX:+UseStringDeduplication'
+            }
+            mavenOpts += (os == 'linux' ? ' -Xmx1g' : ' -Xmx256m')
 
-                println "${stageKey}  ==>  Label: ${label}, JDK: ${jdkTestName}, Maven: ${mvnName}."
-                if (os == 'windows') {
-                    node(WIN_LABEL) {
-                        buildProcess(stageKey, jdkName, jdkTestName, mvnName, cmd, options, goals, false)
-                    }
-                } else {
-                    node(NIX_LABEL) {
-                        boolean makeReports = indexOfMaven == mavens.size() - 1 && jdk == '9'
-                        buildProcess(stageKey, jdkName, jdkTestName, mvnName, cmd, options, goals, makeReports)
+            if (label == null || jdkTestName == null || mvnName == null) {
+                println "Skipping ${stageKey} as unsupported by Jenkins Environment."
+                return;
+            }
+
+            println "${stageKey}  ==>  Label: ${label}, JDK: ${jdkTestName}, Maven: ${mvnName}."
+
+            stages[stageKey] = {
+                node(label) {
+                    ansiColor('xterm') {
+                        timestamps {
+                            if (os == 'linux') {
+                                //https://github.com/jacoco/jacoco/issues/629
+                                boolean makeReports = indexOfMaven == mavens.size() - 1 && jdk == 9
+                                buildProcess(stageKey, jdkName, jdkTestName, mvnName, goals, options, optionsIT, mavenOpts, makeReports)
+                            } else {
+                                buildProcess(stageKey, jdkName, jdkTestName, mvnName, goals, options, optionsIT, mavenOpts, false)
+                            }
+                        }
                     }
                 }
             }
@@ -102,7 +110,7 @@ timeout(time: 24, unit: 'HOURS') {
     }
 }
 
-def buildProcess(String stageKey, String jdkName, String jdkTestName, String mvnName, cmd, options, goals, boolean makeReports) {
+def buildProcess(String stageKey, String jdkName, String jdkTestName, String mvnName, goals, options, optionsIT, mavenOpts, boolean makeReports) {
     cleanWs()
     try {
         if (isUnix()) {
@@ -116,33 +124,20 @@ def buildProcess(String stageKey, String jdkName, String jdkTestName, String mvn
         }
 
         println "Maven Local Repository = ${mvnLocalRepoDir}."
-        assert mvnLocalRepoDir != null: 'Local Maven Repository is undefined.'
+        assert mvnLocalRepoDir != null : 'Local Maven Repository is undefined.'
 
         stage("checkout ${stageKey}") {
             checkout scm
         }
 
         def jdkTestHome = resolveToolNameToJavaPath(jdkTestName, mvnName)
-        //https://github.com/jacoco/jacoco/issues/629
-        def properties = ["\"-Djdk.home=${jdkTestHome}\"", "-Djacoco.skip=${!makeReports}"]
-        println("Setting JDK for testing ${properties[0]}")
-        def mavenOpts = '-server -XX:+UseG1GC -XX:+TieredCompilation -XX:TieredStopAtLevel=1 -Xms64m -Xmx1g -Djava.awt.headless=true'
+        def script = 'mvn' + goals + options
 
         stage("build ${stageKey}") {
-            withMaven(jdk: jdkName, maven: mvnName,
-                    mavenLocalRepo: mvnLocalRepoDir, mavenOpts: mavenOpts,
-                    options: [
-                            findbugsPublisher(disabled: !makeReports),
-                            openTasksPublisher(disabled: true),
-                            junitPublisher(disabled: true),
-                            artifactsPublisher(disabled: true),
-                            invokerPublisher(disabled: true)
-                    ]) {
-                def script = cmd + options + goals + properties
-                if (isUnix()) {
-                    sh script.join(' ')
-                } else {
-                    bat script.join(' ')
+            mvn(mvnName, script, mavenOpts, mvnLocalRepoDir, jdkName, jdkTestHome, makeReports)
+            lock('maven-surefire-lock') {
+                timeout(time: 2, unit: 'MINUTES') {
+                    mvn(mvnName, script + optionsIT, mavenOpts, mvnLocalRepoDir, jdkName, jdkTestHome, false)
                 }
             }
         }
@@ -167,28 +162,15 @@ def buildProcess(String stageKey, String jdkName, String jdkTestName, String mvn
                 }
             }
 
-            if (isUnix()) {
-                if (fileExists('maven-failsafe-plugin/target/it')) {
-                    sh "tar czf failsafe-its-${stageKey}.tgz maven-failsafe-plugin/target/it"
-                }
-
-                if (fileExists('surefire-its/target')) {
-                    sh "tar czf surefire-its-${stageKey}.tgz surefire-its/target"
-                }
-//              println(readFile('target/rat.txt'))
-//              Wait for INFRA installation of Pipeline Utils, use fileExists()
-//              if (fileExists('maven-failsafe-plugin/target/it')) {
-//                  zip(zipFile: "it--maven-failsafe-plugin--${stageKey}.zip", dir: 'maven-failsafe-plugin/target/it', archive: true)
-//              }
-//
-//              if (fileExists('surefire-its/target')) {
-//                  zip(zipFile: "it--surefire-its--${stageKey}.zip", dir: 'surefire-its/target', archive: true)
-//              }
-//
-//              archiveArtifacts(artifacts: 'surefire-its/target/**/log.txt', allowEmptyArchive: true, fingerprint: true, onlyIfSuccessful: false)
+            if (fileExists('maven-failsafe-plugin/target/it')) {
+                zip(zipFile: "it--maven-failsafe-plugin--${stageKey}.zip", dir: 'maven-failsafe-plugin/target/it', archive: true)
+            }
 
-                archive includes: '*.tgz'
+            if (fileExists('surefire-its/target')) {
+                zip(zipFile: "it--surefire-its--${stageKey}.zip", dir: 'surefire-its/target', archive: true)
             }
+
+            archive includes: '*.zip'
         }
 
         stage("cleanup ${stageKey}") {
@@ -198,6 +180,26 @@ def buildProcess(String stageKey, String jdkName, String jdkTestName, String mvn
     }
 }
 
+def mvn(mvnName, cmd, mavenOpts, mvnLocalRepoDir, jdkName, jdkTestHome, boolean makeReports) {
+    withMaven(jdk: jdkName, maven: mvnName,
+            mavenLocalRepo: mvnLocalRepoDir, mavenOpts: mavenOpts,
+            options: [
+                    findbugsPublisher(disabled: !makeReports),
+                    openTasksPublisher(disabled: true),
+                    junitPublisher(disabled: true),
+                    artifactsPublisher(disabled: true),
+                    invokerPublisher(disabled: true)
+            ]) {
+        def properties = ["\"-Djdk.home=${jdkTestHome}\"", "-Djacoco.skip=${!makeReports}"]
+        println "Setting JDK for testing ${properties[0]}"
+        if (isUnix()) {
+            sh (cmd + properties).join(' ')
+        } else {
+            bat (cmd + properties).join(' ')
+        }
+    }
+}
+
 /**
  * It is used instead of tool(${jdkTestName}).
  */
@@ -205,6 +207,7 @@ def resolveToolNameToJavaPath(jdkToolName, mvnName) {
     def javaHome = null
     try {
         withMaven(jdk: jdkToolName, maven: mvnName) {
+            //noinspection GrReassignedInClosureLocalVar
             javaHome = isUnix() ? sh(script: 'echo -en $JAVA_HOME', returnStdout: true) : bat(script: '@echo %JAVA_HOME%', returnStdout: true)
         }