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]