You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by kw...@apache.org on 2022/01/05 11:03:56 UTC

[jackrabbit-filevault-jenkins-lib] branch feature/JCRVLT-580-parameterize-maven-version updated: separate IT execution

This is an automated email from the ASF dual-hosted git repository.

kwin pushed a commit to branch feature/JCRVLT-580-parameterize-maven-version
in repository https://gitbox.apache.org/repos/asf/jackrabbit-filevault-jenkins-lib.git


The following commit(s) were added to refs/heads/feature/JCRVLT-580-parameterize-maven-version by this push:
     new 2125e59  separate IT execution
2125e59 is described below

commit 2125e592cc1866cb000aa2c67e8a766cb4d8eea5
Author: Konrad Windszus <kw...@apache.org>
AuthorDate: Wed Jan 5 12:03:47 2022 +0100

    separate IT execution
---
 vars/fileVaultMavenStdBuild.groovy | 49 ++++++++++++++++++++++++++++----------
 1 file changed, 37 insertions(+), 12 deletions(-)

diff --git a/vars/fileVaultMavenStdBuild.groovy b/vars/fileVaultMavenStdBuild.groovy
index 5185417..7ba93ac 100644
--- a/vars/fileVaultMavenStdBuild.groovy
+++ b/vars/fileVaultMavenStdBuild.groovy
@@ -60,17 +60,14 @@ String getMavenLabel(String mavenVersion) {
     return "maven_${versionLabel}"
 }
 
