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

mcimbalek pushed a commit to branch main
in repository 
https://gitbox.apache.org/repos/asf/incubator-kie-kogito-pipelines.git


The following commit(s) were added to refs/heads/main by this push:
     new 610235ee kie-issues-777: rename and overload method for avoiding 
faulty nodes (#1180)
610235ee is described below

commit 610235ee97f455224cbd535eccee591232baeaa0
Author: Martin Cimbalek <[email protected]>
AuthorDate: Fri Feb 9 09:30:18 2024 +0100

    kie-issues-777: rename and overload method for avoiding faulty nodes (#1180)
---
 .ci/jenkins/Jenkinsfile.build-kogito-ci-image      |  2 +-
 .ci/jenkins/Jenkinsfile.build-operator-node        |  2 +-
 .ci/jenkins/Jenkinsfile.nightly                    |  2 +-
 .ci/jenkins/Jenkinsfile.nightly.cloud              |  2 +-
 .ci/jenkins/Jenkinsfile.nightly.quarkus-platform   |  1 +
 .ci/jenkins/Jenkinsfile.release                    |  2 +-
 .ci/jenkins/Jenkinsfile.release.cloud              |  2 +-
 .ci/jenkins/Jenkinsfile.setup-branch               |  2 +-
 .ci/jenkins/Jenkinsfile.setup-branch.cloud         |  2 +-
 .ci/jenkins/Jenkinsfile.tools.clean-nightly-images |  1 +
 .ci/jenkins/Jenkinsfile.tools.clean-old-namespaces |  1 +
 .ci/jenkins/Jenkinsfile.tools.create-issue         |  1 +
 .../Jenkinsfile.tools.update-jenkins-dependencies  |  2 +-
 .ci/jenkins/Jenkinsfile.weekly                     |  2 +-
 .../org/kie/jenkins/JenkinsfileNightly.groovy      |  2 +-
 README.md                                          |  2 +-
 dsl/seed/jenkinsfiles/Jenkinsfile.buildchain       |  2 +-
 .../Jenkinsfile.environment.integration-branch     |  2 +-
 dsl/seed/jenkinsfiles/Jenkinsfile.release.prepare  |  2 +-
 dsl/seed/jenkinsfiles/Jenkinsfile.remove.branches  |  2 +-
 dsl/seed/jenkinsfiles/Jenkinsfile.seed.branch      |  2 +-
 dsl/seed/jenkinsfiles/Jenkinsfile.seed.main        |  2 +-
 dsl/seed/jenkinsfiles/Jenkinsfile.seed.trigger     |  2 +-
 .../jenkinsfiles/Jenkinsfile.tools.toggle-triggers |  2 +-
 .../Jenkinsfile.update-dependency-version          |  1 +
 .../Jenkinsfile.update-quarkus-platform            |  1 +
 .../Jenkinsfile.update-quarkus-version             |  2 +-
 jenkins-pipeline-shared-libraries/vars/util.groovy | 26 +++++++++++++++++++---
 28 files changed, 50 insertions(+), 24 deletions(-)

diff --git a/.ci/jenkins/Jenkinsfile.build-kogito-ci-image 
b/.ci/jenkins/Jenkinsfile.build-kogito-ci-image
index f8cfca5b..8bd68cc3 100644
--- a/.ci/jenkins/Jenkinsfile.build-kogito-ci-image
+++ b/.ci/jenkins/Jenkinsfile.build-kogito-ci-image
@@ -6,7 +6,7 @@ pipeline {
     }
 
     agent {
-        label util.getLabel('ubuntu')
+        label util.avoidFaultyNodes('ubuntu')
     }
 
     environment {
diff --git a/.ci/jenkins/Jenkinsfile.build-operator-node 
b/.ci/jenkins/Jenkinsfile.build-operator-node
index fb7c9a66..cfd6293b 100644
--- a/.ci/jenkins/Jenkinsfile.build-operator-node
+++ b/.ci/jenkins/Jenkinsfile.build-operator-node
@@ -4,7 +4,7 @@ import org.jenkinsci.plugins.workflow.libs.Library
 
 pipeline {
     agent {
-        label util.getLabel('ubuntu')
+        label util.avoidFaultyNodes('ubuntu')
     }
 
     options {
diff --git a/.ci/jenkins/Jenkinsfile.nightly b/.ci/jenkins/Jenkinsfile.nightly
index a0c606c8..0692d65e 100644
--- a/.ci/jenkins/Jenkinsfile.nightly
+++ b/.ci/jenkins/Jenkinsfile.nightly
@@ -19,7 +19,7 @@ UNSTABLE_STAGES = [:]
 // Should be multibranch pipeline
 pipeline {
     agent {
-        label util.getLabel('ubuntu')
+        label util.avoidFaultyNodes('ubuntu')
     }
 
     options {
diff --git a/.ci/jenkins/Jenkinsfile.nightly.cloud 
b/.ci/jenkins/Jenkinsfile.nightly.cloud
index 9defc643..ea978feb 100644
--- a/.ci/jenkins/Jenkinsfile.nightly.cloud
+++ b/.ci/jenkins/Jenkinsfile.nightly.cloud
@@ -25,7 +25,7 @@ promoteImageParamsPrefix = 'PROMOTE_IMAGE'
 // Should be multibranch pipeline
 pipeline {
     agent {
-        label util.getLabel('ubuntu')
+        label util.avoidFaultyNodes('ubuntu')
     }
 
     options {
diff --git a/.ci/jenkins/Jenkinsfile.nightly.quarkus-platform 
b/.ci/jenkins/Jenkinsfile.nightly.quarkus-platform
index 0654758e..f248de85 100644
--- a/.ci/jenkins/Jenkinsfile.nightly.quarkus-platform
+++ b/.ci/jenkins/Jenkinsfile.nightly.quarkus-platform
@@ -9,6 +9,7 @@ pipeline {
         docker { 
             image env.AGENT_DOCKER_BUILDER_IMAGE
             args env.AGENT_DOCKER_BUILDER_ARGS
+            label util.avoidFaultyNodes()
         }
     }
 
diff --git a/.ci/jenkins/Jenkinsfile.release b/.ci/jenkins/Jenkinsfile.release
index 29e56ee3..85ffd2f9 100644
--- a/.ci/jenkins/Jenkinsfile.release
+++ b/.ci/jenkins/Jenkinsfile.release
@@ -19,7 +19,7 @@ releaseProperties = [:]
 
 pipeline {
     agent {
-        label util.getLabel('ubuntu')
+        label util.avoidFaultyNodes('ubuntu')
     }
 
     // parameters {
diff --git a/.ci/jenkins/Jenkinsfile.release.cloud 
b/.ci/jenkins/Jenkinsfile.release.cloud
index c0093673..9eda778d 100644
--- a/.ci/jenkins/Jenkinsfile.release.cloud
+++ b/.ci/jenkins/Jenkinsfile.release.cloud
@@ -26,7 +26,7 @@ promoteImageParamsPrefix = 'PROMOTE_IMAGE'
 
 pipeline {
     agent {
-        label util.getLabel('ubuntu')
+        label util.avoidFaultyNodes('ubuntu')
     }
 
     // parameters {
diff --git a/.ci/jenkins/Jenkinsfile.setup-branch 
b/.ci/jenkins/Jenkinsfile.setup-branch
index a74917e7..0ade29d0 100644
--- a/.ci/jenkins/Jenkinsfile.setup-branch
+++ b/.ci/jenkins/Jenkinsfile.setup-branch
@@ -12,7 +12,7 @@ UNSTABLE_STAGES = [:]
 
 pipeline {
     agent {
-        label util.getLabel('ubuntu')
+        label util.avoidFaultyNodes('ubuntu')
     }
 
     options {
diff --git a/.ci/jenkins/Jenkinsfile.setup-branch.cloud 
b/.ci/jenkins/Jenkinsfile.setup-branch.cloud
index 6222b3a6..c0fe1cb7 100644
--- a/.ci/jenkins/Jenkinsfile.setup-branch.cloud
+++ b/.ci/jenkins/Jenkinsfile.setup-branch.cloud
@@ -16,7 +16,7 @@ examplesImagesParamsPrefix = 'EXAMPLES_IMAGES'
 
 pipeline {
     agent {
-        label util.getLabel('ubuntu')
+        label util.avoidFaultyNodes('ubuntu')
     }
 
     options {
diff --git a/.ci/jenkins/Jenkinsfile.tools.clean-nightly-images 
b/.ci/jenkins/Jenkinsfile.tools.clean-nightly-images
index c0f4f0c3..663df441 100644
--- a/.ci/jenkins/Jenkinsfile.tools.clean-nightly-images
+++ b/.ci/jenkins/Jenkinsfile.tools.clean-nightly-images
@@ -3,6 +3,7 @@ pipeline {
         docker { 
             image env.AGENT_DOCKER_BUILDER_IMAGE
             args env.AGENT_DOCKER_BUILDER_ARGS
+            label util.avoidFaultyNodes()
         }
     }
     options {
diff --git a/.ci/jenkins/Jenkinsfile.tools.clean-old-namespaces 
b/.ci/jenkins/Jenkinsfile.tools.clean-old-namespaces
index 5826d2ff..e5ff002e 100644
--- a/.ci/jenkins/Jenkinsfile.tools.clean-old-namespaces
+++ b/.ci/jenkins/Jenkinsfile.tools.clean-old-namespaces
@@ -3,6 +3,7 @@ pipeline {
         docker { 
             image 'quay.io/kiegroup/kogito-ci-build:latest'  // TODO to set in 
branch config
             args '-v /var/run/docker.sock:/var/run/docker.sock --group-add 
docker --group-add input --group-add render'
+            label util.avoidFaultyNodes()
         }
     }
     options {
diff --git a/.ci/jenkins/Jenkinsfile.tools.create-issue 
b/.ci/jenkins/Jenkinsfile.tools.create-issue
index 3d384027..4b4d39bf 100644
--- a/.ci/jenkins/Jenkinsfile.tools.create-issue
+++ b/.ci/jenkins/Jenkinsfile.tools.create-issue
@@ -7,6 +7,7 @@ pipeline {
         docker {
             image env.AGENT_DOCKER_BUILDER_IMAGE
             args env.AGENT_DOCKER_BUILDER_ARGS
+            label util.avoidFaultyNodes()
         }
     }
     options {
diff --git a/.ci/jenkins/Jenkinsfile.tools.update-jenkins-dependencies 
b/.ci/jenkins/Jenkinsfile.tools.update-jenkins-dependencies
index 6192a9ad..9a965505 100644
--- a/.ci/jenkins/Jenkinsfile.tools.update-jenkins-dependencies
+++ b/.ci/jenkins/Jenkinsfile.tools.update-jenkins-dependencies
@@ -10,7 +10,7 @@ branchCreated = false
 
 pipeline {
     agent {
-        label util.getLabel('ubuntu')
+        label util.avoidFaultyNodes('ubuntu')
     }
 
     options {
diff --git a/.ci/jenkins/Jenkinsfile.weekly b/.ci/jenkins/Jenkinsfile.weekly
index 04abb86b..1b6ba9fe 100644
--- a/.ci/jenkins/Jenkinsfile.weekly
+++ b/.ci/jenkins/Jenkinsfile.weekly
@@ -17,7 +17,7 @@ UNSTABLE_STAGES = [:]
 // Should be multibranch pipeline
 pipeline {
     agent {
-        label 'ubuntu'
+        label util.avoidFaultyNodes('ubuntu')
     }
 
     options {
diff --git 
a/.ci/jenkins/tests/src/test/groovy/org/kie/jenkins/JenkinsfileNightly.groovy 
b/.ci/jenkins/tests/src/test/groovy/org/kie/jenkins/JenkinsfileNightly.groovy
index 52ba0e10..40e9d1f7 100644
--- 
a/.ci/jenkins/tests/src/test/groovy/org/kie/jenkins/JenkinsfileNightly.groovy
+++ 
b/.ci/jenkins/tests/src/test/groovy/org/kie/jenkins/JenkinsfileNightly.groovy
@@ -59,7 +59,7 @@ class TestJenkinsfileNightly extends 
SingleFileDeclarativePipelineTest {
         mockSharedLibVarsCall('githubscm', 'resolveRepository', { repo, 
author, branch, ignoreErrors, credsId -> 
registerTestCallstack('githubscm.resolveRepository', "${repo}, ${author}, 
${branch}, ${ignoreErrors}, ${credsId}") })
         mockSharedLibVarsCall('githubscm', 'createBranch', { branch -> 
registerTestCallstack('githubscm.createBranch', "${branch}") })
         mockSharedLibVarsCall('githubscm', 'pushObject', { remote, branch, 
credsId -> registerTestCallstack('githubscm.pushObject', "${remote}, ${branch}, 
${credsId}") })
-        mockSharedLibVarsCall('util', 'getLabel', { label -> return label})
+        mockSharedLibVarsCall('util', 'avoidFaultyNodes', { label -> return 
label })
 
     }
     @Test
diff --git a/README.md b/README.md
index 3f1b4c87..914e00ae 100644
--- a/README.md
+++ b/README.md
@@ -161,7 +161,7 @@ All KIE jobs (pipelines) can be found  in [KIE Jenkins 
folder](https://ci-builds
 For this folder and all its descendants there is several useful things set at 
this folder level:<br />
 - **Pipeline library** - accessible in pipelines under name 
`jenkins-pipeline-shared-libraries` it gives access to some useful functions 
used throughout various KIE pipelines. More details can be found in our 
[Jenkins pipeline shared libraries 
documentation](./jenkins-pipeline-shared-libraries/README.md) and in the 
[previous chapter](#source-code)
 - **Environment Variables** - Environment variables set here are inherited by 
all the folders and jobs located in the [KIE 
folder](https://ci-builds.apache.org/job/KIE) tree in Jenkins. However, they 
can be overridden or extended. You can modify the variables by clicking 
`Configure` in the left menu (if you have necessary permissions). Currently 
present Environment Variables are:
-  - **FAULTY_NODES** - Comma separated list of Jenkins execution nodes that 
are faulty in some way and cause KIE jobs to fail. This variable is expected by 
the *pipeline-library* function `getLabel(String label)`, which extends desired 
`label` by expression that ensures avoiding these faulty nodes. This way we can 
increase durability of KIE automation by the time the Apache CI team fixes the 
issue with faulty node. 
+  - **FAULTY_NODES** - Comma separated list of Jenkins execution nodes that 
are faulty in some way and cause KIE jobs to fail. This variable is expected by 
the *pipeline-library* function `util.avoidFaultyNodes(String label)`, which 
extends desired `label` by expression that ensures avoiding these faulty nodes. 
Use of `util.avoidFaultyNodes()` (without parameter) is also possible for cases 
where no specific `label` needs to be set. This way we can increase durability 
of KIE automation by [...]
 
 
 All pipelines from this repository can be found in [kogito Jenkins 
folder](https://ci-builds.apache.org/job/KIE/job/kogito/).
diff --git a/dsl/seed/jenkinsfiles/Jenkinsfile.buildchain 
b/dsl/seed/jenkinsfiles/Jenkinsfile.buildchain
index 0dfc3b23..c8f71f9e 100644
--- a/dsl/seed/jenkinsfiles/Jenkinsfile.buildchain
+++ b/dsl/seed/jenkinsfiles/Jenkinsfile.buildchain
@@ -49,7 +49,7 @@ pipeline {
     agent {
         docker { 
             image env.AGENT_DOCKER_BUILDER_IMAGE
-            label util.getLabel(agentLabel)
+            label util.avoidFaultyNodes(agentLabel)
             args env.AGENT_DOCKER_BUILDER_ARGS
         }
     }
diff --git a/dsl/seed/jenkinsfiles/Jenkinsfile.environment.integration-branch 
b/dsl/seed/jenkinsfiles/Jenkinsfile.environment.integration-branch
index 83bd5e52..fb6742a0 100644
--- a/dsl/seed/jenkinsfiles/Jenkinsfile.environment.integration-branch
+++ b/dsl/seed/jenkinsfiles/Jenkinsfile.environment.integration-branch
@@ -4,7 +4,7 @@ import org.jenkinsci.plugins.workflow.libs.Library
 
 pipeline {
     agent {
-        label util.getLabel('ubuntu')
+        label util.avoidFaultyNodes('ubuntu')
     }
 
     environment {
diff --git a/dsl/seed/jenkinsfiles/Jenkinsfile.release.prepare 
b/dsl/seed/jenkinsfiles/Jenkinsfile.release.prepare
index 92e80ff6..3a4ad4bb 100644
--- a/dsl/seed/jenkinsfiles/Jenkinsfile.release.prepare
+++ b/dsl/seed/jenkinsfiles/Jenkinsfile.release.prepare
@@ -9,7 +9,7 @@ repositoriesToBranch = []
 
 pipeline {
     agent {
-        label util.getLabel('ubuntu')
+        label util.avoidFaultyNodes('ubuntu')
     }
 
     environment {
diff --git a/dsl/seed/jenkinsfiles/Jenkinsfile.remove.branches 
b/dsl/seed/jenkinsfiles/Jenkinsfile.remove.branches
index 417996ad..37fb1dd6 100644
--- a/dsl/seed/jenkinsfiles/Jenkinsfile.remove.branches
+++ b/dsl/seed/jenkinsfiles/Jenkinsfile.remove.branches
@@ -6,7 +6,7 @@ import org.kie.jenkins.MavenCommand
 pipeline {
 
     agent {
-        label util.getLabel('ubuntu')
+        label util.avoidFaultyNodes('ubuntu')
     }
 
     options{
diff --git a/dsl/seed/jenkinsfiles/Jenkinsfile.seed.branch 
b/dsl/seed/jenkinsfiles/Jenkinsfile.seed.branch
index 35ff15c2..fed4e281 100644
--- a/dsl/seed/jenkinsfiles/Jenkinsfile.seed.branch
+++ b/dsl/seed/jenkinsfiles/Jenkinsfile.seed.branch
@@ -28,7 +28,7 @@ SeedJobUtils.createSeedJobTrigger(
 
 pipeline {
     agent {
-        label util.getLabel(env.AGENT_LABEL)
+        label util.avoidFaultyNodes(env.AGENT_LABEL)
     }
 
     tools {
diff --git a/dsl/seed/jenkinsfiles/Jenkinsfile.seed.main 
b/dsl/seed/jenkinsfiles/Jenkinsfile.seed.main
index 8f84b7ae..deaeaf82 100644
--- a/dsl/seed/jenkinsfiles/Jenkinsfile.seed.main
+++ b/dsl/seed/jenkinsfiles/Jenkinsfile.seed.main
@@ -11,7 +11,7 @@ seedConfig = [:]
 
 pipeline {
     agent {
-        label util.getLabel(env.AGENT_LABEL)
+        label util.avoidFaultyNodes(env.AGENT_LABEL)
     }
 
     options {
diff --git a/dsl/seed/jenkinsfiles/Jenkinsfile.seed.trigger 
b/dsl/seed/jenkinsfiles/Jenkinsfile.seed.trigger
index 68d45551..8437141b 100644
--- a/dsl/seed/jenkinsfiles/Jenkinsfile.seed.trigger
+++ b/dsl/seed/jenkinsfiles/Jenkinsfile.seed.trigger
@@ -4,7 +4,7 @@ import org.jenkinsci.plugins.workflow.libs.Library
 
 pipeline {
     agent {
-        label util.getLabel(env.AGENT_LABEL)
+        label util.avoidFaultyNodes(env.AGENT_LABEL)
     }
 
     options {
diff --git a/dsl/seed/jenkinsfiles/Jenkinsfile.tools.toggle-triggers 
b/dsl/seed/jenkinsfiles/Jenkinsfile.tools.toggle-triggers
index 3de6a0b8..578af03a 100644
--- a/dsl/seed/jenkinsfiles/Jenkinsfile.tools.toggle-triggers
+++ b/dsl/seed/jenkinsfiles/Jenkinsfile.tools.toggle-triggers
@@ -5,7 +5,7 @@ import org.kie.jenkins.MavenCommand
 
 pipeline {
     agent {
-        label util.getLabel('ubuntu')
+        label util.avoidFaultyNodes('ubuntu')
     }
 
     options {
diff --git a/dsl/seed/jenkinsfiles/Jenkinsfile.update-dependency-version 
b/dsl/seed/jenkinsfiles/Jenkinsfile.update-dependency-version
index dca960d7..01180dc0 100644
--- a/dsl/seed/jenkinsfiles/Jenkinsfile.update-dependency-version
+++ b/dsl/seed/jenkinsfiles/Jenkinsfile.update-dependency-version
@@ -10,6 +10,7 @@ pipeline {
         docker { 
             image env.AGENT_DOCKER_BUILDER_IMAGE
             args env.AGENT_DOCKER_BUILDER_ARGS
+            label util.avoidFaultyNodes()
         }
     }
 
diff --git a/dsl/seed/jenkinsfiles/Jenkinsfile.update-quarkus-platform 
b/dsl/seed/jenkinsfiles/Jenkinsfile.update-quarkus-platform
index e036518a..00811fce 100644
--- a/dsl/seed/jenkinsfiles/Jenkinsfile.update-quarkus-platform
+++ b/dsl/seed/jenkinsfiles/Jenkinsfile.update-quarkus-platform
@@ -11,6 +11,7 @@ pipeline {
         docker { 
             image env.AGENT_DOCKER_BUILDER_IMAGE
             args env.AGENT_DOCKER_BUILDER_ARGS
+            label util.avoidFaultyNodes()
         }
     }
 
diff --git a/dsl/seed/jenkinsfiles/Jenkinsfile.update-quarkus-version 
b/dsl/seed/jenkinsfiles/Jenkinsfile.update-quarkus-version
index 73479d08..ae53a5ef 100644
--- a/dsl/seed/jenkinsfiles/Jenkinsfile.update-quarkus-version
+++ b/dsl/seed/jenkinsfiles/Jenkinsfile.update-quarkus-version
@@ -7,7 +7,7 @@ failingRepos = []
 
 pipeline {
     agent {
-        label util.getLabel('ubuntu')
+        label util.avoidFaultyNodes('ubuntu')
     }
 
     environment {
diff --git a/jenkins-pipeline-shared-libraries/vars/util.groovy 
b/jenkins-pipeline-shared-libraries/vars/util.groovy
index cd3d45ce..ae7c5d28 100644
--- a/jenkins-pipeline-shared-libraries/vars/util.groovy
+++ b/jenkins-pipeline-shared-libraries/vars/util.groovy
@@ -557,12 +557,16 @@ void waitForDocker() {
 }
 
 /**
- * Method to wrap original label and exclude nodes that are marked as faulty 
in some of the parent folders.
- * This environment variable is inherited down the folder tree and available 
in jobs.
+ * Method to wrap original label and exclude nodes that were marked as faulty 
in some of the parent folders.
+ * Example usage in agent block: `label util.avoidFaultyNodes('ubuntu')`
+ * `FAULTY_NODES` environment variable is inherited down the folder tree and 
available in jobs.
  * @param label Node label to be used
  * @return Node label extended with an expression ensuring to exclude nodes 
marked as faulty.
  */
-String getLabel(String label) {
+String avoidFaultyNodes(String label) {
+    if (label == null || label.isEmpty()) {
+        return avoidFaultyNodes()
+    }
     String faultyNodesString = env.FAULTY_NODES
     if((faultyNodesString == null) || faultyNodesString.isEmpty()) {
         return label
@@ -571,3 +575,19 @@ String getLabel(String label) {
     String result = "(${label}) && !(${String.join(' || ', faultyNodes)})"
     return result.toString()
 }
+
+/**
+ * Method to exclude nodes that were marked as faulty in some of the parent 
folders.
+ * Example usage in agent block: `label util.avoidFaultyNodes()`
+ * `FAULTY_NODES` environment variable is inherited down the folder tree and 
available in jobs.
+ * @return Node label expression ensuring to exclude nodes marked as faulty.
+ */
+String avoidFaultyNodes() {
+    String faultyNodesString = env.FAULTY_NODES
+    if((faultyNodesString == null) || faultyNodesString.isEmpty()) {
+        return '!dummyLabel'    // we need to put something here because label 
without parameter would cause compile error
+    }
+    String[] faultyNodes = faultyNodesString.split(',')
+    String result = "!(${String.join(' || ', faultyNodes)})"
+    return result.toString()
+}


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to