improve readme master
authorKonrad Windszus <kwin@apache.org>
Tue, 5 Jul 2022 07:42:10 +0000 (09:42 +0200)
committerKonrad Windszus <kwin@apache.org>
Tue, 5 Jul 2022 07:42:10 +0000 (09:42 +0200)
README.md
src/org/apache/jackrabbit/vault/PipelineSupport.groovy
vars/vaultStageBuild.groovy
vars/vaultStageIT.groovy
vars/vaultStageSanityCheck.groovy [new file with mode: 0644]

index 9152f98fc5a7ae021f7588b7e284885cb7d76322..135ad1954943589a25d12d15fe4843bac91fe4c4 100644 (file)
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@ It is supposed to be called in a `Jenkinsfile` like this
 
 ```
 vaultPipeline('ubuntu', 11, '3', {
-   vaultStageBuild(['ubuntu', 'Windows'], [8, 11, 17], ['3', '3.6.3'], 'apache_jackrabbit-filevault-package-maven-plugin') 
+   vaultStageBuild(['Windows'], [8, 17], ['3.6.3'], 'apache_jackrabbit-filevault-package-maven-plugin') 
    vaultStageDeploy()
   }
 )
@@ -18,6 +18,7 @@ The `vaultPipeline` step encapsulates the main build environment parameters:
 The first argument is the main *node label* to build with, the second one the main *JDK version*, third argument the main *Maven version*
 The fourth argument is a closure containing the actual stages where each may be one of
 
+1. `vaultStageSanityCheck`: a quick Maven build supposed to fail fast and executed before triggering expensive parallel builds with `vaultStageBuild`
 1. `vaultStageBuild`: the actual Maven build and SonarQube execution (the latter only for the main environment)
 1. `vaultStageIT`: an isolated execution of just the integration tests
 1. `vaultStageDeploy`: the stage to deploy the previously built Maven artifacts to the ASF Snapshot Repository (depends on 1.)
index cd313539a2e7325773ceb8d3272d2e59946bb16c..7af410291d40e7c9e60fb72b3bf3f57a58168e3b 100644 (file)
@@ -34,7 +34,7 @@ class PipelineSupport implements Serializable {
         if (INSTANCE == null) {
             throw new IllegalStateException("createInstance has not been called before, not wrapped in vaultPipeline step?")
         }
-        return INSTANCE;
+        return INSTANCE
     }
 
     private final String mainNodeLabel;
@@ -44,7 +44,7 @@ class PipelineSupport implements Serializable {
 
     PipelineSupport(String mainNodeLabel, int mainJdkVersion, String mainMavenVersion, boolean isOnMainBranch) {
         this.mainNodeLabel = mainNodeLabel
-        this.mainJdkVersion = mainJdkVersion;
+        this.mainJdkVersion = mainJdkVersion
         this.mainMavenVersion = mainMavenVersion
         this.isOnMainBranch = isOnMainBranch
     }
@@ -73,13 +73,13 @@ class PipelineSupport implements Serializable {
     }
 
     def stepsFor(String stepsLabel, Set<String> nodeLabels, Set<Integer> jdkVersions, Set<String> mavenVersions, Closure closure, boolean excludeMain = false) {
-        def stepsMap = [:]
+        def stepsMap = [failFast: true]
         for (nodeLabel in nodeLabels) {
             for (jdkVersion in jdkVersions) {
                 for (mavenVersion in mavenVersions) {
                     boolean isMainBuild = (nodeLabel.equals(mainNodeLabel) && jdkVersion.equals(mainJdkVersion) && mavenVersion.equals(mainMavenVersion))
                     if (excludeMain && isMainBuild) {
-                        continue; // skip main environment
+                        continue // skip main environment
                     }
                     stepsMap["${stepsLabel} (JDK ${jdkVersion}, ${nodeLabel}, Maven ${mavenVersion}${isMainBuild ? ' (Main)' : ''})"] = closure(nodeLabel, jdkVersion, mavenVersion, isMainBuild)
                 }
@@ -87,4 +87,8 @@ class PipelineSupport implements Serializable {
         }
         return stepsMap
     }
+
+    String getMainNodeLabel() {
+        return mainNodeLabel
+    }
 }
\ No newline at end of file
index a0f56676b6ac5eb8a618e569319803cb9b31295a..d0f2d42539dfb952478115c47248b1ee2f9a4bcf 100644 (file)
@@ -77,5 +77,5 @@ def call(List<String> additionalNodeLabels, List<Integer> additionalJdkVersions,
                     }
                 }
             }
-        } )
+        })
 }
index 59df50c366caec10ccdb8b542be8d0f4dfe6ce36..1d49d6d0725d27f44bc7a698e9d1f5c14d0087cb 100644 (file)
@@ -46,13 +46,8 @@ def call(List<String> additionalNodeLabels, List<Integer> additionalJdkVersions,
                                 } else {
                                     pipelineSupport.executeMaven(this, "install:install-file -Dfile=${jarFiles[0].path} -DpomFile=pom.xml", false)
                                 }
-                                String mavenOpts = '';
-                                // workaround for https://bugs.openjdk.java.net/browse/JDK-8057894
-                                if (!isUnix()) {
-                                    mavenOpts = '-Djava.security.egd=file:/dev/urandom';
-                                }
                                 // execute ITs
-                                pipelineSupport.executeMaven(this, jdkVersion, mavenVersion, 'failsafe:integration-test failsafe:verify', mavenOpts, false)
+                                pipelineSupport.executeMaven(this, jdkVersion, mavenVersion, 'failsafe:integration-test failsafe:verify', false)
                             } finally {
                                 junit '**/target/failsafe-reports*/**/*.xml'
                             }
diff --git a/vars/vaultStageSanityCheck.groovy b/vars/vaultStageSanityCheck.groovy
new file mode 100644 (file)
index 0000000..e2cbb5c
--- /dev/null
@@ -0,0 +1,38 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.jackrabbit.vault.PipelineSupport
+
+/**
+ * Quick sanity check before triggering expensive parallel builds with vaultStageBuild
+ */
+def call() {
+    PipelineSupport pipelineSupport = PipelineSupport.getInstance()
+    stage("Sanity Check") {
+        node(pipelineSupport.getMainNodeLabel()) {
+            timeout(30) {
+                echo "Running on node ${env.NODE_NAME}"
+                deleteDir()
+                checkout scm
+                String mavenArguments = 'clean compile'
+                pipelineSupport.executeMaven(this, mavenArguments, false)
+            }
+        }
+    }
+}
\ No newline at end of file