-def buildStage(final int jdkVersion, final String nodeLabel, final String mavenVersion, final boolean isMainBuild, final String sonarProjectKey) {
+def buildStage(final String jdkLabel, final String nodeLabel, final String mavenVersion, final boolean isMainBuild, final String sonarProjectKey) {
     return {
-        // https://cwiki.apache.org/confluence/display/INFRA/JDK+Installation+Matrix
-        def availableJDKs = [ 8: 'jdk_1.8_latest', 9: 'jdk_1.9_latest', 10: 'jdk_10_latest', 11: 'jdk_11_latest', 12: 'jdk_12_latest', 13: 'jdk_13_latest', 14: 'jdk_14_latest', 15: 'jdk_15_latest', 16: 'jdk_16_latest', 17: 'jdk_17_latest', 18: 'jdk_18_latest', 19: 'jdk_19_latest']
-        final String jdkLabel = availableJDKs[jdkVersion]
         final String wagonPluginGav = "org.codehaus.mojo:wagon-maven-plugin:2.0.2"
         final String sonarPluginGav = "org.sonarsource.scanner.maven:sonar-maven-plugin:3.9.1.2184"
         node(label: nodeLabel) {
-            stage("${isMainBuild ? 'Main ' : ''}Maven Build (JDK ${jdkVersion}, Maven ${mavenVersion}, ${nodeLabel})") {
+            stage("${isMainBuild ? 'Main ' : ''}Maven Build (JDK ${jdkLabel}, Maven ${mavenVersion}, ${nodeLabel})") {
                 timeout(60) {
-                    final String mavenLabel = getMavenLabel(mavenVersion)
+                    final String mavenLabel = getMavenLabel(mavenVersion) // this requires a node context
                     echo "Running on node ${env.NODE_NAME}"
                     checkout scm
                     try {
@@ -81,14 +78,18 @@ def buildStage(final int jdkVersion, final String nodeLabel, final String mavenV
                             dir(localRepoPath) {
                                 deleteDir()
                             }
-                            mavenArguments = "-U clean site deploy -DaltDeploymentRepository=snapshot-repo::default::file:${localRepoPath} -Pjacoco-report -Dlogback.configurationFile=vault-core/src/test/resources/logback-only-errors.xml"
+                            mavenArguments = "-U clean site deploy -DskipITs -DaltDeploymentRepository=snapshot-repo::default::file:${localRepoPath} -Pjacoco-report -Dlogback.configurationFile=vault-core/src/test/resources/logback-only-errors.xml"
                         } else {
-                            mavenArguments = '-U clean verify site'
+                            mavenArguments = '-U clean package site'
                         }
                         executeMaven(jdkLabel, mavenLabel, mavenArguments, 'IMPLICIT')
-                        if (isMainBuild && isOnMainBranch()) {
-                            // Stash the build results so we can deploy them on another node
-                            stash name: 'local-snapshots-dir', includes: 'local-snapshots-dir/**'
+                        if (isMainBuild)
+                            // stash the integration test classes for later execution
+                            stash name: 'integration-test-classes', includes: 'target/test-classes/**/*IT*.class'
+                            if (isOnMainBranch()) {
+                                // Stash the build results so we can deploy them on another node
+                                stash name: 'local-snapshots-dir', includes: 'local-snapshots-dir/**'
+                            }
                         }
                     } finally {
                         junit '**/target/surefire-reports/**/*.xml,**/target/failsafe-reports*/**/*.xml'
@@ -124,13 +125,34 @@ def buildStage(final int jdkVersion, final String nodeLabel, final String mavenV
     }
 }
 
+def stageIT(final String jdkLabel, final String nodeLabel, final String mavenVersion) {
+    stage("Run Integration Tests") {
+        node(nodeLabel) {
+            timeout(60) {
+                // Nexus deployment needs pom.xml
+                checkout scm
+                // Unstash the previously stashed build results.
+                unstash name: 'integration-test-classes'
+                final String mavenLabel = getMavenLabel(mavenVersion) // this requires a node context
+                // populate test source directory
+                String mavenArguments = "failsafe:integration-test failsafe:verify
+                executeMaven(jdkLabel, mavenLabel, mavenArguments, 'EXPLICIT')
+            }
+        }
+    }
+}
+
 def stagesFor(List<Integer> jdkVersions, int mainJdkVersion, List<String> nodeLabels, String mainNodeLabel, List<String> mavenVersions, String mainMavenVersion, String sonarProjectKey) {
     def stageMap = [:]
+    // https://cwiki.apache.org/confluence/display/INFRA/JDK+Installation+Matrix
+    def availableJDKs = [ 8: 'jdk_1.8_latest', 9: 'jdk_1.9_latest', 10: 'jdk_10_latest', 11: 'jdk_11_latest', 12: 'jdk_12_latest', 13: 'jdk_13_latest', 14: 'jdk_14_latest', 15: 'jdk_15_latest', 16: 'jdk_16_latest', 17: 'jdk_17_latest', 18: 'jdk_18_latest', 19: 'jdk_19_latest']
+    
     for (nodeLabel in nodeLabels) {
         for (jdkVersion in jdkVersions) {
+            final String jdkLabel = availableJDKs[jdkVersion]
             for (mavenVersion in mavenVersions) {
                 boolean isMainBuild = (jdkVersion == mainJdkVersion && nodeLabel == mainNodeLabel && mainMavenVersion == mavenVersion)
-                stageMap["JDK ${jdkVersion}, ${nodeLabel}, Maven ${mavenVersion} ${isMainBuild ? ' (Main)' : ''}"] = buildStage(jdkVersion, nodeLabel, mavenVersion, isMainBuild, sonarProjectKey)
+                stageMap["JDK ${jdkVersion}, ${nodeLabel}, Maven ${mavenVersion} ${isMainBuild ? ' (Main)' : ''}"] = buildStage(jdkLabel, nodeLabel, mavenVersion, isMainBuild, sonarProjectKey)
             }
         }
     }
@@ -155,4 +177,7 @@ def call(List<Integer> jdkVersions, int mainJdkVersion, List<String> nodeLabels,
     }
     properties(buildProperties)
     parallel stagesFor(jdkVersions, mainJdkVersion, nodeLabels, mainNodeLabel, mavenVersions, mainMavenVersion, sonarProjectKey)
+    // TODO: trigger ITs separately
+    stageIT('jdk_1.8_latest', mainNodeLabel, '3.3.9')
+    // finally do deploy
 }