You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kie.apache.org by js...@apache.org on 2023/09/19 10:46:24 UTC
[incubator-kie-kogito-pipelines] branch apache_migration updated (96d1950c -> 49b9acd9)
This is an automated email from the ASF dual-hosted git repository.
jstastnycz pushed a change to branch apache_migration
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-pipelines.git
discard 96d1950c Switch to main branch in config
discard d970de45 Create multibranch kogito-ci-build image job (#1084)
discard a7ea2446 Add configuration parameter to disable nexus deploy (#1088)
omit de0ca2b2 Revert "set branch evn variables for PR check Jenkinsfile (#1087)"
omit 2fd3249a set branch evn variables for PR check Jenkinsfile (#1087)
omit 60bcd55f Fix CI references to kie-docs and kie-benchmarks (#1086)
omit 69fecf6c still use apache_migration branch in apache (#1085)
omit 9cf12a00 Update `kiegroup` repository references to `apache` (#1078)
omit f939c214 make a multibranch kogito-ci-image job
omit 5faaf7e0 add debug eng
omit 35199755 Merge remote-tracking branch 'upstream/apache_migration' into apache_migration
omit e36792ba PR jobs configure periodicFolderTrigger (#1083)
omit 8a362f32 small correction
omit 9afec08f Added debug method
omit 0ba5f95b removed kie-tools
omit e650f381 PR multibranchPipelineJob (#1082)
omit 4b90b1fa Disable kie-jpmml-integration
omit 6286e60f [Apache] Allow repository job display name (#1080)
omit 03613d39 updates
omit 2b6fb443 Added docker image as branch config
omit 607ad031 Branch config update
omit 4d6b2b0f corrected Dockerfile
omit 94ce1b49 update build-chain jenkinsfile
omit 93a02127 corrected oc client
omit a96f0df5 Added NODE_HOME
omit ed127645 increased timeout for build-chain jobs
omit 8d0e84c5 Added some tools to the image
omit c68fed00 update pipelines
omit 1f484c9f updated seed config
omit afaeaf75 update PR check: full downstream build
omit 429dbb9d correct pr check
omit 09800d55 Update docker image (#1069)
omit 8fb5bf0b Merge branch 'main' into apache_migration
omit 599ef5a4 Fix Cloud credentials reference
omit 328e3aed Added more repositories
omit 38bf6ee8 Update PR check script (#1063)
omit d2f2d673 Prepare for Apache migration
new 49b9acd9 kie-issues#574 Initial ASF Jenkins CI Setup
This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version. This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:
* -- * -- B -- O -- O -- O (96d1950c)
\
N -- N -- N refs/heads/apache_migration (49b9acd9)
You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.
Any revisions marked "omit" are not gone; other references still
refer to them. Any revisions marked "discard" are gone forever.
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org
[incubator-kie-kogito-pipelines] 01/01: kie-issues#574 Initial ASF Jenkins CI Setup
Posted by js...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
jstastnycz pushed a commit to branch apache_migration
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-pipelines.git
commit 49b9acd9fbafe50c76474311f1149d112acb65a4
Author: jstastny-cz <ja...@ibm.com>
AuthorDate: Tue Sep 19 12:39:56 2023 +0200
kie-issues#574 Initial ASF Jenkins CI Setup
---
.ci/actions/build-chain/action.yml | 2 +-
.ci/actions/dsl-tests/action.yml | 2 +-
.ci/actions/os-preparation/action.yaml | 2 +-
.ci/chain-status-info.md | 2 +-
.ci/jenkins/Jenkinsfile.build-kogito-ci-image | 97 +++
.ci/jenkins/Jenkinsfile.build-operator-node | 16 +-
.ci/jenkins/Jenkinsfile.nightly | 4 +-
.ci/jenkins/Jenkinsfile.nightly.cloud | 6 +-
.ci/jenkins/Jenkinsfile.nightly.quarkus-platform | 25 +-
.ci/jenkins/Jenkinsfile.prod.nightly | 269 ---------
.ci/jenkins/Jenkinsfile.release | 6 +-
.ci/jenkins/Jenkinsfile.release.cloud | 6 +-
.ci/jenkins/Jenkinsfile.setup-branch | 4 +-
.ci/jenkins/Jenkinsfile.setup-branch.cloud | 2 +-
.ci/jenkins/Jenkinsfile.tools.clean-nightly-images | 7 +-
.ci/jenkins/Jenkinsfile.tools.clean-old-namespaces | 7 +-
.ci/jenkins/Jenkinsfile.tools.create-issue | 10 +-
.../Jenkinsfile.tools.update-jenkins-dependencies | 6 +-
.ci/jenkins/config/branch.yaml | 119 ++--
.ci/jenkins/config/main.yaml | 60 +-
.ci/jenkins/dsl/jobs.groovy | 64 +-
.ci/nightly-build-config.yaml | 61 --
.ci/nightly-project-dependencies.yaml | 82 ---
.ci/project-dependencies.yaml | 38 +-
.ci/pull-request-config.yaml | 22 +-
.github/workflows/generate_status_page.yaml | 4 +-
.github/workflows/generate_status_page_data.yaml | 4 +-
.github/workflows/jenkins-dsl-downstream.yml | 20 +-
.github/workflows/jenkins-tests.yml | 4 +-
README.md | 14 +-
apache-nodes/Dockerfile.kogito-ci-build | 114 ++++
docs/jenkins.md | 14 +-
docs/nightly pipeline.md | 24 +-
docs/release pipeline.md | 28 +-
dsl/scripts/pr_check.groovy | 135 +++++
dsl/seed/build.gradle | 1 +
dsl/seed/gradle.properties | 1 +
dsl/seed/jenkinsfiles/Jenkinsfile.buildchain | 221 +++----
.../Jenkinsfile.environment.integration-branch | 2 +-
dsl/seed/jenkinsfiles/Jenkinsfile.prod.prepare | 664 ---------------------
dsl/seed/jenkinsfiles/Jenkinsfile.release.prepare | 6 +-
dsl/seed/jenkinsfiles/Jenkinsfile.remove.branches | 2 +-
dsl/seed/jenkinsfiles/Jenkinsfile.seed.branch | 12 +-
dsl/seed/jenkinsfiles/Jenkinsfile.seed.main | 6 +-
dsl/seed/jenkinsfiles/Jenkinsfile.seed.trigger | 2 +-
.../jenkinsfiles/Jenkinsfile.tools.toggle-triggers | 2 +-
.../Jenkinsfile.update-dependency-version | 16 +-
.../Jenkinsfile.update-quarkus-platform | 14 +-
.../Jenkinsfile.update-quarkus-version | 8 +-
dsl/seed/jobs/root_jobs.groovy | 60 --
dsl/seed/jobs/seed_job_branch.groovy | 4 +-
dsl/seed/jobs/seed_job_main.groovy | 10 +-
dsl/seed/scripts/seed_test.sh | 12 +-
.../kie/jenkins/jobdsl/KogitoJobTemplate.groovy | 102 +++-
.../org/kie/jenkins/jobdsl/KogitoJobUtils.groovy | 15 +-
.../groovy/org/kie/jenkins/jobdsl/Utils.groovy | 30 +-
.../kie/jenkins/jobdsl/utils/JobParamsUtils.groovy | 13 +-
.../kie/jenkins/jobdsl/utils/SeedJobUtils.groovy | 5 +-
.../kie/jenkins/jobdsl/utils/VersionUtils.groovy | 8 +-
.../org/kie/jenkins/jobdsl/JobScriptsSpec.groovy | 1 -
tools/update-kie7-version.sh | 4 +-
tools/update-quarkus-versions.sh | 4 +-
62 files changed, 864 insertions(+), 1641 deletions(-)
diff --git a/.ci/actions/build-chain/action.yml b/.ci/actions/build-chain/action.yml
index bd171e79..83a78dab 100644
--- a/.ci/actions/build-chain/action.yml
+++ b/.ci/actions/build-chain/action.yml
@@ -7,7 +7,7 @@ inputs:
definition-file:
description: 'The `definition-file` input for the build-chain'
required: false
- default: 'https://raw.githubusercontent.com/${GROUP:kiegroup}/kogito-pipelines/${BRANCH:main}/.ci/pull-request-config.yaml'
+ default: 'https://raw.githubusercontent.com/${GROUP:apache}/incubator-kie-kogito-pipelines/${BRANCH:main}/.ci/pull-request-config.yaml'
flow-type:
description: "the flow to execute, it can be 'cross_pr' (or 'pull-request' which is deprecated), 'full_downstream' (or 'full-downstream' which is deprecated), 'single_pr' (or 'single' which is deprecated) or 'branch'"
default: "cross_pr"
diff --git a/.ci/actions/dsl-tests/action.yml b/.ci/actions/dsl-tests/action.yml
index 0f4a330a..c693a8eb 100644
--- a/.ci/actions/dsl-tests/action.yml
+++ b/.ci/actions/dsl-tests/action.yml
@@ -46,7 +46,7 @@ runs:
- name: Checkout Seed repo
uses: actions/checkout@v3
with:
- repository: kiegroup/kogito-pipelines
+ repository: apache/incubator-kie-kogito-pipelines
ref: main
path: seed_repo
diff --git a/.ci/actions/os-preparation/action.yaml b/.ci/actions/os-preparation/action.yaml
index c9d1d8a2..af8004d7 100644
--- a/.ci/actions/os-preparation/action.yaml
+++ b/.ci/actions/os-preparation/action.yaml
@@ -5,7 +5,7 @@ inputs:
repository:
description: "The repository containing the matrix-os.json os configuration"
required: false
- default: "kiegroup/kogito-pipelines"
+ default: "apache/incubator-kie-kogito-pipelines"
branch:
description: "The repository branch from which the matrix configuration must be taken"
required: false
diff --git a/.ci/chain-status-info.md b/.ci/chain-status-info.md
index 33cedd82..fe3a3be3 100644
--- a/.ci/chain-status-info.md
+++ b/.ci/chain-status-info.md
@@ -1,5 +1,5 @@
# Kiegroup Kogito organization repositories CI Status
-This project is based on [chain-status](https://github.com/kiegroup/chain-status) and information generated thanks to [build-chain-configuration-reader](https://github.com/kiegroup/build-chain-configuration-reader) using [kogito-pipelines definition file](https://github.com/kiegroup/kogito-pipelines/blob/main/.ci/pull-request-config.yaml).
+This project is based on [chain-status](https://github.com/kiegroup/chain-status) and information generated thanks to [build-chain-configuration-reader](https://github.com/kiegroup/build-chain-configuration-reader) using [kogito-pipelines definition file](https://github.com/apache/incubator-kie-kogito-pipelines/blob/main/.ci/pull-request-config.yaml).
Due to the retrieved information requires a `GITHUB_TOKEN` and github API has a limitation it is better to not collect the information on every request from this webpage is made. So this webpage does not really requires an application service and all the required data is stored in github pages. This information is normally retrieved, treated and stored using [chain-status/action tool](https://github.com/kiegroup/chain-status/tree/main/packages/action) which is exposed as a Github Action [...]
diff --git a/.ci/jenkins/Jenkinsfile.build-kogito-ci-image b/.ci/jenkins/Jenkinsfile.build-kogito-ci-image
new file mode 100644
index 00000000..fba0135f
--- /dev/null
+++ b/.ci/jenkins/Jenkinsfile.build-kogito-ci-image
@@ -0,0 +1,97 @@
+import org.jenkinsci.plugins.workflow.libs.Library
+
+@Library('jenkins-pipeline-shared-libraries')_
+
+pipeline {
+ agent {
+ label 'ubuntu'
+ }
+
+ environment {
+ DOCKER_CONFIG = "${WORKSPACE}/.docker"
+
+ IMAGE_NAME = 'quay.io/kiegroup/kogito-ci-build'
+ IMAGE_TAG = "${BRANCH_NAME}-build-${BUILD_NUMBER}"
+ IMAGE_NAME_TAG = "${env.IMAGE_NAME}:${env.IMAGE_TAG}"
+ }
+
+ options {
+ timeout(time: 60, unit: 'MINUTES')
+ }
+
+ stages {
+ stage('Build image') {
+ steps {
+ script {
+ sh 'printenv'
+
+ currentBuild.displayName = env.IMAGE_TAG
+
+ cloud.loginContainerRegistry('quay.io', 'quay_kiegroup_registry_token')
+
+ dir('kogito-pipelines') {
+ deleteDir()
+
+ checkout scm
+
+ sh """
+ docker build --build-arg SDKMAN_JAVA=11.0.20-tem -t ${env.IMAGE_NAME_TAG} -f apache-nodes/Dockerfile.kogito-ci-build .
+ docker tag ${env.IMAGE_NAME_TAG} ${env.IMAGE_NAME}:${GIT_COMMIT}
+ docker tag ${env.IMAGE_NAME_TAG} ${env.IMAGE_NAME}:${BRANCH_NAME}-latest
+ """
+
+ sh """
+ docker --config ${DOCKER_CONFIG} push ${env.IMAGE_NAME_TAG}
+ docker --config ${DOCKER_CONFIG} push ${env.IMAGE_NAME}:${GIT_COMMIT}
+ docker --config ${DOCKER_CONFIG} push ${env.IMAGE_NAME}:${BRANCH_NAME}-latest
+ """
+ }
+ }
+ }
+ post {
+ always {
+ script {
+ sh "rm -rf ${DOCKER_CONFIG}"
+ sh 'docker logout quay.io'
+ }
+ }
+ }
+ }
+ stage('Test built image') {
+ agent {
+ docker {
+ image env.IMAGE_NAME_TAG
+ args '-v /var/run/docker.sock:/var/run/docker.sock --group-add docker --group-add input --group-add render'
+ }
+ }
+ steps {
+ echo 'Debug basics'
+ sh '''
+ locale
+ printenv
+ '''
+
+ echo 'Test tools'
+ sh '''
+ java -version
+ mvn --version
+ python --version
+ pip --version
+ node --version
+ npm --version
+ go version
+ s2i version
+ gh version
+ kubectl version --client
+ oc version --client
+ '''
+
+ echo 'Test docker'
+ sh '''
+ docker info
+ docker run hello-world
+ '''
+ }
+ }
+ }
+}
diff --git a/.ci/jenkins/Jenkinsfile.build-operator-node b/.ci/jenkins/Jenkinsfile.build-operator-node
index 116500af..fba8ec3e 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 'kie-rhel8-priority && !built-in'
+ label 'ubuntu'
}
options {
@@ -20,7 +20,7 @@ pipeline {
steps {
script {
deleteDir()
- checkout(githubscm.resolveRepository('kogito-pipelines', 'kiegroup', 'main', false))
+ checkout(githubscm.resolveRepository('incubator-kogito-pipelines', 'apache', 'main', false))
}
}
}
@@ -28,7 +28,7 @@ pipeline {
steps {
script {
dir('kogito-operator-jenkins-node') {
- sh 'cekit -v build podman'
+ sh 'cekit -v build docker'
}
}
}
@@ -43,17 +43,17 @@ pipeline {
echo "Got version for tagging -> ${version}"
sh """
- podman tag kogito-operator-jenkins-node:latest quay.io/kiegroup/kogito-operator-jenkins-node:${version}
- podman tag kogito-operator-jenkins-node:latest quay.io/kiegroup/kogito-operator-jenkins-node:latest
+ docker tag kogito-operator-jenkins-node:latest quay.io/kiegroup/kogito-operator-jenkins-node:${version}
+ docker tag kogito-operator-jenkins-node:latest quay.io/kiegroup/kogito-operator-jenkins-node:latest
"""
withCredentials([usernamePassword(credentialsId: 'nightly_kogito', usernameVariable: 'REGISTRY_USER', passwordVariable: 'REGISTRY_PWD')]) {
- sh "podman login --tls-verify=false -u ${REGISTRY_USER} -p ${REGISTRY_PWD} quay.io"
+ sh "docker login -u ${REGISTRY_USER} -p ${REGISTRY_PWD} quay.io"
}
sh """
- podman push quay.io/kiegroup/kogito-operator-jenkins-node:${version}
- podman push quay.io/kiegroup/kogito-operator-jenkins-node:latest
+ docker push quay.io/kiegroup/kogito-operator-jenkins-node:${version}
+ docker push quay.io/kiegroup/kogito-operator-jenkins-node:latest
"""
}
}
diff --git a/.ci/jenkins/Jenkinsfile.nightly b/.ci/jenkins/Jenkinsfile.nightly
index 3a41a7aa..e8880a1d 100644
--- a/.ci/jenkins/Jenkinsfile.nightly
+++ b/.ci/jenkins/Jenkinsfile.nightly
@@ -19,7 +19,7 @@ UNSTABLE_STAGES = [:]
// Should be multibranch pipeline
pipeline {
agent {
- label 'kie-rhel8 && !built-in'
+ label 'ubuntu'
}
options {
@@ -118,7 +118,7 @@ pipeline {
// Update examples nightly branch
dir('kogito-examples') {
deleteDir()
- checkout(githubscm.resolveRepository('kogito-examples', getGitAuthor(), getBuildBranch(), false, getGitAuthorCredsID()))
+ checkout(githubscm.resolveRepository('incubator-kie-kogito-examples', getGitAuthor(), getBuildBranch(), false, getGitAuthorCredsID()))
String nightlyBranch = "nightly-${getBuildBranch()}"
githubscm.createBranch(nightlyBranch)
githubscm.pushObject('origin', nightlyBranch, getGitAuthorCredsID())
diff --git a/.ci/jenkins/Jenkinsfile.nightly.cloud b/.ci/jenkins/Jenkinsfile.nightly.cloud
index 65015d05..fc6e572e 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 'kie-rhel8 && !built-in'
+ label 'ubuntu'
}
options {
@@ -266,11 +266,11 @@ void addSkipIntegrationTestsParam(buildParams) {
void addAppsParam(buildParams) {
addStringParam(buildParams, 'APPS_REF', "${getBuildBranch()}")
- addStringParam(buildParams, 'APPS_URI', "https://github.com/${getGitAuthor()}/kogito-apps")
+ addStringParam(buildParams, 'APPS_URI', "https://github.com/${getGitAuthor()}/incubator-kie-kogito-apps")
}
void addExamplesParam(buildParams) {
- addStringParam(buildParams, 'EXAMPLES_URI', "https://github.com/${getGitAuthor()}/kogito-examples")
+ addStringParam(buildParams, 'EXAMPLES_URI', "https://github.com/${getGitAuthor()}/incubator-kie-kogito-examples")
addStringParam(buildParams, 'EXAMPLES_REF', "nightly-${getBuildBranch()}")
}
diff --git a/.ci/jenkins/Jenkinsfile.nightly.quarkus-platform b/.ci/jenkins/Jenkinsfile.nightly.quarkus-platform
index 7485e292..6797aedd 100644
--- a/.ci/jenkins/Jenkinsfile.nightly.quarkus-platform
+++ b/.ci/jenkins/Jenkinsfile.nightly.quarkus-platform
@@ -6,7 +6,10 @@ import org.kie.jenkins.MavenSettingsUtils
pipeline {
agent {
- label 'rhel8 && docker && !built-in'
+ docker {
+ image env.AGENT_DOCKER_BUILDER_IMAGE
+ args env.AGENT_DOCKER_BUILDER_ARGS
+ }
}
options {
@@ -14,11 +17,6 @@ pipeline {
timeout(time: 240, unit: 'MINUTES')
}
- tools {
- maven "${BUILD_MAVEN_TOOL}"
- jdk "${BUILD_JDK_TOOL}"
- }
-
environment {
// Static env is defined into .jenkins/dsl/jobs.groovy file
KOGITO_CI_EMAIL_TO = credentials("${JENKINS_EMAIL_CREDS_ID}")
@@ -44,27 +42,27 @@ pipeline {
script {
dir('drools') {
deleteDir()
- checkout(githubscm.resolveRepository('drools', getGitAuthor(), getTargetBranch(7), false))
+ checkout(githubscm.resolveRepository('incubator-kie-drools', getGitAuthor(), getTargetBranch(7), false))
}
dir('kogito-runtimes') {
deleteDir()
- checkout(githubscm.resolveRepository('kogito-runtimes', getGitAuthor(), getGitBranch(), false))
+ checkout(githubscm.resolveRepository('incubator-kie-kogito-runtimes', getGitAuthor(), getGitBranch(), false))
}
dir('kogito-apps') {
deleteDir()
- checkout(githubscm.resolveRepository('kogito-apps', getGitAuthor(), getGitBranch(), false))
+ checkout(githubscm.resolveRepository('incubator-kie-kogito-apps', getGitAuthor(), getGitBranch(), false))
}
dir('optaplanner') {
deleteDir()
// Get current corresponding branch and if not working, latest tag
String opBranch = getTargetBranch(7)
try {
- checkout(githubscm.resolveRepository('optaplanner', getGitAuthor(), opBranch, false))
+ checkout(githubscm.resolveRepository('incubator-kie-optaplanner', getGitAuthor(), opBranch, false))
} catch(err) {
echo "Error checking out ${opBranch}. Fallback to latest tag."
String latestTag = githubscm.getLatestTag("${opBranch.split("\\.")[0]}\\.")
echo "Got latest tag = ${latestTag}"
- checkout(githubscm.resolveRepository('optaplanner', getGitAuthor(), latestTag, false))
+ checkout(githubscm.resolveRepository('incubator-kie-optaplanner', getGitAuthor(), latestTag, false))
}
}
}
@@ -156,8 +154,9 @@ pipeline {
.run('deploy')
// Upload to specific repository with credentials
- String mavenDeployRepositoryZipUrl = "${QUARKUS_PLATFORM_NEXUS_URL.replaceAll('/content/', '/service/local/').replaceFirst('/*$', '')}/content-compressed"
- maven.uploadLocalArtifacts("${QUARKUS_PLATFORM_NEXUS_CREDS}", getMavenDeployLocalDir(), mavenDeployRepositoryZipUrl)
+ // Removed deployment to reposiory as no repository defined for now ...
+ // String mavenDeployRepositoryZipUrl = "${QUARKUS_PLATFORM_NEXUS_URL.replaceAll('/content/', '/service/local/').replaceFirst('/*$', '')}/content-compressed"
+ // maven.uploadLocalArtifacts("${QUARKUS_PLATFORM_NEXUS_CREDS}", getMavenDeployLocalDir(), mavenDeployRepositoryZipUrl)
}
}
}
diff --git a/.ci/jenkins/Jenkinsfile.prod.nightly b/.ci/jenkins/Jenkinsfile.prod.nightly
deleted file mode 100644
index faa0d6b8..00000000
--- a/.ci/jenkins/Jenkinsfile.prod.nightly
+++ /dev/null
@@ -1,269 +0,0 @@
-@Library('jenkins-pipeline-shared-libraries')_
-
-import org.kie.jenkins.MavenCommand
-
-pipeline {
- agent {
- label 'kie-rhel8 && docker && kie-mem24g && !built-in'
- }
- tools {
- maven 'kie-maven-3.8.7'
- jdk 'kie-jdk11'
- nodejs 'nodejs-16.2.0'
- }
- parameters {
- string(description: 'The UMB message version', name: 'UMB_VERSION', defaultValue: 'main')
- string(description: 'The product version, if not provided the kogito-runtimes main branch one will be use', name: 'PRODUCT_VERSION')
- string(description: 'The drools product version, if not provided the drools main branch one will be used', name: 'DROOLS_PRODUCT_VERSION')
- string(description: 'The config repository branch', name: 'CONFIG_BRANCH', defaultValue: 'master')
- }
- options {
- buildDiscarder logRotator(artifactDaysToKeepStr: '', artifactNumToKeepStr: '', daysToKeepStr: '', numToKeepStr: '10')
- }
- environment {
- DATE_TIME_SUFFIX_FORMAT = 'yyyyMMddHH'
- }
- stages {
- stage('Initialize') {
- steps {
- script {
- // Fetch versions from pom if not provided
- env.PRODUCT_VERSION = "${PRODUCT_VERSION ?: parseVersionFromPom('kiegroup/kogito-runtimes', getBuildBranch())}"
- env.DROOLS_PRODUCT_VERSION = "${DROOLS_PRODUCT_VERSION ?: parseVersionFromPom('kiegroup/drools', getDroolsBranch())}"
-
- // Needed by Kogito Apps
- setupCypressEnv('12.17.0')
- }
- }
- }
- stage('Install build-chain tool') {
- steps {
- script {
- println "[INFO] Installing build-chain tool"
- sh "npm install -g @kie/build-chain-action${env.NPM_REGISTRY_URL ? " -registry=${NPM_REGISTRY_URL}" : ''}"
-
- sh "npm list -g | grep build-chain"
- }
- }
- }
- stage('Clone build configuration repo') {
- steps {
- script {
- def currentBranch = getBuildConfigBranch()
- println "Checking out ${env.BUILD_CONFIGURATION_REPO_URL}:${currentBranch} into build_config folder"
- sh "git clone -b ${currentBranch} --single-branch ${env.BUILD_CONFIGURATION_REPO_URL} build_config"
-
- // export PME parameters and build scripts from nightly build config
- def buildConfigAdditionalVariables = [
- 'productVersion': env.PRODUCT_VERSION,
- 'droolsProductVersion': env.DROOLS_PRODUCT_VERSION
- ]
- pmebuild.parseBuildConfig("$WORKSPACE/build_config/openshift-serverless-logic/nightly", buildConfigAdditionalVariables)
-
- def PME_BUILD_VARIABLES = env.PME_BUILD_VARIABLES.split(';').collect{ it.split('=')}.inject([:]) {map, item -> map << [(item.length == 2 ? item[0] : null): (item.length == 2 ? item[1] : null)]}
-
- // export Quarkus community versions
- env.QUARKUS_VERSION_COMMUNITY = PME_BUILD_VARIABLES['quarkusVersionCommunity']
- env.QUARKUS_VERSION = PME_BUILD_VARIABLES['quarkusVersion'].replaceAll("\\{\\{.*\\}\\}", env.QUARKUS_VERSION_COMMUNITY)
- env.QUARKUS_PLATFORM_VERSION = PME_BUILD_VARIABLES['quarkusPlatformVersion'].replaceAll("\\{\\{.*\\}\\}", env.QUARKUS_VERSION_COMMUNITY)
-
- // export images registries
- env.IMAGE_TAG_VERSION = PME_BUILD_VARIABLES['imageTagVersion']
- env.DATA_INDEX_IMAGE_REGISTRY = PME_BUILD_VARIABLES['dataIndexImageRegistry'].replaceAll("\\{\\{.*\\}\\}", env.IMAGE_TAG_VERSION)
- env.SWF_BUILDER_IMAGE_REGISTRY = PME_BUILD_VARIABLES['swfBuilderImageRegistry'].replaceAll("\\{\\{.*\\}\\}", env.IMAGE_TAG_VERSION)
- env.SWF_DEVMODE_IMAGE_REGISTRY = PME_BUILD_VARIABLES['swfDevModeImageRegistry'].replaceAll("\\{\\{.*\\}\\}", env.IMAGE_TAG_VERSION)
- env.OPERATOR_IMAGE_REGISTRY = PME_BUILD_VARIABLES['operatorImageRegistry'].replaceAll("\\{\\{.*\\}\\}", env.IMAGE_TAG_VERSION)
-
- sh 'printenv'
- }
- }
- }
- stage('Build Nightly projects') {
- steps {
- script {
- def pipelineHelper = new PipelineHelper(this)
- pipelineHelper.retry(
- {
- withCredentials([string(credentialsId: "kie-ci1-token", variable: 'GITHUB_TOKEN')]) {
- def SETTINGS_XML_ID = '5d9884a1-178a-4d67-a3ac-9735d2df2cef'
- def buildBranch = getBuildBranch()
- def definitionFile = "https://raw.githubusercontent.com/\\\${GROUP:kiegroup}/kogito-pipelines/${getDefinitionFileBranch()}/.ci/nightly-build-config.yaml"
-
- configFileProvider([configFile(fileId: "${SETTINGS_XML_ID}", variable: 'PME_MAVEN_SETTINGS_XML')]) {
- sh "build-chain build branch --token=${GITHUB_TOKEN} -f ${definitionFile} -b ${buildBranch} -o bc -p kiegroup/kogito-runtimes --fullProjectDependencyTree --skipParallelCheckout"
- }
- }
- }, 2, 480*60)
- }
- }
- }
- stage('Upload maven repository') {
- steps {
- script {
- echo "[INFO] Start uploading ${env.WORKSPACE}/deployDirectory"
- if(fileExists("${env.WORKSPACE}/deployDirectory")){
- def destDir = "${env.WORKSPACE}/deployDirectoryFinal/openshift-serverless-logic-${PRODUCT_VERSION}-maven-repository/maven-repository/"
- sh "mkdir -p ${destDir}"
- sh "mv ${env.WORKSPACE}/deployDirectory/* ${destDir}"
- dir("${env.WORKSPACE}/deployDirectoryFinal") {
- sh "zip -r maven-repository-${env.DATE_TIME_SUFFIX} ."
- def relativeFile = "rhoss/rhoss-logic-${PRODUCT_VERSION}.nightly"
- def folder="${env.RCM_GUEST_FOLDER}/${relativeFile}"
-
- util.withKerberos('rhba-prod-keytab') {
- sh "ssh 'rhba-prod@${env.RCM_HOST}' 'mkdir -p ${folder}'"
- sh "rsync -rlp --info=progress2 maven-repository-${env.DATE_TIME_SUFFIX}.zip rhba-prod@${env.RCM_HOST}:staging/${relativeFile}"
- }
- }
- }
- }
- }
- }
- stage ('Extract Git Information') {
- steps {
- script {
- def projectFolders = sh(returnStdout: true, script: "ls ${env.WORKSPACE}/bc").trim().split("\n")
- for (f in projectFolders) {
- dir("${env.WORKSPACE}/bc/${f}") {
- def projectName = f.replace("_", "/")
- // extract git infos
- util.storeGitInformation(projectName)
- env.ALREADY_BUILT_PROJECTS = "${env.ALREADY_BUILT_PROJECTS ?: ''}${projectName};"
-
- def sanitizedProjectName = f.replaceAll('/', '_').replaceAll('-', '_')
- def buildScript = env["PME_BUILD_SCRIPT_${sanitizedProjectName}"]
- def pomPath = maven.getProjectPomFromBuildCmd(buildScript)
- env["VERSION_${f}"] = maven.mvnGetVersionProperty(new MavenCommand(this).withProperty('productized'), 'project.version', pomPath)
- }
- }
-
- sh 'printenv'
- }
- }
- }
- stage ('Send UMB Message to QE.') {
- steps {
- script {
- echo '[INFO] Sending OPENSHIFT SERVERLESS LOGIC UMB message to QE.'
-
- def mavenRepositoryFileUrl = "${env.STAGING_SERVER_URL}/rhoss/rhoss-logic-${PRODUCT_VERSION}.nightly/maven-repository-${env.DATE_TIME_SUFFIX}.zip"
- def topic = "VirtualTopic.qe.ci.ba.openshift-serverless-logic.${env.UMB_VERSION}.nightly.trigger"
- def eventType = "openshift-serverless-logic-${env.UMB_VERSION}-nightly-qe-trigger"
- def messageBody = getMessageBody(
- mavenRepositoryFileUrl,
- env.ALREADY_BUILT_PROJECTS,
- ['serverlesslogic': env['VERSION_kiegroup_kogito-runtimes'], 'serverlesslogic-rhba': env['VERSION_kiegroup_kogito-runtimes'], 'drools': env.VERSION_kiegroup_drools, 'platform.quarkus.bom': env.QUARKUS_PLATFORM_VERSION, 'quarkus.bom': env.QUARKUS_VERSION],
- ['data-index-ephemeral': env.DATA_INDEX_IMAGE_REGISTRY, 'swf-builder': env.SWF_BUILDER_IMAGE_REGISTRY, 'swf-devmode': env.SWF_DEVMODE_IMAGE_REGISTRY, 'operator': env.OPERATOR_IMAGE_REGISTRY],
- gitHashesToCollection(env.GIT_INFORMATION_HASHES)
- )
- echo "[INFO] Message Body: ${messageBody}"
- echo "[INFO] Topic: ${topic}"
- echo "[INFO] Event Type: ${eventType}"
- build job: env.SEND_UMB_MESSAGE_JOB_PATH, parameters: [
- [$class: 'StringParameterValue', name: 'MESSAGE_BODY', value: messageBody],
- [$class: 'StringParameterValue', name: 'TOPIC', value: topic],
- [$class: 'StringParameterValue', name: 'EVENT_TYPE', value: eventType]
- ]
- echo '[SUCCESS] Message was successfully sent.'
- }
- }
- }
- }
- post {
- failure {
- emailext body: 'OPENSHIFT SERVERLESS LOGIC ${PRODUCT_VERSION}:nightly-build #${BUILD_NUMBER} was: ' + "${currentBuild.currentResult}" + '\n' +
- 'Please look here: ${BUILD_URL} \n' +
- ' \n' +
- '${BUILD_LOG, maxLines=750}', subject: 'OPENSHIFT SERVERLESS LOGIC ${PRODUCT_VERSION}:nightly-build #${BUILD_NUMBER}: ' + "${currentBuild.currentResult}", to: 'kie-jenkins-builds@redhat.com'
- }
- unstable {
- emailext body: 'OPENSHIFT SERVERLESS LOGIC ${PRODUCT_VERSION}:nightly-build #${BUILD_NUMBER} was: ' + "${currentBuild.currentResult}" + '\n' +
- 'Please look here: ${BUILD_URL} \n' +
- ' \n' +
- 'Failed tests: ${BUILD_URL}/testReport \n' +
- ' \n' +
- '${BUILD_LOG, maxLines=750}', subject: 'OPENSHIFT SERVERLESS LOGIC ${PRODUCT_VERSION}:nightly-build #${BUILD_NUMBER}: ' + "${currentBuild.currentResult}", to: 'kie-jenkins-builds@redhat.com'
- }
- fixed {
- emailext body: 'OPENSHIFT SERVERLESS LOGIC ${PRODUCT_VERSION}:nightly-build #${BUILD_NUMBER} was: ' + "${currentBuild.currentResult}" + '\n' +
- 'Please look here: ${BUILD_URL}', subject: 'OPENSHIFT SERVERLESS LOGIC ${PRODUCT_VERSION}:nightly-build #${BUILD_NUMBER}: ' + "${currentBuild.currentResult}", to: 'kie-jenkins-builds@redhat.com'
- }
- always {
- archiveArtifacts artifacts: '**/*.maven.log', fingerprint: false, defaultExcludes: true, caseSensitive: true, allowEmptyArchive: true
-
- echo 'Generating JUnit report...'
- junit allowEmptyResults: true, healthScaleFactor: 1.0, testResults: '**/target/*-reports/TEST-*.xml'
-
- echo 'Archiving logs...'
- archiveArtifacts excludes: '**/target/checkstyle.log', artifacts: '**/*.maven.log,**/target/*.log', fingerprint: false, defaultExcludes: true, caseSensitive: true, allowEmptyArchive: true
- }
- cleanup {
- cleanWs()
- }
- }
-}
-
-def getMessageBody(String mavenRepositoryFileUrl, String alreadyBuiltProjects, Map<String, String> versions, Map<String, String> imagesRegistries, Map<String, String> scmHashes) {
- def alreadyBuiltProjectsArray = (alreadyBuiltProjects ?: '').split(";")
- return """
-{
- "maven_repository_file_url": "${mavenRepositoryFileUrl}",
- "version": ${new groovy.json.JsonBuilder(versions).toString()},
- "image": ${new groovy.json.JsonBuilder(imagesRegistries).toString()},
- "scm_hash": ${new groovy.json.JsonBuilder(scmHashes).toString()},
- "built_projects": ${new groovy.json.JsonBuilder(alreadyBuiltProjectsArray).toString()}
-}"""
-}
-
-def setupCypressEnv(String cypressVersion) {
- if (env.CYPRESS_BINARY_URL) {
- env.CYPRESS_INSTALL_BINARY = "${CYPRESS_BINARY_URL}/cypress-${cypressVersion}.zip"
- }
-}
-
-def gitHashesToCollection(String gitInformationHashes) {
- return gitInformationHashes.replaceAll(/([\w\d\-\_\.]*\/)([\w\d\-\_\.]*)/,'$2').split(';').findAll { it.split('=').size() }.collectEntries{ [it.split('=')[0], it.split('=')[1]] }
-}
-
-String getBuildConfigBranch() {
- return env.CONFIG_BRANCH ?: env.DEFAULT_CONFIG_BRANCH ?: env.BRANCH_NAME ?: env.GIT_BRANCH
-}
-
-String getBuildBranch() {
- // Fallback to main if none exist
- return env.CHANGE_BRANCH ?: env.BRANCH_NAME ?: env.GIT_BRANCH ?: 'main'
-}
-
-String getDroolsBranch() {
- return calculateKieRepoBranch(getBuildBranch())
-}
-
-String getDefinitionFileBranch() {
- // Fallback to getBuildBranch if DEFINITION_FILE_BRANCH not set
- return env.DEFINITION_FILE_BRANCH ?: getBuildBranch()
-}
-
-String calculateKieRepoBranch(String branch) {
- /* The Drools/OptaPlanner major version is shifted by 7 from the Kogito major version:
- Kogito 1.x.y -> Drools 8.x.y.
- Kogito 1.x.y -> OptaPlanner 8.x.y. */
- int majorVersionShift = 7
- String [] branchSplit = branch.split("\\.")
- if (branchSplit.length == 3) {
- Integer optaplannerMajorVersion = Integer.parseInt(branchSplit[0]) + majorVersionShift
- return "${optaplannerMajorVersion}.${branchSplit[1]}.${branchSplit[2]}"
- } else {
- return branch
- }
-}
-
-// Parse version from main branch of the given project
-// * project: in the form of owner/repository
-def parseVersionFromPom(String project, String branch) {
- def pomFilename = "${project.replaceAll("/", "_")}_pom.xml"
- def pomPath = "${env.WORKSPACE}/${pomFilename}"
-
- sh "curl https://raw.githubusercontent.com/${project}/${branch}/pom.xml -o ${pomPath}"
- def pom = readMavenPom file: pomPath
- return pom.getVersion().replaceAll('-SNAPSHOT', '')
-}
diff --git a/.ci/jenkins/Jenkinsfile.release b/.ci/jenkins/Jenkinsfile.release
index cb4d2cb9..2eccc43d 100644
--- a/.ci/jenkins/Jenkinsfile.release
+++ b/.ci/jenkins/Jenkinsfile.release
@@ -19,7 +19,7 @@ releaseProperties = [:]
pipeline {
agent {
- label 'kie-rhel8 && !built-in'
+ label 'ubuntu'
}
// parameters {
@@ -50,8 +50,8 @@ pipeline {
sendNotification("Release Pipeline has started...\nKogito version = ${getKogitoVersion()}\n=> ${env.BUILD_URL}")
// Safety measure to not publish to main JBoss
- if (getGitAuthor() != 'kiegroup' && !getArtifactsRepositoryParam()) {
- sendNotification("Git Author is different from `kiegroup` and no `ARTIFACTS_REPOSITORY` parameter has been provided. Are you sure you want to continue ? => ${env.BUILD_URL}input")
+ if (getGitAuthor() != 'apache' && !getArtifactsRepositoryParam()) {
+ sendNotification("Git Author is different from `apache` and no `ARTIFACTS_REPOSITORY` parameter has been provided. Are you sure you want to continue ? => ${env.BUILD_URL}input")
input message: 'Should the pipeline continue with no `ARTIFACTS_REPOSITORY` defined ?', ok: 'Yes'
}
}
diff --git a/.ci/jenkins/Jenkinsfile.release.cloud b/.ci/jenkins/Jenkinsfile.release.cloud
index e6df13c4..7019f149 100644
--- a/.ci/jenkins/Jenkinsfile.release.cloud
+++ b/.ci/jenkins/Jenkinsfile.release.cloud
@@ -26,7 +26,7 @@ promoteImageParamsPrefix = 'PROMOTE_IMAGE'
pipeline {
agent {
- label 'kie-rhel8 && !built-in'
+ label 'ubuntu'
}
// parameters {
@@ -72,9 +72,9 @@ pipeline {
stage('Setup configuration for testing') {
steps {
script {
- env.EXAMPLES_URI = params.EXAMPLES_URI ?: (getReleaseProperty('examples.uri') ?: "https://github.com/${getGitAuthor()}/kogito-examples")
+ env.EXAMPLES_URI = params.EXAMPLES_URI ?: (getReleaseProperty('examples.uri') ?: "https://github.com/${getGitAuthor()}/incubator-kie-kogito-examples")
env.EXAMPLES_REF = params.EXAMPLES_REF ?: (getReleaseProperty('examples.ref') ?: getKogitoVersion())
- env.APPS_URI = params.APPS_URI ?: (getReleaseProperty('apps.uri') ?: "https://github.com/${getGitAuthor()}/kogito-apps")
+ env.APPS_URI = params.APPS_URI ?: (getReleaseProperty('apps.uri') ?: "https://github.com/${getGitAuthor()}/incubator-kie-kogito-apps")
env.APPS_REF = params.APPS_REF ?: (getReleaseProperty('apps.ref') ?: getKogitoVersion())
echo "Got examples uri ${env.EXAMPLES_URI}"
diff --git a/.ci/jenkins/Jenkinsfile.setup-branch b/.ci/jenkins/Jenkinsfile.setup-branch
index dcd73b62..79a59f02 100644
--- a/.ci/jenkins/Jenkinsfile.setup-branch
+++ b/.ci/jenkins/Jenkinsfile.setup-branch
@@ -12,7 +12,7 @@ UNSTABLE_STAGES = [:]
pipeline {
agent {
- label 'kie-rhel8 && !built-in'
+ label 'ubuntu'
}
options {
@@ -75,7 +75,7 @@ pipeline {
// Update examples nightly branch
dir('kogito-examples') {
deleteDir()
- checkout(githubscm.resolveRepository('kogito-examples', getGitAuthor(), getBuildBranch(), false))
+ checkout(githubscm.resolveRepository('incubator-kie-kogito-examples', getGitAuthor(), getBuildBranch(), false))
String nightlyBranch = "nightly-${getBuildBranch()}"
githubscm.createBranch(nightlyBranch)
githubscm.pushObject('origin', nightlyBranch, getGitAuthorCredsID())
diff --git a/.ci/jenkins/Jenkinsfile.setup-branch.cloud b/.ci/jenkins/Jenkinsfile.setup-branch.cloud
index 2f4aa42b..f03831de 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 'kie-rhel8 && !built-in'
+ label 'ubuntu'
}
options {
diff --git a/.ci/jenkins/Jenkinsfile.tools.clean-nightly-images b/.ci/jenkins/Jenkinsfile.tools.clean-nightly-images
index dfc8d941..c0f4f0c3 100644
--- a/.ci/jenkins/Jenkinsfile.tools.clean-nightly-images
+++ b/.ci/jenkins/Jenkinsfile.tools.clean-nightly-images
@@ -1,5 +1,10 @@
pipeline {
- agent { label 'kogito-cloud && !built-in' }
+ agent {
+ docker {
+ image env.AGENT_DOCKER_BUILDER_IMAGE
+ args env.AGENT_DOCKER_BUILDER_ARGS
+ }
+ }
options {
timeout(time: 120, unit: 'MINUTES')
}
diff --git a/.ci/jenkins/Jenkinsfile.tools.clean-old-namespaces b/.ci/jenkins/Jenkinsfile.tools.clean-old-namespaces
index 729e77cc..5826d2ff 100644
--- a/.ci/jenkins/Jenkinsfile.tools.clean-old-namespaces
+++ b/.ci/jenkins/Jenkinsfile.tools.clean-old-namespaces
@@ -1,5 +1,10 @@
pipeline {
- agent { label 'kogito-cloud && !built-in' }
+ agent {
+ 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'
+ }
+ }
options {
timeout(time: 120, unit: 'MINUTES')
}
diff --git a/.ci/jenkins/Jenkinsfile.tools.create-issue b/.ci/jenkins/Jenkinsfile.tools.create-issue
index def95ed8..3d384027 100644
--- a/.ci/jenkins/Jenkinsfile.tools.create-issue
+++ b/.ci/jenkins/Jenkinsfile.tools.create-issue
@@ -4,17 +4,15 @@ import org.jenkinsci.plugins.workflow.libs.Library
pipeline {
agent {
- label 'rhel8 && !built-in'
+ docker {
+ image env.AGENT_DOCKER_BUILDER_IMAGE
+ args env.AGENT_DOCKER_BUILDER_ARGS
+ }
}
-
options {
timeout(time: 60, unit: 'MINUTES')
}
- // environment {
- // Some generated env is also defined into ./dsl/jobs.groovy file
- // }
-
stages {
stage('Checkout repo') {
steps {
diff --git a/.ci/jenkins/Jenkinsfile.tools.update-jenkins-dependencies b/.ci/jenkins/Jenkinsfile.tools.update-jenkins-dependencies
index 49195f66..f9004c58 100644
--- a/.ci/jenkins/Jenkinsfile.tools.update-jenkins-dependencies
+++ b/.ci/jenkins/Jenkinsfile.tools.update-jenkins-dependencies
@@ -2,11 +2,15 @@ import org.jenkinsci.plugins.workflow.libs.Library
@Library('jenkins-pipeline-shared-libraries')_
+// This Jenkinsfile has not been tested on Apache Jenkins yet
+// and will likely fail due to restrictions on Groovy sandbox methods
+// See `findPlugin` and `getJenkinsVersion` methods
+
branchCreated = false
pipeline {
agent {
- label 'kie-rhel8 && !built-in'
+ label 'ubuntu'
}
options {
diff --git a/.ci/jenkins/config/branch.yaml b/.ci/jenkins/config/branch.yaml
index 8d907eb9..d1509a9f 100644
--- a/.ci/jenkins/config/branch.yaml
+++ b/.ci/jenkins/config/branch.yaml
@@ -6,18 +6,6 @@ environments:
ADDITIONAL_TIMEOUT: 720
ids:
- native
- native-lts:
- env_vars:
- NATIVE: true
- BUILD_MVN_OPTS: -Dproductized -Ddata-index-ephemeral.image=quay.io/kiegroup/kogito-data-index-ephemeral
- BUILD_MVN_OPTS_CURRENT: -Dnative -Dquarkus.native.container-build=true
- QUARKUS_BRANCH: '2.13'
- ADDITIONAL_TIMEOUT: 720
- BUILD_ENVIRONMENT: quarkus-lts
- ids:
- - native
- - prod
- - lts
quarkus-main:
enabled: false
env_vars:
@@ -32,21 +20,12 @@ environments:
quarkus-3:
pull_request_default_check: false
env_vars:
- BUILD_MAVEN_TOOL: kie-maven-3.9.1
- BUILD_JDK_TOOL: kie-jdk17
+ BUILD_MAVEN_TOOL: maven_3.9.3
+ BUILD_JDK_TOOL: jdk_17_latest
BUILD_MVN_OPTS: -Denforcer.skip
ids:
- quarkus
- quarkus3
- quarkus-lts:
- pull_request_default_check: false
- env_vars:
- BUILD_MVN_OPTS: -Dproductized -Ddata-index-ephemeral.image=quay.io/kiegroup/kogito-data-index-ephemeral
- QUARKUS_BRANCH: '2.13'
- ids:
- - quarkus
- - lts
- - prod
sonarcloud:
auto_generation: false
env_vars:
@@ -58,35 +37,38 @@ environments:
auto_generation: false
ids:
- ecosystem
-productized_branch: true
disable:
- triggers: false
+ triggers: true # TODO to set back
+ deploy: true
repositories:
-- name: kogito-pipelines
-- name: kogito-runtimes
-- name: kogito-apps
-- name: kogito-examples
-- name: kogito-images
-- name: kogito-operator
-- name: kogito-serverless-operator
-- name: kie-tools
-- name: kogito-docs
-- name: kie-docs
+- name: incubator-kie-kogito-pipelines
+ job_display_name: kogito-pipelines
+- name: incubator-kie-kogito-runtimes
+ job_display_name: kogito-runtimes
+- name: incubator-kie-kogito-apps
+ job_display_name: kogito-apps
+- name: incubator-kie-kogito-examples
+ job_display_name: kogito-examples
+- name: incubator-kie-kogito-images
+ job_display_name: kogito-images
+- name: incubator-kie-kogito-operator
+ job_display_name: kogito-operator
+- name: incubator-kie-kogito-serverless-operator
+ job_display_name: kogito-serverless-operator
+- name: incubator-kie-kogito-docs
+ job_display_name: kogito-docs
+# - name: incubator-kie-tools // Commented as this one will be treated at another time
+# job_display_name: kie-tools
+- name: incubator-kie-docs
+ job_display_name: kie-docs
branch: main-kogito
-productized_repositories:
-- name: kogito-pipelines
-- name: kogito-runtimes
-- name: kogito-apps
-- name: kogito-examples
-- name: kogito-images
-- name: kogito-serverless-operator
-- name: kogito-operator
-- name: kogito-docs
git:
author:
- name: kiegroup
- credentials_id: kie-ci3
- token_credentials_id: kie-ci3-token
+ name: apache
+ # Taken from https://ci-builds.apache.org/credentials/
+ # Need to be verified
+ credentials_id: 399061d0-5ab5-4142-a186-a52081fef742
+ token_credentials_id: ci-builds
fork_author:
name: kie-ci
credentials_id: kie-ci
@@ -98,34 +80,41 @@ git:
jenkins_config_path: .ci/jenkins
buildchain_config:
git:
- repository: kogito-pipelines
+ repository: incubator-kie-kogito-pipelines
file_path: .ci/pull-request-config.yaml
maven:
- settings_file_id: kogito_release_settings
+ settings_file_id: kie-release-settings
nexus:
- release_url: https://repository.jboss.org/nexus
- release_repository: jboss-releases-repository
- staging_profile_url: https://repository.jboss.org/nexus/content/groups/kogito-public/
- staging_profile_id: 1976dd1c18392a
- build_promotion_profile_id: ea49ccd6f174
+ release_url: TO_DEFINE
+ release_repository: TO_DEFINE
+ staging_profile_url: TO_DEFINE
+ staging_profile_id: TO_DEFINE
+ build_promotion_profile_id: TO_DEFINE
artifacts_repository: ''
artifacts_upload_repository:
- url: https://repository.jboss.org/nexus/content/repositories/snapshots/
- creds_id: kogito-snapshots-upload
+ url: TO_DEFINE
+ creds_id: TO_DEFINE
quarkus_platform_repository:
- url: https://repository.jboss.org/nexus/content/repositories/kogito-internal-repository/
- creds_id: kogito-internal-nexus-creds
+ url: TO_DEFINE
+ creds_id: TO_DEFINE
cloud:
image:
- registry_credentials_nightly: nightly_kogito
- registry_credentials_release: release_kogito
+ registry_credentials: tradisso_registry_token # TODO set to `kogito-quay-token`
registry: quay.io
- namespace: kiegroup
+ namespace: tradisso # TODO set to `kiegroup` after testing
latest_git_branch: main
jenkins:
- email_creds_id: KOGITO_CI_EMAIL_TO
+ email_creds_id: KOGITO_CI_NOTIFICATION_EMAILS
+ agent:
+ docker:
+ builder:
+ # At some point, this image will need to be changed when a release branch is created
+ # but we need to make sure the image exists first ... simple tag before setting up the branch ?
+ # See https://github.com/kiegroup/kie-issues/issues/551
+ image: quay.io/kiegroup/kogito-ci-build:main-latest
+ args: -v /var/run/docker.sock:/var/run/docker.sock --group-add docker --group-add input --group-add render
default_tools:
- jdk: kie-jdk11
- maven: kie-maven-3.8.7
- sonar_jdk: kie-jdk17
+ jdk: jdk_11_latest
+ maven: maven_3.8.6
+ sonar_jdk: jdk_17_latest
jobs_definition_file: .ci/jenkins/dsl/jobs.groovy
diff --git a/.ci/jenkins/config/main.yaml b/.ci/jenkins/config/main.yaml
index 9e7ff461..dab62f91 100644
--- a/.ci/jenkins/config/main.yaml
+++ b/.ci/jenkins/config/main.yaml
@@ -7,68 +7,30 @@ ecosystem:
default_main_version: 2.0.0-SNAPSHOT
regexs:
- kogito.*
- - name: kie-tools
- ignore_release: true
- ignore_productization: true
- regexs:
- - kie-tools.*
+ - incubator-kie-kogito.*
+ # - name: kie-tools
+ # ignore_release: true
+ # regexs:
+ # - kie-tools.*
+ # - incubator-kie-tools.*
- name: kie-docs
ignore_release: true
- ignore_productization: true
regexs:
- kie-docs.*
+ - incubator-kie-docs.*
git:
branches:
- name: main
main_branch: true
- seed:
- branch: main
- - name: 1.13.x
- old_folder_structure: true
- seed:
- branch: 1.13.x
- config_file:
- path: dsl/seed/config/branch.yaml
- jenkinsfile: dsl/seed/jobs/Jenkinsfile.seed.branch
- - name: 1.13.x-blue
- old_folder_structure: true
- seed:
- branch: 1.13.x-blue
- config_file:
- path: dsl/seed/config/branch.yaml
- jenkinsfile: dsl/seed/jobs/Jenkinsfile.seed.branch
- - name: 1.29.x
- seed:
- branch: seed-kogito-1.29.x
- config_file:
- path: dsl/config/branch.yaml
- - name: 1.38.x-prod
- seed:
- branch: seed-kogito-1.38.x
- config_file:
- path: dsl/config/branch.yaml
- - name: 1.40.x
- seed:
- branch: seed-kogito-1.40.x
- config_file:
- path: dsl/config/branch.yaml
- - name: 1.40.x-prod
- seed:
- branch: seed-kogito-1.40.x
- config_file:
- path: dsl/config/branch.yaml
- - name: 1.44.x
- seed:
- branch: seed-kogito-1.44.x
seed:
config_file:
git:
- repository: kogito-pipelines
+ repository: incubator-kie-kogito-pipelines
author:
- name: kiegroup
- credentials_id: kie-ci3
+ name: apache
+ credentials_id: ASF_Cloudbees_Jenkins_ci-builds
branch: main
path: .ci/jenkins/config/branch.yaml
jenkinsfile: dsl/seed/jenkinsfiles/Jenkinsfile.seed.branch
jenkins:
- email_creds_id: KOGITO_CI_EMAIL_TO
+ email_creds_id: KOGITO_CI_NOTIFICATION_EMAILS
diff --git a/.ci/jenkins/dsl/jobs.groovy b/.ci/jenkins/dsl/jobs.groovy
index 379f1911..1935d46c 100644
--- a/.ci/jenkins/dsl/jobs.groovy
+++ b/.ci/jenkins/dsl/jobs.groovy
@@ -5,7 +5,7 @@ import org.kie.jenkins.jobdsl.utils.VersionUtils
import org.kie.jenkins.jobdsl.KogitoJobUtils
import org.kie.jenkins.jobdsl.Utils
-JENKINSFILE_PATH = '.ci/jenkins'
+jenkins_path = '.ci/jenkins'
boolean isMainStream() {
return Utils.getStream(this) == 'main'
@@ -57,27 +57,31 @@ KogitoJobUtils.createEnvironmentIntegrationBranchNightlyJob(this, 'quarkus-3', [
setupReleaseArtifactsJob()
setupReleaseCloudJob()
+Utils.isMainBranch(this) && KogitoJobTemplate.createBranchMultibranchPipelineJob(this, 'kogito-ci-build-image', "${jenkins_path}/Jenkinsfile.build-kogito-ci-image")
+
/////////////////////////////////////////////////////////////////
// Methods
/////////////////////////////////////////////////////////////////
void setupCleanOldNamespacesToolsJob() {
- def jobParams = JobParamsUtils.getBasicJobParams(this, 'kogito-clean-old-namespaces', JobType.TOOLS, "${JENKINSFILE_PATH}/Jenkinsfile.tools.clean-old-namespaces")
+ def jobParams = JobParamsUtils.getBasicJobParams(this, 'kogito-clean-old-namespaces', JobType.TOOLS, "${jenkins_path}/Jenkinsfile.tools.clean-old-namespaces")
jobParams.triggers = [ cron : '@midnight' ]
KogitoJobTemplate.createPipelineJob(this, jobParams)
}
void setupCleanOldNightlyImagesToolsJob() {
- jobParams = JobParamsUtils.getBasicJobParams(this, 'kogito-clean-old-nightly-images', JobType.TOOLS, "${JENKINSFILE_PATH}/Jenkinsfile.tools.clean-nightly-images")
+ jobParams = JobParamsUtils.getBasicJobParams(this, 'kogito-clean-old-nightly-images', JobType.TOOLS, "${jenkins_path}/Jenkinsfile.tools.clean-nightly-images")
jobParams.triggers = [ cron : 'H 8 * * *' ]
+ JobParamsUtils.setupJobParamsAgentDockerBuilderImageConfiguration(this, jobParams)
KogitoJobTemplate.createPipelineJob(this, jobParams)
}
void setupCreateIssueToolsJob() {
- jobParams = JobParamsUtils.getBasicJobParams(this, 'kogito-create-issue', JobType.TOOLS, "${JENKINSFILE_PATH}/Jenkinsfile.tools.create-issue")
+ jobParams = JobParamsUtils.getBasicJobParams(this, 'kogito-create-issue', JobType.TOOLS, "${jenkins_path}/Jenkinsfile.tools.create-issue")
jobParams.env.putAll([
GITHUB_CLI_PATH: '/opt/tools/gh-cli/bin/gh',
])
+ JobParamsUtils.setupJobParamsAgentDockerBuilderImageConfiguration(this, jobParams)
KogitoJobTemplate.createPipelineJob(this, jobParams)?.with {
parameters {
stringParam('AUTHOR', '', 'Git author')
@@ -90,10 +94,9 @@ void setupCreateIssueToolsJob() {
}
void setupUpdateJenkinsDependenciesJob() {
- jobParams = JobParamsUtils.getBasicJobParams(this, 'jenkins-update-framework-deps', JobType.TOOLS, "${JENKINSFILE_PATH}/Jenkinsfile.tools.update-jenkins-dependencies", 'Nightly check of Jenkins dependencies from framework against current version of Jenkins')
+ jobParams = JobParamsUtils.getBasicJobParams(this, 'jenkins-update-framework-deps', JobType.TOOLS, "${jenkins_path}/Jenkinsfile.tools.update-jenkins-dependencies", 'Nightly check of Jenkins dependencies from framework against current version of Jenkins')
jobParams.triggers = [cron : '@midnight']
jobParams.env.putAll([
- REPO_NAME: 'kogito-pipelines',
JENKINS_EMAIL_CREDS_ID: "${JENKINS_EMAIL_CREDS_ID}",
BUILD_BRANCH_NAME: "${GIT_BRANCH}",
@@ -104,7 +107,7 @@ void setupUpdateJenkinsDependenciesJob() {
}
void createSetupBranchJob() {
- def jobParams = JobParamsUtils.getBasicJobParams(this, '0-setup-branch', JobType.SETUP_BRANCH, "${JENKINSFILE_PATH}/Jenkinsfile.setup-branch", 'Kogito Setup Branch for Artifacts')
+ def jobParams = JobParamsUtils.getBasicJobParams(this, '0-setup-branch', JobType.SETUP_BRANCH, "${jenkins_path}/Jenkinsfile.setup-branch", 'Kogito Setup Branch for Artifacts')
jobParams.env.putAll([
JENKINS_EMAIL_CREDS_ID: "${JENKINS_EMAIL_CREDS_ID}",
@@ -123,7 +126,7 @@ void createSetupBranchJob() {
}
void createSetupBranchCloudJob() {
- def jobParams = JobParamsUtils.getBasicJobParams(this, '0-setup-branch-cloud', JobType.SETUP_BRANCH, "${JENKINSFILE_PATH}/Jenkinsfile.setup-branch.cloud", 'Kogito Setup Branch for Cloud')
+ def jobParams = JobParamsUtils.getBasicJobParams(this, '0-setup-branch-cloud', JobType.SETUP_BRANCH, "${jenkins_path}/Jenkinsfile.setup-branch.cloud", 'Kogito Setup Branch for Cloud')
jobParams.env.putAll([
JENKINS_EMAIL_CREDS_ID: "${JENKINS_EMAIL_CREDS_ID}",
@@ -140,7 +143,7 @@ void createSetupBranchCloudJob() {
}
void setupNightlyJob() {
- def jobParams = JobParamsUtils.getBasicJobParams(this, '0-kogito-nightly', JobType.NIGHTLY, "${JENKINSFILE_PATH}/Jenkinsfile.nightly", 'Kogito Nightly')
+ def jobParams = JobParamsUtils.getBasicJobParams(this, '0-kogito-nightly', JobType.NIGHTLY, "${jenkins_path}/Jenkinsfile.nightly", 'Kogito Nightly')
jobParams.triggers = [cron : isMainStream () ? '@midnight' : 'H 4 * * *']
jobParams.env.putAll([
JENKINS_EMAIL_CREDS_ID: "${JENKINS_EMAIL_CREDS_ID}",
@@ -158,7 +161,7 @@ void setupNightlyJob() {
}
void setupNightlyCloudJob() {
- def jobParams = JobParamsUtils.getBasicJobParams(this, '0-kogito-nightly-cloud', JobType.NIGHTLY, "${JENKINSFILE_PATH}/Jenkinsfile.nightly.cloud", 'Kogito Nightly')
+ def jobParams = JobParamsUtils.getBasicJobParams(this, '0-kogito-nightly-cloud', JobType.NIGHTLY, "${jenkins_path}/Jenkinsfile.nightly.cloud", 'Kogito Nightly')
jobParams.env.putAll([
JENKINS_EMAIL_CREDS_ID: "${JENKINS_EMAIL_CREDS_ID}",
@@ -166,7 +169,7 @@ void setupNightlyCloudJob() {
GIT_AUTHOR: "${GIT_AUTHOR_NAME}",
GIT_AUTHOR_CREDS_ID: "${GIT_AUTHOR_CREDENTIALS_ID}",
- IMAGE_REGISTRY_CREDENTIALS: "${CLOUD_IMAGE_REGISTRY_CREDENTIALS_NIGHTLY}",
+ IMAGE_REGISTRY_CREDENTIALS: "${CLOUD_IMAGE_REGISTRY_CREDENTIALS}",
IMAGE_REGISTRY: "${CLOUD_IMAGE_REGISTRY}",
IMAGE_NAMESPACE: "${CLOUD_IMAGE_NAMESPACE}",
BRANCH_FOR_LATEST: "${CLOUD_IMAGE_LATEST_GIT_BRANCH}",
@@ -191,32 +194,33 @@ void setupQuarkus3NightlyJob() {
// Tests are done on 9.x/2.x branch => Create 2.x branch on Kogito
// Need to split as Drools and Kogito end up in different integration branches
KogitoJobUtils.createNightlyBuildChainIntegrationJob(this, 'quarkus-3', 'drools', true) { script ->
- def jobParams = JobParamsUtils.getDefaultJobParams(script, 'drools')
+ def jobParams = JobParamsUtils.getDefaultJobParams(script, 'incubator-kie-drools')
jobParams.git.branch = VersionUtils.getProjectTargetBranch('drools', Utils.getGitBranch(this), Utils.getRepoName(this))
jobParams.env.put('ADDITIONAL_TIMEOUT', '180')
jobParams.env.put('BUILD_ENVIRONMENT_OPTIONS_CURRENT', 'rewrite push_changes')
jobParams.env.put('INTEGRATION_BRANCH_CURRENT', '9.x')
- jobParams.env.put('LAUNCH_DOWNSTREAM_JOBS', 'kie-jpmml-integration.integration,kogito-runtimes.integration')
- jobParams.parametersValues.put('SKIP_TESTS', true)
- jobParams.parametersValues.put('SKIP_INTEGRATION_TESTS', true)
- return jobParams
- }
- KogitoJobUtils.createBuildChainIntegrationJob(this, 'quarkus-3', 'kie-jpmml-integration', true) { script ->
- def jobParams = JobParamsUtils.getDefaultJobParams(script, 'kie-jpmml-integration')
- jobParams.env.put('ADDITIONAL_TIMEOUT', '180')
- jobParams.env.put('BUILD_ENVIRONMENT_OPTIONS_CURRENT', 'rewrite push_changes')
- jobParams.env.put('INTEGRATION_BRANCH_CURRENT', '9.x')
+ // jobParams.env.put('LAUNCH_DOWNSTREAM_JOBS', 'kie-jpmml-integration.integration,kogito-runtimes.integration')
+ jobParams.env.put('LAUNCH_DOWNSTREAM_JOBS', 'kogito-runtimes.integration')
jobParams.parametersValues.put('SKIP_TESTS', true)
jobParams.parametersValues.put('SKIP_INTEGRATION_TESTS', true)
return jobParams
}
+ // Commented as not migrated to Apache
+ // KogitoJobUtils.createBuildChainIntegrationJob(this, 'quarkus-3', 'kie-jpmml-integration', true) { script ->
+ // def jobParams = JobParamsUtils.getDefaultJobParams(script, 'incubator-kie-jpmml-integration')
+ // jobParams.env.put('ADDITIONAL_TIMEOUT', '180')
+ // jobParams.env.put('BUILD_ENVIRONMENT_OPTIONS_CURRENT', 'rewrite push_changes')
+ // jobParams.env.put('INTEGRATION_BRANCH_CURRENT', '9.x')
+ // jobParams.parametersValues.put('SKIP_TESTS', true)
+ // jobParams.parametersValues.put('SKIP_INTEGRATION_TESTS', true)
+ // return jobParams
+ // }
KogitoJobUtils.createBuildChainIntegrationJob(this, 'quarkus-3', 'kogito-runtimes', true) { script ->
- def jobParams = JobParamsUtils.getDefaultJobParams(script, 'kogito-runtimes')
+ def jobParams = JobParamsUtils.getDefaultJobParams(script, 'incubator-kie-kogito-runtimes')
jobParams.env.put('ADDITIONAL_TIMEOUT', '720')
jobParams.env.put('BUILD_ENVIRONMENT_OPTIONS_CURRENT', 'rewrite push_changes')
jobParams.env.put('INTEGRATION_BRANCH_CURRENT', '2.x')
jobParams.env.put('BUILDCHAIN_FULL_BRANCH_DOWNSTREAM_BUILD', 'true')
- jobParams.env.put('NODE_OPTIONS', '--max_old_space_size=4096')
jobParams.parametersValues.put('SKIP_TESTS', true)
jobParams.parametersValues.put('SKIP_INTEGRATION_TESTS', true)
return jobParams
@@ -224,8 +228,8 @@ void setupQuarkus3NightlyJob() {
}
void setupQuarkusPlatformJob(JobType jobType) {
- def jobParams = JobParamsUtils.getBasicJobParams(this, 'quarkus-platform.deploy', jobType, "${JENKINSFILE_PATH}/Jenkinsfile.nightly.quarkus-platform", 'Kogito Quarkus platform job')
- JobParamsUtils.setupJobParamsDefaultMavenConfiguration(this, jobParams)
+ def jobParams = JobParamsUtils.getBasicJobParams(this, 'quarkus-platform.deploy', jobType, "${jenkins_path}/Jenkinsfile.nightly.quarkus-platform", 'Kogito Quarkus platform job')
+ JobParamsUtils.setupJobParamsAgentDockerBuilderImageConfiguration(this, jobParams)
jobParams.env.putAll([
JENKINS_EMAIL_CREDS_ID: "${JENKINS_EMAIL_CREDS_ID}",
@@ -239,7 +243,7 @@ void setupQuarkusPlatformJob(JobType jobType) {
}
void setupReleaseArtifactsJob() {
- def jobParams = JobParamsUtils.getBasicJobParams(this, '0-kogito-release', JobType.RELEASE, "${JENKINSFILE_PATH}/Jenkinsfile.release", 'Kogito Artifacts Release')
+ def jobParams = JobParamsUtils.getBasicJobParams(this, '0-kogito-release', JobType.RELEASE, "${jenkins_path}/Jenkinsfile.release", 'Kogito Artifacts Release')
jobParams.env.putAll([
JENKINS_EMAIL_CREDS_ID: "${JENKINS_EMAIL_CREDS_ID}",
@@ -265,14 +269,14 @@ void setupReleaseArtifactsJob() {
}
void setupReleaseCloudJob() {
- def jobParams = JobParamsUtils.getBasicJobParams(this, '0-kogito-release-cloud', JobType.RELEASE, "${JENKINSFILE_PATH}/Jenkinsfile.release.cloud", 'Kogito Cloud Release')
+ def jobParams = JobParamsUtils.getBasicJobParams(this, '0-kogito-release-cloud', JobType.RELEASE, "${jenkins_path}/Jenkinsfile.release.cloud", 'Kogito Cloud Release')
jobParams.env.putAll([
JENKINS_EMAIL_CREDS_ID: "${JENKINS_EMAIL_CREDS_ID}",
GIT_BRANCH_NAME: "${GIT_BRANCH}",
GIT_AUTHOR: "${GIT_AUTHOR_NAME}",
- IMAGE_REGISTRY_CREDENTIALS: "${CLOUD_IMAGE_REGISTRY_CREDENTIALS_RELEASE}",
+ IMAGE_REGISTRY_CREDENTIALS: "${CLOUD_IMAGE_REGISTRY_CREDENTIALS}",
IMAGE_REGISTRY: "${CLOUD_IMAGE_REGISTRY}",
IMAGE_NAMESPACE: "${CLOUD_IMAGE_NAMESPACE}",
BRANCH_FOR_LATEST: "${CLOUD_IMAGE_LATEST_GIT_BRANCH}",
@@ -306,7 +310,7 @@ void setupReleaseCloudJob() {
}
void setupBuildOperatorNode() {
- def jobParams = JobParamsUtils.getBasicJobParams(this, 'build-operator-node', JobType.TOOLS, "${JENKINSFILE_PATH}/Jenkinsfile.build-operator-node")
+ def jobParams = JobParamsUtils.getBasicJobParams(this, 'build-operator-node', JobType.TOOLS, "${jenkins_path}/Jenkinsfile.build-operator-node")
KogitoJobTemplate.createPipelineJob(this, jobParams)
}
diff --git a/.ci/nightly-build-config.yaml b/.ci/nightly-build-config.yaml
deleted file mode 100644
index 9613fbb8..00000000
--- a/.ci/nightly-build-config.yaml
+++ /dev/null
@@ -1,61 +0,0 @@
-version: "2.1"
-
-dependencies: ./nightly-project-dependencies.yaml
-
-pre: |
- export PME_CMD="java -jar ${{ env.PME_CLI_PATH }} -s ${{ env.PME_MAVEN_SETTINGS_XML }} -DallowConfigFilePrecedence=true -DprojectSrcSkip=false"
- echo "PME_CMD=${{ env.PME_CMD }}"
- export BUILD_MVN_OPTS="${{ env.BUILD_MVN_OPTS }} -s ${{ env.PME_MAVEN_SETTINGS_XML }}"
- echo "BUILD_MVN_OPTS=${{ env.BUILD_MVN_OPTS }}"
- export ALIGN_QUARKUS="mvn versions:compare-dependencies -DremotePom=io.quarkus:quarkus-bom:${{ env.QUARKUS_VERSION_COMMUNITY }} -DupdatePropertyVersions=true -DupdateDependencies=true -DgenerateBackupPoms=false -Dproductized -s ${{ env.PME_MAVEN_SETTINGS_XML }}"
- echo "ALIGN_QUARKUS=${{ env.ALIGN_QUARKUS }}"
-
-default:
- build-command:
- current: mvn clean install -Dproductized=true -DskipTests=true ${{ env.BUILD_MVN_OPTS }}
- upstream: mvn clean install -Dquickly -Dproductized=true -DskipTests=true ${{ env.BUILD_MVN_OPTS }}
- downstream: mvn clean install -Dquickly -Dproductized=true -DskipTests=true ${{ env.BUILD_MVN_OPTS }}
- after:
- current: |
- docker system prune -f
-
-build:
- - project: kiegroup/drools
- build-command:
- upstream: |
- ${{ env.PME_CMD }} ${{ env.PME_ALIGNMENT_PARAMS_kiegroup_drools }}
- bash -c "set -o pipefail ; ${{ env.ALIGN_QUARKUS }} -pl :drools-build-parent | tee ${{ env.WORKSPACE }}/drools.quarkus-alignment.maven.log"
- bash -c "set -o pipefail ; ${{ env.PME_BUILD_SCRIPT_kiegroup_drools }} ${{ env.BUILD_MVN_OPTS }} | tee ${{ env.WORKSPACE }}/drools.maven.log"
-
- - project: kiegroup/kogito-runtimes
- build-command:
- current: |
- ${{ env.PME_CMD }} ${{ env.PME_ALIGNMENT_PARAMS_kiegroup_kogito_runtimes }}
- bash -c "set -o pipefail ; ${{ env.ALIGN_QUARKUS }} -pl :kogito-dependencies-bom | tee ${{ env.WORKSPACE }}/kogito_runtimes.quarkus-alignment.maven.log"
- bash -c "set -o pipefail ; ${{ env.PME_BUILD_SCRIPT_kiegroup_kogito_runtimes }} ${{ env.BUILD_MVN_OPTS }} | tee ${{ env.WORKSPACE }}/kogito_runtimes.maven.log"
-
- - project: kiegroup/kogito-apps
- build-command:
- downstream: |
- ${{ env.PME_CMD }} ${{ env.PME_ALIGNMENT_PARAMS_kiegroup_kogito_apps }}
- bash -c "set -o pipefail ; ${{ env.ALIGN_QUARKUS }} -pl :kogito-apps-build-parent | tee ${{ env.WORKSPACE }}/kogito_apps.quarkus-alignment.maven.log"
- bash -c "set -o pipefail ; ${{ env.PME_BUILD_SCRIPT_kiegroup_kogito_apps }} ${{ env.BUILD_MVN_OPTS }} | tee ${{ env.WORKSPACE }}/kogito_apps.maven.log"
-
- - project: kiegroup/kogito-examples
- build-command:
- downstream: |
- ${{ env.PME_CMD }} ${{ env.PME_ALIGNMENT_PARAMS_kiegroup_kogito_examples }}
- bash -c "set -o pipefail ; ${{ env.ALIGN_QUARKUS }} | tee ${{ env.WORKSPACE }}/kogito_examples.quarkus-alignment.maven.log"
- bash -c "set -o pipefail ; ${{ env.PME_BUILD_SCRIPT_kiegroup_kogito_examples }} ${{ env.BUILD_MVN_OPTS }} | tee ${{ env.WORKSPACE }}/kogito_examples.maven.log"
-
- - project: kiegroup/kogito-images
- build-command:
- downstream: |
- export MAVEN_OPTIONS="-s ${{ env.PME_MAVEN_SETTINGS_XML }}"
- echo "MAVEN_OPTIONS=${{ env.MAVEN_OPTIONS }}"
- export NIGHTLY="true"
- echo "NIGHTLY=${{ env.NIGHTLY }}"
- export NIGHTLY_DEPLOY_FOLDER="${{ env.WORKSPACE }}/deployDirectory"
- echo "NIGHTLY_DEPLOY_FOLDER=${{ env.NIGHTLY_DEPLOY_FOLDER }}"
- ${{ env.PME_CMD }} ${{ env.PME_ALIGNMENT_PARAMS_kiegroup_kogito_images }}
- bash -c "set -o pipefail ; ${{ env.PME_BUILD_SCRIPT_kiegroup_kogito_images }} ${{ env.BUILD_MVN_OPTS }} | tee ${{ env.WORKSPACE }}/kogito_images.maven.log"
\ No newline at end of file
diff --git a/.ci/nightly-project-dependencies.yaml b/.ci/nightly-project-dependencies.yaml
deleted file mode 100644
index 93da3ce4..00000000
--- a/.ci/nightly-project-dependencies.yaml
+++ /dev/null
@@ -1,82 +0,0 @@
-version: "2.1"
-
-dependencies:
- - project: kiegroup/drools
- mapping:
- dependencies:
- default:
- - source: (\d*)\.(.*)\.(.*)
- targetExpression: "process.env.GITHUB_BASE_REF.replace(/(\\d*)\\.(.*)\\.(.*)/g, (m, n1, n2, n3) => `${+n1-7}.${n2}.${n3}`)"
- dependant:
- default:
- - source: (\d*)\.(.*)\.(.*)
- targetExpression: "process.env.GITHUB_BASE_REF.replace(/(\\d*)\\.(.*)\\.(.*)/g, (m, n1, n2, n3) => `${+n1+7}.${n2}.${n3}`)"
-
- - project: kiegroup/kogito-runtimes
- dependencies:
- - project: kiegroup/drools
- mapping:
- dependencies:
- default:
- - source: (\d*)\.(.*)\.(.*)
- targetExpression: "process.env.GITHUB_BASE_REF.replace(/(\\d*)\\.(.*)\\.(.*)/g, (m, n1, n2, n3) => `${+n1+7}.${n2}.${n3}`)"
- dependant:
- default:
- - source: (\d*)\.(.*)\.(.*)
- targetExpression: "process.env.GITHUB_BASE_REF.replace(/(\\d*)\\.(.*)\\.(.*)/g, (m, n1, n2, n3) => `${+n1-7}.${n2}.${n3}`)"
- exclude:
- - kiegroup/kogito-examples
- - kiegroup/kogito-apps
- - kiegroup/kogito-images
-
- - project: kiegroup/kogito-apps
- dependencies:
- - project: kiegroup/kogito-runtimes
- mapping:
- dependencies:
- default:
- - source: (\d*)\.(.*)\.(.*)
- targetExpression: "process.env.GITHUB_BASE_REF.replace(/(\\d*)\\.(.*)\\.(.*)/g, (m, n1, n2, n3) => `${+n1+7}.${n2}.${n3}`)"
- dependant:
- default:
- - source: (\d*)\.(.*)\.(.*)
- targetExpression: "process.env.GITHUB_BASE_REF.replace(/(\\d*)\\.(.*)\\.(.*)/g, (m, n1, n2, n3) => `${+n1-7}.${n2}.${n3}`)"
- exclude:
- - kiegroup/kogito-examples
- - kiegroup/kogito-runtimes
- - kiegroup/kogito-images
-
- - project: kiegroup/kogito-examples
- dependencies:
- - project: kiegroup/kogito-runtimes
- - project: kiegroup/kogito-apps
- mapping:
- dependencies:
- default:
- - source: (\d*)\.(.*)\.(.*)
- targetExpression: "process.env.GITHUB_BASE_REF.replace(/(\\d*)\\.(.*)\\.(.*)/g, (m, n1, n2, n3) => `${+n1+7}.${n2}.${n3}`)"
- dependant:
- default:
- - source: (\d*)\.(.*)\.(.*)
- targetExpression: "process.env.GITHUB_BASE_REF.replace(/(\\d*)\\.(.*)\\.(.*)/g, (m, n1, n2, n3) => `${+n1-7}.${n2}.${n3}`)"
- exclude:
- - kiegroup/kogito-apps
- - kiegroup/kogito-runtimes
- - kiegroup/kogito-images
-
- - project: kiegroup/kogito-images
- dependencies:
- - project: kiegroup/kogito-examples
- mapping:
- dependencies:
- default:
- - source: (\d*)\.(.*)\.(.*)
- targetExpression: "process.env.GITHUB_BASE_REF.replace(/(\\d*)\\.(.*)\\.(.*)/g, (m, n1, n2, n3) => `${+n1+7}.${n2}.${n3}`)"
- dependant:
- default:
- - source: (\d*)\.(.*)\.(.*)
- targetExpression: "process.env.GITHUB_BASE_REF.replace(/(\\d*)\\.(.*)\\.(.*)/g, (m, n1, n2, n3) => `${+n1-7}.${n2}.${n3}`)"
- exclude:
- - kiegroup/kogito-runtimes
- - kiegroup/kogito-apps
- - kiegroup/kogito-examples
\ No newline at end of file
diff --git a/.ci/project-dependencies.yaml b/.ci/project-dependencies.yaml
index 3ccedbab..7599df54 100644
--- a/.ci/project-dependencies.yaml
+++ b/.ci/project-dependencies.yaml
@@ -1,6 +1,6 @@
version: "2.1"
dependencies:
- - project: kiegroup/drools
+ - project: apache/incubator-kie-drools
mapping:
dependencies:
default:
@@ -10,12 +10,12 @@ dependencies:
default:
- source: (\d*)\.(.*)
targetExpression: "process.env.GITHUB_BASE_REF.replace(/(\\d*)\\.(.*)/g, (m, n1, n2) => `${+n1+7}.${n2}`)"
- exclude:
- - kiegroup/kie-jpmml-integration
+ # exclude:
+ # - kiegroup/kie-jpmml-integration
- - project: kiegroup/kogito-runtimes
+ - project: apache/incubator-kie-kogito-runtimes
dependencies:
- - project: kiegroup/drools
+ - project: apache/incubator-kie-drools
mapping:
dependencies:
default:
@@ -26,12 +26,12 @@ dependencies:
- source: (\d*)\.(.*)
targetExpression: "process.env.GITHUB_BASE_REF.replace(/(\\d*)\\.(.*)/g, (m, n1, n2) => `${+n1-7}.${n2}`)"
exclude:
- - kiegroup/kogito-examples
- - kiegroup/kogito-apps
+ - apache/incubator-kie-kogito-examples
+ - apache/incubator-kie-kogito-apps
- - project: kiegroup/kogito-apps
+ - project: apache/incubator-kie-kogito-apps
dependencies:
- - project: kiegroup/kogito-runtimes
+ - project: apache/incubator-kie-kogito-runtimes
mapping:
dependencies:
default:
@@ -42,13 +42,13 @@ dependencies:
- source: (\d*)\.(.*)
targetExpression: "process.env.GITHUB_BASE_REF.replace(/(\\d*)\\.(.*)/g, (m, n1, n2) => `${+n1-7}.${n2}`)"
exclude:
- - kiegroup/kogito-examples
- - kiegroup/kogito-runtimes
+ - apache/incubator-kie-kogito-examples
+ - apache/incubator-kie-kogito-runtimes
- - project: kiegroup/kogito-examples
+ - project: apache/incubator-kie-kogito-examples
dependencies:
- - project: kiegroup/kogito-runtimes
- - project: kiegroup/kogito-apps
+ - project: apache/incubator-kie-kogito-runtimes
+ - project: apache/incubator-kie-kogito-apps
mapping:
dependencies:
default:
@@ -59,9 +59,9 @@ dependencies:
- source: (\d*)\.(.*)
targetExpression: "process.env.GITHUB_BASE_REF.replace(/(\\d*)\\.(.*)/g, (m, n1, n2) => `${+n1-7}.${n2}`)"
exclude:
- - kiegroup/kogito-apps
- - kiegroup/kogito-runtimes
- - project: kiegroup/kie-jpmml-integration
- dependencies:
- - project: kiegroup/drools
+ - apache/incubator-kie-kogito-apps
+ - apache/incubator-kie-kogito-runtimes
+ # - project: kiegroup/kie-jpmml-integration
+ # dependencies:
+ # - project: apache/incubator-kie-drools
# no mapping needed
diff --git a/.ci/pull-request-config.yaml b/.ci/pull-request-config.yaml
index c65b6cd4..f63835e8 100644
--- a/.ci/pull-request-config.yaml
+++ b/.ci/pull-request-config.yaml
@@ -25,7 +25,7 @@ default:
mvn dependency:tree clean install -Dquickly ${{ env.BUILD_MVN_OPTS }} ${{ env.BUILD_MVN_OPTS_UPSTREAM }}
build:
- - project: kiegroup/drools
+ - project: apache/incubator-kie-drools
build-command:
current: |
export MVN_CMD=`bash -c "if [ '${{ env.ENABLE_DEPLOY }}' = 'true' ]; then printf 'deploy ${{ env.DEPLOY_MVN_OPTS }} ${{ env.DROOLS_DEPLOY_MVN_OPTS }}'; else printf 'install'; fi"`
@@ -33,7 +33,7 @@ build:
upstream: |
mvn dependency:tree clean install -Dquickly ${{ env.BUILD_MVN_OPTS }} ${{ env.BUILD_MVN_OPTS_UPSTREAM }} ${{ env.DROOLS_BUILD_MVN_OPTS_UPSTREAM }}
- - project: kiegroup/kogito-runtimes
+ - project: apache/incubator-kie-kogito-runtimes
build-command:
current: |
export MVN_CMD=`bash -c "if [ '${{ env.ENABLE_DEPLOY }}' = 'true' ]; then printf 'deploy ${{ env.DEPLOY_MVN_OPTS }} ${{ env.KOGITO_RUNTIMES_DEPLOY_MVN_OPTS }}'; else printf 'install'; fi"`
@@ -41,7 +41,7 @@ build:
upstream: |
mvn dependency:tree clean install -Dquickly -Dfull ${{ env.BUILD_MVN_OPTS }} ${{ env.BUILD_MVN_OPTS_UPSTREAM }} ${{ env.KOGITO_RUNTIMES_BUILD_MVN_OPTS_UPSTREAM }}
- - project: kiegroup/kogito-apps
+ - project: apache/incubator-kie-kogito-apps
build-command:
current: |
export MVN_CMD=`bash -c "if [ '${{ env.ENABLE_DEPLOY }}' = 'true' ]; then printf 'deploy ${{ env.DEPLOY_MVN_OPTS }} ${{ env.KOGITO_APPS_DEPLOY_MVN_OPTS }}'; else printf 'install'; fi"`
@@ -54,7 +54,7 @@ build:
**/cypress/screenshots/**
**/cypress/videos/**
- - project: kiegroup/kogito-examples
+ - project: apache/incubator-kie-kogito-examples
build-command:
# First install the main pom
# Then build the required submodule pom
@@ -65,10 +65,10 @@ build:
upstream: |
mvn dependency:tree clean install -DskipTests -DskipITs ${{ env.BUILD_MVN_OPTS }} ${{ env.BUILD_MVN_OPTS_UPSTREAM }} ${{ env.KOGITO_EXAMPLES_BUILD_MVN_OPTS_UPSTREAM }}
- - project: kiegroup/kie-jpmml-integration
- build-command:
- current: |
- export MVN_CMD=`bash -c "if [ '${{ env.ENABLE_DEPLOY }}' = 'true' ]; then printf 'deploy ${{ env.DEPLOY_MVN_OPTS }} ${{ env.KIE_JPMML_INTEGRATION_DEPLOY_MVN_OPTS }}'; else printf 'install'; fi"`
- mvn clean ${{ env.MVN_CMD }} ${{ env.BUILD_MVN_OPTS }} ${{ env.BUILD_MVN_OPTS_CURRENT }} ${{ env.KIE_JPMML_INTEGRATION_BUILD_MVN_OPTS }}
- upstream: |
- mvn clean install -DskipTests ${{ env.BUILD_MVN_OPTS }} ${{ env.BUILD_MVN_OPTS_UPSTREAM }} ${{ env.KIE_JPMML_INTEGRATION_BUILD_MVN_OPTS_UPSTREAM }}
+ # - project: kiegroup/kie-jpmml-integration
+ # build-command:
+ # current: |
+ # export MVN_CMD=`bash -c "if [ '${{ env.ENABLE_DEPLOY }}' = 'true' ]; then printf 'deploy ${{ env.DEPLOY_MVN_OPTS }} ${{ env.KIE_JPMML_INTEGRATION_DEPLOY_MVN_OPTS }}'; else printf 'install'; fi"`
+ # mvn clean ${{ env.MVN_CMD }} ${{ env.BUILD_MVN_OPTS }} ${{ env.BUILD_MVN_OPTS_CURRENT }} ${{ env.KIE_JPMML_INTEGRATION_BUILD_MVN_OPTS }}
+ # upstream: |
+ # mvn clean install -DskipTests ${ env.BUILD_MVN_OPTS }} ${{ env.BUILD_MVN_OPTS_UPSTREAM }} ${{ env.KIE_JPMML_INTEGRATION_BUILD_MVN_OPTS_UPSTREAM }}
diff --git a/.github/workflows/generate_status_page.yaml b/.github/workflows/generate_status_page.yaml
index f6cef9f1..00839282 100644
--- a/.github/workflows/generate_status_page.yaml
+++ b/.github/workflows/generate_status_page.yaml
@@ -5,7 +5,7 @@ on: workflow_dispatch
jobs:
generate-status-page:
- if: github.repository_owner == 'kiegroup'
+ if: github.repository_owner == 'apache'
concurrency:
group: generate-status-page
cancel-in-progress: true
@@ -15,5 +15,5 @@ jobs:
- name: Generate status page
uses: kiegroup/chain-status/.ci/actions/generate-app@main
with:
- info-md-url: "https://raw.githubusercontent.com/kiegroup/kogito-pipelines/main/.ci/chain-status-info.md"
+ info-md-url: "https://raw.githubusercontent.com/apache/incubator-kie-kogito-pipelines/main/.ci/chain-status-info.md"
github-token: "${{ secrets.GITHUB_TOKEN }}"
diff --git a/.github/workflows/generate_status_page_data.yaml b/.github/workflows/generate_status_page_data.yaml
index c313cad6..293f7deb 100644
--- a/.github/workflows/generate_status_page_data.yaml
+++ b/.github/workflows/generate_status_page_data.yaml
@@ -7,7 +7,7 @@ on:
jobs:
generate-status-page-data:
- if: github.repository_owner == 'kiegroup'
+ if: github.repository_owner == 'apache'
concurrency:
group: generate-status-page-data
cancel-in-progress: true
@@ -32,7 +32,7 @@ jobs:
with:
projects: "${{ steps.retrieve_active_repos.outputs.result }}"
title: Kogito Status
- subtitle: Kiegroup Kogito organization repositories CI status
+ subtitle: Apache Kogito organization repositories CI status
base-branch-filter: "${{ steps.retrieve_active_branches.outputs.result }}"
branches: 1.13.x,1.13.x-blue
created-by: GitHub Action
diff --git a/.github/workflows/jenkins-dsl-downstream.yml b/.github/workflows/jenkins-dsl-downstream.yml
index 30e2618b..509c834d 100644
--- a/.github/workflows/jenkins-dsl-downstream.yml
+++ b/.github/workflows/jenkins-dsl-downstream.yml
@@ -37,7 +37,7 @@ jobs:
- name: Checkout Main Config repo from main branch
uses: actions/checkout@v3
with:
- repository: kiegroup/kogito-pipelines
+ repository: apache/incubator-kie-kogito-pipelines
ref: main
path: main_config_repo
@@ -156,9 +156,9 @@ jobs:
with:
project: kogito
repository: ${{ matrix.repository }}
- main-config-file-repo: kiegroup/kogito-pipelines
+ main-config-file-repo: apache/incubator-kie-kogito-pipelines
main-config-file-path: .ci/jenkins/config/main.yaml
- branch-config-file-repo: kiegroup/kogito-pipelines
+ branch-config-file-repo: apache/incubator-kie-kogito-pipelines
base-branch: ${{ env.BASE_BRANCH }}
#############################################################################
@@ -193,7 +193,7 @@ jobs:
- name: Checkout Main Config repo from main branch
uses: actions/checkout@v3
with:
- repository: kiegroup/optaplanner
+ repository: apache/incubator-kie-optaplanner
ref: main
path: main_config_repo
@@ -311,7 +311,7 @@ jobs:
echo 'BASE_BRANCH=${{ github.base_ref }}' >> $GITHUB_ENV
- name: Setup correct base branch for optaplanner-quickstarts
- if: github.base_ref == 'main' && matrix.repository == 'optaplanner-quickstarts'
+ if: github.base_ref == 'main' && matrix.repository == 'incubator-kie-optaplanner-quickstarts'
run: |
echo 'BASE_BRANCH=development' >> $GITHUB_ENV
@@ -320,9 +320,9 @@ jobs:
with:
project: optaplanner
repository: ${{ matrix.repository }}
- main-config-file-repo: kiegroup/optaplanner
+ main-config-file-repo: apache/incubator-kie-optaplanner
main-config-file-path: .ci/jenkins/config/main.yaml
- branch-config-file-repo: kiegroup/optaplanner
+ branch-config-file-repo: apache/incubator-kie-optaplanner
base-branch: ${{ env.BASE_BRANCH }}
#############################################################################
@@ -357,7 +357,7 @@ jobs:
- name: Checkout Main Config repo from main branch
uses: actions/checkout@v3
with:
- repository: kiegroup/drools
+ repository: apache/incubator-kie-drools
ref: main
path: main_config_repo
@@ -479,7 +479,7 @@ jobs:
with:
project: drools
repository: ${{ matrix.repository }}
- main-config-file-repo: kiegroup/drools
+ main-config-file-repo: apache/incubator-kie-drools
main-config-file-path: .ci/jenkins/config/main.yaml
- branch-config-file-repo: kiegroup/drools
+ branch-config-file-repo: apache/incubator-kie-drools
base-branch: ${{ env.BASE_BRANCH }}
diff --git a/.github/workflows/jenkins-tests.yml b/.github/workflows/jenkins-tests.yml
index e774d695..7624e439 100644
--- a/.github/workflows/jenkins-tests.yml
+++ b/.github/workflows/jenkins-tests.yml
@@ -49,7 +49,7 @@ jobs:
- name: DSL tests
uses: kiegroup/kie-ci/.ci/actions/dsl-tests@main
with:
- main-config-file-repo: kiegroup/kogito-pipelines
+ main-config-file-repo: apache/incubator-kie-kogito-pipelines
main-config-file-path: .ci/jenkins/config/main.yaml
- branch-config-file-repo: kiegroup/kogito-pipelines
+ branch-config-file-repo: apache/incubator-kie-kogito-pipelines
\ No newline at end of file
diff --git a/README.md b/README.md
index a917bff3..d11695de 100644
--- a/README.md
+++ b/README.md
@@ -24,12 +24,12 @@ This repository contains some of the pipelines of Kogito project.
Apart from this repository, pipelines are also concerning those repositories:
-* [kogito-runtimes](https://github.com/kiegroup/kogito-runtimes)
-* [kogito-apps](https://github.com/kiegroup/kogito-apps)
-* [kogito-examples](https://github.com/kiegroup/kogito-examples)
-* [kogito-images](https://github.com/kiegroup/kogito-images)
-* [kogito-operator](https://github.com/kiegroup/kogito-operator)
-* [kie-tools](https://github.com/kiegroup/kie-tools)
+* [kogito-runtimes](https://github.com/apache/incubator-kie-kogito-runtimes)
+* [kogito-apps](https://github.com/apache/incubator-kie-kogito-apps)
+* [kogito-examples](https://github.com/apache/incubator-kie-kogito-examples)
+* [kogito-images](https://github.com/apache/incubator-kie-kogito-images)
+* [kogito-operator](https://github.com/apache/incubator-kie-kogito-operator)
+* [kie-tools](https://github.com/apache/incubator-kie-tools)
# The different Kogito pipelines
@@ -122,7 +122,7 @@ Jenkins PR checks are of 3 different types:
Each repository has a different yaml files in `.github/workflows` folder to configure the workflow.
-We are additionally using [`composite actions`](https://docs.github.com/en/actions/creating-actions/creating-a-composite-action) to centralized most common steps used by the different Kogito repositories' jobs. You can check the different kind of composite actions we have available at [`.ci/actions` folder](https://github.com/kiegroup/kogito-pipelines/tree/main/.ci/actions).
+We are additionally using [`composite actions`](https://docs.github.com/en/actions/creating-actions/creating-a-composite-action) to centralized most common steps used by the different Kogito repositories' jobs. You can check the different kind of composite actions we have available at [`.ci/actions` folder](https://github.com/apache/incubator-kie-kogito-pipelines/tree/main/.ci/actions).
After the build, test results are parsed and logged using the [`action-surefire-report`](https://github.com/ScaCap/action-surefire-report) action.
diff --git a/apache-nodes/Dockerfile.kogito-ci-build b/apache-nodes/Dockerfile.kogito-ci-build
new file mode 100644
index 00000000..d5cafc03
--- /dev/null
+++ b/apache-nodes/Dockerfile.kogito-ci-build
@@ -0,0 +1,114 @@
+FROM registry.access.redhat.com/ubi9/ubi:9.2
+
+SHELL ["/bin/bash", "-c"]
+
+ARG SDKMAN_JAVA="17.0.8-tem"
+ARG SDKMAN_MAVEN="3.8.8"
+ARG PYTHON_MAJOR_VERSION="3"
+ARG PYTHON_MAJOR_MINOR_VERSION="3.11"
+
+# set locale to C.UTF-8
+ENV LANG='C.UTF-8'
+
+RUN dnf -y update && dnf install -y \
+# skdman deps (BEGIN)
+git \
+findutils \
+tar \
+gzip \
+unzip \
+zip \
+# skdman deps (END)
+# python3 (BEGIN)
+python${PYTHON_MAJOR_MINOR_VERSION} \
+python${PYTHON_MAJOR_MINOR_VERSION}-devel \
+python${PYTHON_MAJOR_MINOR_VERSION}-pip \
+python${PYTHON_MAJOR_VERSION}-gssapi \
+krb5-devel \
+gcc \
+# python3 (END)
+# system (BEGIN)
+shadow-utils \
+sudo \
+wget \
+which \
+# system (END)
+&& dnf clean all
+
+RUN sudo alternatives --install /usr/local/bin/python python $(which python${PYTHON_MAJOR_MINOR_VERSION}) 1 && \
+ sudo alternatives --install /usr/local/bin/pip pip $(which pip${PYTHON_MAJOR_MINOR_VERSION}) 1
+
+RUN groupadd -g 910 nonrootuser && useradd -u 910 -g 910 nonrootuser && \
+ echo "nonrootuser ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
+
+# Docker
+RUN dnf -y update && dnf install -y yum-utils device-mapper-persistent-data lvm2 && \
+ dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo && \
+ dnf remove podman buildah && \
+ dnf install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin --nobest && \
+ dnf clean all
+
+USER nonrootuser
+
+RUN curl -s "https://get.sdkman.io" | bash && \
+ source "$HOME/.sdkman/bin/sdkman-init.sh" && \
+ sdk install java ${SDKMAN_JAVA} && \
+ sudo alternatives --install /usr/local/bin/java java $(which java) 1 && \
+ sdk install maven ${SDKMAN_MAVEN} && \
+ sudo alternatives --install /usr/local/bin/mvn mvn $(which mvn) 1 && \
+ sdk flush
+
+RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash && \
+ source ~/.bashrc && nvm install "v16.20.0" && \
+ sudo alternatives --install /usr/local/bin/node node $(which node) 1 && \
+ sudo alternatives --install /usr/local/bin/npm npm $(which npm) 1
+
+RUN wget https://go.dev/dl/go1.19.10.linux-amd64.tar.gz -P /tmp && \
+ sudo mkdir /opt/golang && \
+ sudo tar -C /opt/golang -xzf /tmp/go*.tar.gz && \
+ sudo chown -R nonrootuser:nonrootuser /opt/golang/go && \
+ sudo chmod -R 755 /opt/golang/go && \
+ echo 'export GOPATH=${HOME}/go' | sudo tee /etc/profile.d/go.sh && \
+ echo "source /etc/profile.d/go.sh" >> $HOME/.bashrc && \
+ rm -rf /tmp/go* && \
+ sudo alternatives --install /usr/local/bin/go go /opt/golang/go/bin/go 1
+
+# Cekit
+RUN pip3.11 install cekit==4.8.0 behave lxml docker docker-squash elementPath pyyaml ruamel.yaml python-dateutil Jinja2 pykwalify colorlog click
+RUN wget https://github.com/openshift/source-to-image/releases/download/v1.3.8/source-to-image-v1.3.8-980ca195-linux-amd64.tar.gz -P /tmp && \
+ tmp_dir=$(mktemp -d) && \
+ tar -C ${tmp_dir} -xzvf /tmp/source-to-image-v1.3.8-980ca195-linux-amd64.tar.gz && \
+ ls ${tmp_dir} && \
+ sudo mv ${tmp_dir}/s2i /usr/local/bin/ && \
+ rm -rf ${tmp_dir} /tmp/source-to-image/*
+
+# gh cli
+RUN sudo dnf config-manager --add-repo https://cli.github.com/packages/rpm/gh-cli.repo && \
+ sudo dnf install -y gh
+
+# Install kubectl
+RUN wget https://dl.k8s.io/release/$(curl -Ls https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl -P /tmp && \
+ chmod +x /tmp/kubectl && \
+ sudo mv /tmp/kubectl /usr/local/bin/kubectl
+
+# Install oc client
+RUN wget https://mirror.openshift.com/pub/openshift-v4/clients/ocp/latest-4.13/openshift-client-linux.tar.gz -P /tmp && \
+ tmp_dir=$(mktemp -d) && \
+ tar -C ${tmp_dir} -xvf /tmp/openshift-client-linux.tar.gz && \
+ sudo mv ${tmp_dir}/oc /usr/local/bin && \
+ rm -rf ${tmp_dir} /tmp/openshift-client*
+
+ENV HOME="/home/nonrootuser/"
+
+ENV JAVA_HOME="/home/nonrootuser/.sdkman/candidates/java/current/"
+ENV MAVEN_HOME="/home/nonrootuser/.sdkman/candidates/maven/current/"
+ENV MAVEN_OPTS="-Xms1024m -Xmx12g"
+ENV NODE_HOME="/home/nonrootuser/.nvm/versions/node/v16.20.0"
+ENV NODE_OPTIONS="--max_old_space_size=4096"
+ENV GOPATH="/home/nonrootuser/go"
+ENV GOROOT="/opt/golang/go"
+
+ENV CONTAINER_ENGINE="docker"
+ENV CONTAINER_ENGINE_TLS_OPTIONS=""
+
+WORKDIR /project/directory
\ No newline at end of file
diff --git a/docs/jenkins.md b/docs/jenkins.md
index 05c1c669..89767f6f 100644
--- a/docs/jenkins.md
+++ b/docs/jenkins.md
@@ -142,8 +142,6 @@ environments:
ids:
- List of ids identifying the environment
-productized_branch: true
-
# Used to force the disabling of triggers
# Useful when a branch is no more maintained but you still want to keep job history
disable:
@@ -185,10 +183,6 @@ maven:
build_promotion_profile_id: 1966c60aff37d
artifacts_repository: http://nexus3-tradisso-nexus.apps.kogito-cloud.hosted.psi.rdu2.redhat.com/repository/kogito-test/
#artifacts_repository: ''
- pr_checks:
- repository:
- url: https://bxms-qe.rhev-ci-vms.eng.rdu2.redhat.com:8443/nexus/content/repositories/kogito-runtimes-pr-full-testing/
- creds_id: unpacks-zip-on-qa-nexus
cloud:
image:
registry_credentials_nightly: tradisso_registry_token
@@ -199,8 +193,8 @@ cloud:
jenkins:
email_creds_id: KOGITO_CI_EMAIL_TO_PERSO
default_tools:
- jdk: kie-jdk11
- maven: kie-maven-3.8.7
+ jdk: jdk_11_latest
+ maven: maven_3.8.6
```
@@ -259,7 +253,7 @@ Then, you can also add a small `.ci/jenkins/dsl/test.sh` to test your groovy scr
file=$(mktemp)
# For more usage of the script, use ./test.sh -h
-curl -o ${file} https://raw.githubusercontent.com/kiegroup/kogito-pipelines/main/dsl/seed/scripts/seed_test.sh
+curl -o ${file} https://raw.githubusercontent.com/apache/incubator-kie-kogito-pipelines/main/dsl/seed/scripts/seed_test.sh
chmod u+x ${file}
${file} $@
```
@@ -292,7 +286,7 @@ If you don't have access to the Kogito `0-seed-job`, you can also create one bas
3) Copy the create the `0-seed-job` and point the parameters of the job to the main config file you created.
Depending on what you changed and need to test, you may have different parameters to update:
* Setup `SEED_CONFIG_FILE_*` parameters correctly to the author/branch you pushed your test modifications. This is always required.
- * Change the `SEED_*` parameters only if you did some changes in the Kogito Pipelines `dsl/seed` folder. Else you can use the default, aka `kiegroup/main`.
+ * Change the `SEED_*` parameters only if you did some changes in the Kogito Pipelines `dsl/seed` folder. Else you can use the default, aka `apache/incubator-kie-main`.
4) Launch the `0-seed-job` and it should create all the needed jobs
**Again, please make sure that you setup your own configuration !**
diff --git a/docs/nightly pipeline.md b/docs/nightly pipeline.md
index 1337390f..487f5462 100644
--- a/docs/nightly pipeline.md
+++ b/docs/nightly pipeline.md
@@ -17,18 +17,18 @@ Those jobs should be present at the same level as the nightly and/or release job
Here is the list of jobs and link to Jenkinsfiles:
-* [kogito-runtimes-deploy](https://github.com/kiegroup/kogito-runtimes/blob/main/Jenkinsfile.deploy)
-* [kogito-runtimes-promote](https://github.com/kiegroup/kogito-runtimes/blob/main/Jenkinsfile.promote)
-* [kogito-apps-deploy](https://github.com/kiegroup/kogito-apps/blob/main/Jenkinsfile.deploy)
-* [kogito-apps-promote](https://github.com/kiegroup/kogito-apps/blob/main/Jenkinsfile.promote)
-* [kogito-examples-deploy](https://github.com/kiegroup/kogito-examples/blob/main/Jenkinsfile.deploy)
-* [kogito-examples-promote](https://github.com/kiegroup/kogito-examples/blob/main/Jenkinsfile.promote)
-* [kogito-images-deploy](https://github.com/kiegroup/kogito-images/blob/main/Jenkinsfile.deploy)
-* [kogito-images-promote](https://github.com/kiegroup/kogito-images/blob/main/Jenkinsfile.promote)
-* [kogito-examples-images-deploy](https://github.com/kiegroup/kogito-operator/blob/main/Jenkinsfile.examples-images.deploy)
-* [kogito-examples-images-promote](https://github.com/kiegroup/kogito-operator/blob/main/Jenkinsfile.examples-images.promote)
-* [kogito-operator-deploy](https://github.com/kiegroup/kogito-operator/blob/main/Jenkinsfile.deploy)
-* [kogito-operator-promote](https://github.com/kiegroup/kogito-operator/blob/main/Jenkinsfile.promote)
+* [kogito-runtimes-deploy](https://github.com/apache/incubator-kie-kogito-runtimes/blob/main/Jenkinsfile.deploy)
+* [kogito-runtimes-promote](https://github.com/apache/incubator-kie-kogito-runtimes/blob/main/Jenkinsfile.promote)
+* [kogito-apps-deploy](https://github.com/apache/incubator-kie-kogito-apps/blob/main/Jenkinsfile.deploy)
+* [kogito-apps-promote](https://github.com/apache/incubator-kie-kogito-apps/blob/main/Jenkinsfile.promote)
+* [kogito-examples-deploy](https://github.com/apache/incubator-kie-kogito-examples/blob/main/Jenkinsfile.deploy)
+* [kogito-examples-promote](https://github.com/apache/incubator-kie-kogito-examples/blob/main/Jenkinsfile.promote)
+* [kogito-images-deploy](https://github.com/apache/incubator-kie-kogito-images/blob/main/Jenkinsfile.deploy)
+* [kogito-images-promote](https://github.com/apache/incubator-kie-kogito-images/blob/main/Jenkinsfile.promote)
+* [kogito-examples-images-deploy](https://github.com/apache/incubator-kie-kogito-operator/blob/main/Jenkinsfile.examples-images.deploy)
+* [kogito-examples-images-promote](https://github.com/apache/incubator-kie-kogito-operator/blob/main/Jenkinsfile.examples-images.promote)
+* [kogito-operator-deploy](https://github.com/apache/incubator-kie-kogito-operator/blob/main/Jenkinsfile.deploy)
+* [kogito-operator-promote](https://github.com/apache/incubator-kie-kogito-operator/blob/main/Jenkinsfile.promote)
## Nightly pipeline Architecture
diff --git a/docs/release pipeline.md b/docs/release pipeline.md
index a4174a0c..8f1a1d79 100644
--- a/docs/release pipeline.md
+++ b/docs/release pipeline.md
@@ -38,18 +38,18 @@ Those jobs should be present at the same level as the nightly and/or release job
Here is the list of jobs and link to Jenkinsfiles:
-* [kogito-runtimes-deploy](https://github.com/kiegroup/kogito-runtimes/blob/main/Jenkinsfile.deploy)
-* [kogito-runtimes-promote](https://github.com/kiegroup/kogito-runtimes/blob/main/Jenkinsfile.promote)
-* [kogito-apps-deploy](https://github.com/kiegroup/kogito-apps/blob/main/Jenkinsfile.deploy)
-* [kogito-apps-promote](https://github.com/kiegroup/kogito-apps/blob/main/Jenkinsfile.promote)
-* [kogito-examples-deploy](https://github.com/kiegroup/kogito-examples/blob/main/Jenkinsfile.deploy)
-* [kogito-examples-promote](https://github.com/kiegroup/kogito-examples/blob/main/Jenkinsfile.promote)
-* [kogito-images-deploy](https://github.com/kiegroup/kogito-images/blob/main/Jenkinsfile.deploy)
-* [kogito-images-promote](https://github.com/kiegroup/kogito-images/blob/main/Jenkinsfile.promote)
-* [kogito-examples-images-deploy](https://github.com/kiegroup/kogito-operator/blob/main/Jenkinsfile.examples-images.deploy)
-* [kogito-examples-images-promote](https://github.com/kiegroup/kogito-operator/blob/main/Jenkinsfile.examples-images.promote)
-* [kogito-operator-deploy](https://github.com/kiegroup/kogito-operator/blob/main/Jenkinsfile.deploy)
-* [kogito-operator-promote](https://github.com/kiegroup/kogito-operator/blob/main/Jenkinsfile.promote)
+* [kogito-runtimes-deploy](https://github.com/apache/incubator-kie-kogito-runtimes/blob/main/Jenkinsfile.deploy)
+* [kogito-runtimes-promote](https://github.com/apache/incubator-kie-kogito-runtimes/blob/main/Jenkinsfile.promote)
+* [kogito-apps-deploy](https://github.com/apache/incubator-kie-kogito-apps/blob/main/Jenkinsfile.deploy)
+* [kogito-apps-promote](https://github.com/apache/incubator-kie-kogito-apps/blob/main/Jenkinsfile.promote)
+* [kogito-examples-deploy](https://github.com/apache/incubator-kie-kogito-examples/blob/main/Jenkinsfile.deploy)
+* [kogito-examples-promote](https://github.com/apache/incubator-kie-kogito-examples/blob/main/Jenkinsfile.promote)
+* [kogito-images-deploy](https://github.com/apache/incubator-kie-kogito-images/blob/main/Jenkinsfile.deploy)
+* [kogito-images-promote](https://github.com/apache/incubator-kie-kogito-images/blob/main/Jenkinsfile.promote)
+* [kogito-examples-images-deploy](https://github.com/apache/incubator-kie-kogito-operator/blob/main/Jenkinsfile.examples-images.deploy)
+* [kogito-examples-images-promote](https://github.com/apache/incubator-kie-kogito-operator/blob/main/Jenkinsfile.examples-images.promote)
+* [kogito-operator-deploy](https://github.com/apache/incubator-kie-kogito-operator/blob/main/Jenkinsfile.deploy)
+* [kogito-operator-promote](https://github.com/apache/incubator-kie-kogito-operator/blob/main/Jenkinsfile.promote)
## Release process
@@ -159,7 +159,7 @@ Once the Release Pipeline is finished, there are some actions to be done:
##### Operator Crd/Csv files
-Once the operator's release has been done, it created new csv and crd files under `deploy/olm-catalog/kogito-operator/{VERSION}` on the release branch in [kogito-operator](https://github.com/kiegroup/kogito-operator).
+Once the operator's release has been done, it created new csv and crd files under `deploy/olm-catalog/kogito-operator/{VERSION}` on the release branch in [kogito-operator](https://github.com/apache/incubator-kie-kogito-operator).
You will need to create, with those files, new OperatorHub PRs (one for Openshift and one for Kubernetes) or asked someone from Cloud part to do it.
If there is any change to be done due to PRs, do it on the release branch.
@@ -189,7 +189,7 @@ To deploy only artifacts (without Cloud part), you should start the release pipe
To deploy only the Cloud part, you should start the release pipeline with those parameters:
-* EXAMPLES_URI => point to `kogito-examples` repository (https://github.com/kiegroup/kogito-examples)
+* EXAMPLES_URI => point to `kogito-examples` repository (https://github.com/apache/incubator-kie-kogito-examples)
* EXAMPLES_REF => point to current release branch
* SKIP_ARTIFACTS_DEPLOY => checked
* SKIP_ARTIFACTS_PROMOTE => checked
diff --git a/dsl/scripts/pr_check.groovy b/dsl/scripts/pr_check.groovy
new file mode 100644
index 00000000..ea74d7ab
--- /dev/null
+++ b/dsl/scripts/pr_check.groovy
@@ -0,0 +1,135 @@
+// TODO Docker image and args could be passed as env or anything ?
+dockerGroups = [
+ 'docker',
+ 'input',
+ 'render',
+]
+dockerArgs = [
+ '-v /var/run/docker.sock:/var/run/docker.sock',
+] + dockerGroups.collect { group -> "--group-add ${group}" }
+
+void launch() {
+ String builderImage = 'quay.io/kiegroup/kogito-ci-build:latest'
+ sh "docker rmi -f ${builderImage} || true" // Remove before launching
+
+ try {
+ launchInDocker(builderImage)
+ } finally {
+ sh "docker rmi -f ${builderImage} || true"
+ }
+}
+
+void launchInDocker(String builderImage) {
+ docker.image(builderImage).inside(dockerArgs.join(' ')) {
+ // Debug. To be removed in the future
+ sh "printenv"
+ sh 'ls -last /var/run/docker.sock'
+ try {
+ launchStages()
+ } finally {
+ echo "Got build result ${currentBuild.currentResult}"
+ if (currentBuild.currentResult != 'SUCCESS') {
+ // TODO ci token as env ?
+ pullrequest.postComment(util.getMarkdownTestSummary('PR', getReproducer(true), "${BUILD_URL}", 'GITHUB'), "kie-ci3-token")
+ }
+ }
+ }
+}
+
+void launchStages() {
+ stage('Initialize') {
+ sh 'printenv > env_props'
+ archiveArtifacts artifacts: 'env_props'
+ }
+ stage('Install build-chain tool') {
+ println '[INFO] Getting build-chain version from composite action file'
+ def buildChainVersion = buildChain.getBuildChainVersionFromCompositeActionFile()
+ if ([null, 'null'].contains(buildChainVersion)) {
+ def errorMessage = "[ERROR] The build-chain version can't be recovered. Please contact administrator"
+ println errorMessage
+ error(errorMessage)
+ }
+ println "[INFO] build-chain version recovered '${buildChainVersion}'"
+ sh "npm install -g @kie/build-chain-action@${buildChainVersion}${env.NPM_REGISTRY_URL ? " -registry=${NPM_REGISTRY_URL}" : ''}"
+ sh 'npm list -g | grep build-chain'
+ sh 'sudo alternatives --install /usr/local/bin/build-chain build-chain ${NODE_HOME}/bin/build-chain 1'
+ sh 'build-chain || true'
+ }
+ stage('Build projects') {
+ configFileProvider([configFile(fileId: 'kie-pr-settings', variable: 'MAVEN_SETTINGS_FILE')]) { // TODO as env ?
+ withCredentials([string(credentialsId: 'kie-ci3-token', variable: 'GITHUB_TOKEN')]) { // TODO as env ?
+ env.BUILD_MVN_OPTS = "${env.BUILD_MVN_OPTS ?: ''} -s ${MAVEN_SETTINGS_FILE} -Dmaven.wagon.http.ssl.insecure=true -Dmaven.test.failure.ignore=true"
+ echo "BUILD_MVN_OPTS = ${BUILD_MVN_OPTS}"
+
+ try {
+ sh getBuildChainCommandline()
+ } catch (err) {
+ echo 'Error running the build-chain ...'
+ util.archiveConsoleLog('', 300)
+ throw err
+ } finally {
+ // Remove `node_modules` to avoid heap space issues with junit command thereafter
+ // Related to https://github.com/jenkinsci/junit-plugin/issues/478 and https://github.com/jenkinsci/junit-plugin/issues/467
+ sh 'find . -type d -name node_modules -exec rm -rf {} \\; || true'
+
+ junit(testResults: '**/junit.xml, **/target/surefire-reports/**/*.xml, **/target/failsafe-reports/**/*.xml, **/target/invoker-reports/**/*.xml', allowEmptyResults: true)
+ archiveArtifacts(artifacts: '**/cypress/screenshots/**,**/cypress/videos/**', fingerprint: false, allowEmptyArchive: true)
+ }
+ }
+ }
+ }
+ stage('Sonar analysis') {
+ if (isEnableSonarCloudAnalysis()) {
+ dir(getProjectFolder()) {
+ maven.runMavenWithSettingsSonar(settingsXmlId, "-e -nsu validate -Psonarcloud-analysis -Denforcer.skip=true ${env.SONARCLOUD_ANALYSIS_MVN_OPTS ?: ''}", 'SONARCLOUD_TOKEN', 'sonar_analysis.maven.log')
+ }
+ }
+ }
+}
+
+String getBuildChainCommandline() {
+ // Those can be overriden in Jenkinsfiles
+ String buildChainProject = env.BUILDCHAIN_PROJECT ?: CHANGE_REPO
+ String buildChainConfigRepo = env.BUILDCHAIN_CONFIG_REPO ?: 'incubator-kie-kogito-pipelines'
+ String buildChainConfigBranch = env.BUILDCHAIN_CONFIG_BRANCH ?: '\${BRANCH:main}'
+ String buildChainConfigGitAuthor = env.BUILDCHAIN_CONFIG_AUTHOR ?: '\${AUTHOR:apache}'
+ String buildChainConfigDefinitionFilePath = env.BUILDCHAIN_CONFIG_FILE_PATH ?: '.ci/pull-request-config.yaml'
+
+ List buildChainAdditionalArguments = [
+ "-p ${buildChainProject}",
+ "-u ${CHANGE_URL}", // Provided by source branch plugin
+ ]
+ // TODO remove debug option
+ return "build-chain build full_downstream ${env.GITHUB_TOKEN ? "--token ${GITHUB_TOKEN} " : ''} -f 'https://raw.githubusercontent.com/${buildChainConfigGitAuthor}/${buildChainConfigRepo}/${buildChainConfigBranch}/${buildChainConfigDefinitionFilePath}' -o 'bc' ${buildChainAdditionalArguments.join(' ')} --skipParallelCheckout"
+}
+
+boolean isEnableSonarCloudAnalysis() {
+ return env.ENABLE_SONARCLOUD ? env.ENABLE_SONARCLOUD.toBoolean() : false
+}
+
+String getReproducer(boolean isGH = false) {
+ String reproducer = """
+${env.QUARKUS_BRANCH ? "export QUARKUS_BRANCH=${env.QUARKUS_BRANCH}" : ''}
+${env.BUILD_MVN_OPTS_CURRENT ? "export BUILD_MVN_OPTS_CURRENT=${env.BUILD_MVN_OPTS_CURRENT}" : ''}
+${getBuildChainCommandline()}
+
+NOTE: To install the build-chain tool, please refer to https://github.com/kiegroup/github-action-build-chain#local-execution
+"""
+
+ if(isGH) {
+ return """
+<details>
+<summary><b>Reproducer</b></summary>
+${reproducer}
+</details>
+"""
+ } else {
+ return """
+```spoiler Reproducer
+${reproducer}
+```
+"""
+ }
+}
+
+return this
diff --git a/dsl/seed/build.gradle b/dsl/seed/build.gradle
index 95062f11..3659748e 100644
--- a/dsl/seed/build.gradle
+++ b/dsl/seed/build.gradle
@@ -61,6 +61,7 @@ dependencies {
testPlugins "com.sonyericsson.hudson.plugins.rebuild:rebuild:${version_jenkins_plugins_rebuild}"
testPlugins "org.jenkins-ci.main:maven-plugin:${version_jenkins_plugins_maven_plugin}"
testPlugins "org.jenkins-ci.plugins:ansicolor:${version_jenkins_plugins_ansicolor}"
+ testPlugins "org.jenkins-ci.plugins:github-branch-source:${version_jenkins_plugins_github_branch_source}"
testPlugins "org.jenkins-ci.plugins:build-timeout:${version_jenkins_plugins_build_timeout}"
testPlugins "org.jenkins-ci.plugins:config-file-provider:${version_jenkins_plugins_config_file_provider}"
testPlugins "org.jenkins-ci.plugins:credentials:${version_jenkins_plugins_credentials}"
diff --git a/dsl/seed/gradle.properties b/dsl/seed/gradle.properties
index 80ab2ff1..3d96d45b 100644
--- a/dsl/seed/gradle.properties
+++ b/dsl/seed/gradle.properties
@@ -23,6 +23,7 @@ version_jenkins_test_harness=1873.va_ed9d52f2b_42
# can be found in ${JENKINS_URL}/systemInfo
version_jenkins_plugins_ansicolor=1.0.2
version_jenkins_plugins_branch_api=2.1122.v09cb_8ea_8a_724
+version_jenkins_plugins_github_branch_source=1732.v3f1889a_c475b_
version_jenkins_plugins_build_timeout=1.31
version_jenkins_plugins_cloudbees_folder=6.815.v0dd5a_cb_40e0e
version_jenkins_plugins_config_file_provider=938.ve2b_8a_591c596
diff --git a/dsl/seed/jenkinsfiles/Jenkinsfile.buildchain b/dsl/seed/jenkinsfiles/Jenkinsfile.buildchain
index 2a02a1f6..dc658eac 100644
--- a/dsl/seed/jenkinsfiles/Jenkinsfile.buildchain
+++ b/dsl/seed/jenkinsfiles/Jenkinsfile.buildchain
@@ -3,8 +3,8 @@
import org.kie.jenkins.MavenCommand
import org.kie.jenkins.MavenSettingsUtils
-agentLabel = "${env.ADDITIONAL_LABEL?.trim() ?: 'kie-rhel8 && docker && kie-mem16g'} && !built-in"
-timeoutValue = env.ADDITIONAL_TIMEOUT?.trim() ?: '180'
+agentLabel = "${env.ADDITIONAL_LABEL?.trim() ?: 'ubuntu'} && !built-in"
+timeoutValue = env.ADDITIONAL_TIMEOUT?.trim() ?: '360'
jdkTool = env.BUILD_JDK_TOOL
sonarJdkTool = env.SONAR_JDK_TOOL
mavenTool = env.BUILD_MAVEN_TOOL
@@ -16,15 +16,15 @@ mavenDeployLocalDir = env.MAVEN_DEPLOY_LOCAL_DIR ?: ''
buildChainType = env.BUILDCHAIN_TYPE?.trim() ?: 'cross_pr'
buildChainProject = env.BUILDCHAIN_PROJECT?.trim()
-defaultSettingsXmlId = isPRBuildChainType() || isFDBBuildChainType() ? 'kogito_pr_settings' : 'kogito_release_settings'
+defaultSettingsXmlId = isPRBuildChainType() || isFDBBuildChainType() ? 'kie-pr-settings' : 'kie-release-settings'
settingsXmlId = env.MAVEN_SETTINGS_FILE_ID ?: defaultSettingsXmlId
enableSonarCloudAnalysis = env.ENABLE_SONARCLOUD ? env.ENABLE_SONARCLOUD.toBoolean() : false
downstreamBuild = env.DOWNSTREAM_BUILD ? env.DOWNSTREAM_BUILD.toBoolean() : false
-buildChainConfigRepo = env.BUILDCHAIN_CONFIG_REPO ?: 'kogito-pipelines'
+buildChainConfigRepo = env.BUILDCHAIN_CONFIG_REPO ?: 'incubator-kie-kogito-pipelines'
buildChainConfigBranch = env.BUILDCHAIN_CONFIG_BRANCH ?: '\${BRANCH:main}'
-buildChainConfigGitAuthor = env.BUILDCHAIN_CONFIG_AUTHOR ?: '\${AUTHOR:kiegroup}'
+buildChainConfigGitAuthor = env.BUILDCHAIN_CONFIG_AUTHOR ?: '\${AUTHOR:apache}'
buildChainConfigDefinitionFilePath = env.BUILDCHAIN_CONFIG_FILE_PATH ?: '.ci/pull-request-config.yaml'
buildChainAction = isFDBBuildChainType() ? 'full_downstream' : buildChainType
buildChainAdditionalArguments = buildChainProject ? [ "-p ${buildChainProject}" ] : []
@@ -47,25 +47,22 @@ notificationJobName = env.NOTIFICATION_JOB_NAME ?: 'PR'
pipeline {
agent {
- label agentLabel
- }
- tools {
- nodejs 'nodejs-16.2.0'
+ docker {
+ image env.AGENT_DOCKER_BUILDER_IMAGE
+ args env.AGENT_DOCKER_BUILDER_ARGS
+ }
}
options {
timestamps()
timeout(time: timeoutValue, unit: 'MINUTES')
}
- environment {
- FIREFOX_FOLDER = '/opt/tools/firefox-60esr'
- MAVEN_OPTS = '-Xms1024m -Xmx12g'
- }
stages {
stage('Initialize') {
steps {
script {
sh 'printenv > env_props'
archiveArtifacts artifacts: 'env_props'
+ sh 'ls -last /var/run/docker.sock'
if (mavenDeployArtifacts) {
assert mavenDeployRepository : 'Please provide the maven deploy repository'
@@ -73,114 +70,91 @@ pipeline {
}
currentBuild.displayName = params.DISPLAY_NAME ?: env.GIT_BRANCH_NAME ?: currentBuild.displayName
-
- // Needed by Kogito Apps
- setupCypressEnv('12.17.0')
- }
- }
- }
- stage('check space before build') {
- steps {
- script {
- try {
- util.spaceLeft()
- } catch (err) {
- echo "Error when checking the space on node ... ${err}"
- }
}
}
}
- stage('Install build-chain tool') {
- steps {
- script {
- println '[INFO] Getting build-chain version from composite action file'
- def buildChainVersion = buildChain.getBuildChainVersionFromCompositeActionFile()
- if ([null, 'null'].contains(buildChainVersion)) {
- def errorMessage = "[ERROR] The build-chain version can't be recovered. Please contact administrator"
- println errorMessage
- error(errorMessage)
+ stage('Perform build steps') {
+ stages {
+ stage('Install build-chain tool') {
+ steps {
+ script {
+ println '[INFO] Getting build-chain version from composite action file'
+ def buildChainVersion = buildChain.getBuildChainVersionFromCompositeActionFile()
+ if ([null, 'null'].contains(buildChainVersion)) {
+ def errorMessage = "[ERROR] The build-chain version can't be recovered. Please contact administrator"
+ println errorMessage
+ error(errorMessage)
+ }
+ println "[INFO] build-chain version recovered '${buildChainVersion}'"
+ sh "npm install -g @kie/build-chain-action@${buildChainVersion}${env.NPM_REGISTRY_URL ? " -registry=${NPM_REGISTRY_URL}" : ''}"
+
+ sh "npm list -g | grep build-chain"
+ sh 'sudo alternatives --install /usr/local/bin/build-chain build-chain ${NODE_HOME}/bin/build-chain 1'
+ sh 'build-chain || true'
+ }
}
- println "[INFO] build-chain version recovered '${buildChainVersion}'"
- sh "npm install -g @kie/build-chain-action@${buildChainVersion}${env.NPM_REGISTRY_URL ? " -registry=${NPM_REGISTRY_URL}" : ''}"
-
- sh "npm list -g | grep build-chain"
}
- }
- }
- stage('Build projects') {
- tools {
- jdk jdkTool
- maven mavenTool
- }
- steps {
- script {
- env.LD_LIBRARY_PATH = "${env.LD_LIBRARY_PATH ? "${env.LD_LIBRARY_PATH}:": ''}${GRAALVM_HOME}/lib/server"
- echo "LD_LIBRARY_PATH = ${LD_LIBRARY_PATH}"
-
- env.BUILD_MVN_OPTS_CURRENT = "${env.BUILD_MVN_OPTS_CURRENT ?: ''} ${getBuildMavenOptsCurrent()}"
- echo "BUILD_MVN_OPTS_CURRENT = ${BUILD_MVN_OPTS_CURRENT}"
- if (mavenDeployArtifacts) {
- env.DEPLOY_MVN_OPTS = "${env.DEPLOY_MVN_OPTS ?: ''} -DaltDeploymentRepository=local::default::file://${getMavenDeployLocalDir()}"
- echo "DEPLOY_MVN_OPTS = ${DEPLOY_MVN_OPTS}"
+ stage('Build projects') {
+ steps {
+ script {
+ env.BUILD_MVN_OPTS_CURRENT = "${env.BUILD_MVN_OPTS_CURRENT ?: ''} ${getBuildMavenOptsCurrent()}"
+ echo "BUILD_MVN_OPTS_CURRENT = ${BUILD_MVN_OPTS_CURRENT}"
+ if (mavenDeployArtifacts) {
+ env.DEPLOY_MVN_OPTS = "${env.DEPLOY_MVN_OPTS ?: ''} -DaltDeploymentRepository=local::default::file://${getMavenDeployLocalDir()}"
+ echo "DEPLOY_MVN_OPTS = ${DEPLOY_MVN_OPTS}"
+ }
+
+ configFileProvider([configFile(fileId: settingsXmlId, variable: 'MAVEN_SETTINGS_FILE')]) {
+ withCredentials([string(credentialsId: "${GIT_AUTHOR_TOKEN_CREDENTIALS_ID}", variable: 'GITHUB_TOKEN')]) {
+ env.BUILD_MVN_OPTS = "${env.BUILD_MVN_OPTS ?: ''} -s ${MAVEN_SETTINGS_FILE} -Dmaven.wagon.http.ssl.insecure=true -Dmaven.test.failure.ignore=true"
+ echo "BUILD_MVN_OPTS = ${BUILD_MVN_OPTS}"
+
+ sh getBuildChainCommandline(true)
+ }
+ }
+ }
}
-
- configFileProvider([configFile(fileId: settingsXmlId, variable: 'MAVEN_SETTINGS_FILE')]) {
- withCredentials([string(credentialsId: "${GIT_AUTHOR_TOKEN_CREDENTIALS_ID}", variable: 'GITHUB_TOKEN')]) {
- env.BUILD_MVN_OPTS = "${env.BUILD_MVN_OPTS ?: ''} -s ${MAVEN_SETTINGS_FILE} -Dmaven.wagon.http.ssl.insecure=true -Dmaven.test.failure.ignore=true"
- echo "BUILD_MVN_OPTS = ${BUILD_MVN_OPTS}"
-
- util.runWithPythonVirtualEnv("${getBuildChainCommandline(true)}", 'swf')
+ post {
+ always {
+ script {
+ // Remove `node_modules` to avoid heap space issues with junit command thereafter
+ // Related to https://github.com/jenkinsci/junit-plugin/issues/478 and https://github.com/jenkinsci/junit-plugin/issues/467
+ sh 'find . -type d -name node_modules -exec rm -rf {} \\; || true'
+
+ junit(testResults: '**/junit.xml, **/target/surefire-reports/**/*.xml, **/target/failsafe-reports/**/*.xml, **/target/invoker-reports/**/*.xml', allowEmptyResults: true)
+ archiveArtifacts(artifacts: '**/cypress/screenshots/**,**/cypress/videos/**', fingerprint: false, allowEmptyArchive: true)
+ }
+ }
+ unsuccessful {
+ script {
+ util.archiveConsoleLog('', 300)
+ }
}
}
}
- }
- post {
- always {
- script {
- // Remove `node_modules` to avoid heap space issues with junit command thereafter
- // Related to https://github.com/jenkinsci/junit-plugin/issues/478 and https://github.com/jenkinsci/junit-plugin/issues/467
- sh 'find . -type d -name node_modules -exec rm -rf {} \\; || true'
-
- junit(testResults: '**/junit.xml, **/target/surefire-reports/**/*.xml, **/target/failsafe-reports/**/*.xml, **/target/invoker-reports/**/*.xml', allowEmptyResults: true)
- archiveArtifacts(artifacts: '**/cypress/screenshots/**,**/cypress/videos/**', fingerprint: false, allowEmptyArchive: true)
+ stage('Sonar analysis') {
+ when {
+ expression { return enableSonarCloudAnalysis }
}
- }
- unsuccessful {
- script {
- util.archiveConsoleLog('', 300)
+ steps {
+ script {
+ dir(getProjectFolder()) {
+ maven.runMavenWithSettingsSonar(settingsXmlId, "-e -nsu validate -Psonarcloud-analysis -Denforcer.skip=true ${env.SONARCLOUD_ANALYSIS_MVN_OPTS ?: ''}", 'SONARCLOUD_TOKEN', 'sonar_analysis.maven.log')
+ }
+ }
}
}
- }
- }
- stage('Sonar analysis') {
- when {
- expression { return enableSonarCloudAnalysis }
- }
- tools {
- jdk sonarJdkTool
- maven mavenTool
- }
- steps {
- script {
- dir(getProjectFolder()) {
- maven.runMavenWithSettingsSonar(settingsXmlId, "-e -nsu validate -Psonarcloud-analysis -Denforcer.skip=true ${env.SONARCLOUD_ANALYSIS_MVN_OPTS ?: ''}", 'SONARCLOUD_TOKEN', 'sonar_analysis.maven.log')
+ stage('Upload artifacts to repository') {
+ when {
+ expression { return mavenDeployArtifacts }
+ }
+ steps {
+ script {
+ // Upload to specific repository with credentials
+ String mavenDeployRepositoryZipUrl = "${mavenDeployRepository.replaceAll('/content/', '/service/local/').replaceFirst('/*$', '')}/content-compressed"
+ maven.uploadLocalArtifacts(mavenDeployRepositoryCredsId, getMavenDeployLocalDir(), mavenDeployRepositoryZipUrl)
+ }
}
- }
- }
- }
- stage('Upload artifacts to repository') {
- when {
- expression { return mavenDeployArtifacts }
- }
- tools {
- jdk jdkTool
- maven mavenTool
- }
- steps {
- script {
- // Upload to specific repository with credentials
- String mavenDeployRepositoryZipUrl = "${mavenDeployRepository.replaceAll('/content/', '/service/local/').replaceFirst('/*$', '')}/content-compressed"
- maven.uploadLocalArtifacts(mavenDeployRepositoryCredsId, getMavenDeployLocalDir(), mavenDeployRepositoryZipUrl)
}
}
}
@@ -197,13 +171,6 @@ pipeline {
}
}
}
- stage('check space after build') {
- steps {
- script {
- util.spaceLeft()
- }
- }
- }
}
post {
unsuccessful {
@@ -217,19 +184,13 @@ pipeline {
}
}
}
- cleanup {
- script {
- // Clean also docker in case of usage of testcontainers lib
- util.cleanNode('docker')
- sh 'rm -rf /tmp/quarkus'
- }
- }
- }
-}
-
-void setupCypressEnv(String cypressVersion) {
- if (env.CYPRESS_BINARY_URL) {
- env.CYPRESS_INSTALL_BINARY = "${CYPRESS_BINARY_URL}/cypress-${cypressVersion}.zip"
+ // cleanup {
+ // script {
+ // // Clean also docker in case of usage of testcontainers lib
+ // util.cleanNode('docker')
+ // sh 'rm -rf /tmp/quarkus'
+ // }
+ // }
}
}
@@ -267,9 +228,9 @@ String getProjectFolder() {
// First guessing whether there is a clone defined into the buildchain config
// If not, fallback to simple folder structure
- String projectFolder = "bc/kiegroup_${project}/${project}"
+ String projectFolder = "bc/apache_${project}/${project}"
if (!fileExists(projectFolder)) {
- projectFolder = "bc/kiegroup_${project}"
+ projectFolder = "bc/apache_${project}"
}
return projectFolder
diff --git a/dsl/seed/jenkinsfiles/Jenkinsfile.environment.integration-branch b/dsl/seed/jenkinsfiles/Jenkinsfile.environment.integration-branch
index 4b769bbd..b766d8be 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 'kie-rhel8 && !built-in'
+ label 'ubuntu'
}
environment {
diff --git a/dsl/seed/jenkinsfiles/Jenkinsfile.prod.prepare b/dsl/seed/jenkinsfiles/Jenkinsfile.prod.prepare
deleted file mode 100644
index dad5b6f9..00000000
--- a/dsl/seed/jenkinsfiles/Jenkinsfile.prod.prepare
+++ /dev/null
@@ -1,664 +0,0 @@
-import org.jenkinsci.plugins.workflow.libs.Library
-import java.util.regex.Pattern
-
-@Library('jenkins-pipeline-shared-libraries')_
-
-// parameters
-// 1. <prj>_RELEASE_BRANCH
-// 2. <prj>_UPDATE_VERSION (this includes also dependencies)
-// 3. QUARKUS_VERSION
-// 4. DOWNGRADE_QUARKUS_PR_BRANCH
-// 5. ADDITIONAL_BUILD_MAVEN_OPTS
-// 6. PROJECTS_TO_REMOVE_FROM_PR_CHECKS
-
-seedConfig = [:]
-mainBranchConfig = [:]
-repositoriesToBranch = []
-
-pipeline{
- agent{
- label 'rhel8 && !built-in'
- }
- stages{
- stage('Initialize'){
- steps{
- script {
- checkout scm
-
- String projectListStr = getEcosystemProjects().collect { "${getRepoNameCamelCase(it.name)} ${getBranchFromRepository(it.name)}" }.join(' / ')
- currentBuild.displayName = "Productize Branch for ${projectListStr}"
- }
- }
- }
-
- stage('Create productized branches'){
- steps{
- script {
- List repositories = getProdRepositoriesToBranch()
- createBranches(repositories)
- }
- }
- }
-
- // update the main seed config by adding the new prod branch, e.g.,
- // - name: 8.36.x-prod
- // seed:
- // branch: seed-drools-8.36.x // this branch MUST already exist
- stage('Update main seed config') {
- steps {
- script {
- String seedConfigFile = env.SEED_CONFIG_FILE_PATH
-
- dir(checkoutMainSeedConfigFileRepo()) {
- def seedConfig = readYaml file: seedConfigFile
-
- if (!seedConfig.git.branches.find { it.name == getEcosystemProductizedBranch() }) {
- def branchConfig = [
- name: getEcosystemProductizedBranch(),
- seed: [
- branch: getSeedRepoReleaseBranch(),
- ]
- ]
-
- seedConfig.git.branches.add(branchConfig)
- }
-
- echo "Write seed config => ${seedConfig}"
- sh "rm ${seedConfigFile}"
- writeYaml file: seedConfigFile, data: seedConfig, overwrite: true
-
- pushIfChanged(env.SEED_CONFIG_FILE_GIT_BRANCH, env.SEED_CONFIG_FILE_GIT_AUTHOR_CREDS_ID, "Add productized branch ${getEcosystemProductizedBranch()} after upstream release", "Main config has been updated with release branch ${getEcosystemProductizedBranch()}")
- }
- }
- }
- }
-
- // 1. update seed config repo on productized branch (e.g., 1.37.x-prod)
- // - enable productized profile (-Dproductized) on jenkins environments branch.yaml [this MUST be executed only on config file repo, e.g., kogito-pipelines]
- // - disable some environments when branching as they make no sense by default [this MUST be executed only on config file repo, e.g., kogito-pipelines]
- // - set productized_repositories[].branch to the productized one, e.g., 1.37.x-prod
- // - set productized_repositories[].is_branch_config_repo to true for the config file repo
- // - enable productized profile (-Dproductized) on build chain config
- // - do these changes directly on the prod branch
-
-
- stage("Update branch config on productized branch"){
- steps{
- script {
- def prodBranch = getBranchConfigProductizedBranch()
- def prodRepositories = getProdRepositoriesToBranch()
-
- dir(checkoutMainBranchSeedConfigFileRepo()) {
- getOrCreateGitBranch(prodBranch, getMainBranchConfigFileGitAuthorCredentialsId())
-
- def branchConfigFilePath = getProdBranchConfigFilePath()
- def branchConfig = readYaml file: branchConfigFilePath
-
- branchConfig.productized_repositories = prodRepositories
- branchConfig.productized_branch = true
-
- // keep only those environments that are really needed on productized branch:
- // native, quarkus-branch and default if exists
- def envsToKeep = ['native', 'quarkus-branch', 'default']
- enabledEnvs = branchConfig.environments.findAll { envName, envData -> envsToKeep.contains(envName) }
-
- // additional maven opt that enables productized profile
- // FIXME do we need -Dproductized here as we are already adding it on buildchain config
- def buildMvnOpts = "-Dproductized ${getAdditionalDefaultBuildMavenOpts()} "
-
- // create default env if not already existing
- enabledEnvs.default = enabledEnvs.default ?: [:]
-
- // apply changes on remaining envs
- enabledEnvs.each { envName, envData ->
- // ensure env is enabled
- envData.enabled = true
-
- envData.env_vars = envData.env_vars ?: [:]
- envData.env_vars.BUILD_MVN_OPTS = buildMvnOpts + (envData.env_vars.BUILD_MVN_OPTS ?: '')
- }
-
- // update environments
- branchConfig.environments = enabledEnvs
-
- // ignore the job creation for jobs in environment which are not defined (apart from the default env)
- branchConfig.generation_config = branchConfig.generation_config ?: [:]
- branchConfig.generation_config.missing_environment = 'ignore'
-
- // disable community triggers
- branchConfig.disable = branchConfig.disable ?: [:]
- branchConfig.disable.triggers = true
-
- // update repositories branches to the productized one
- branchConfig.repositories.each { repo ->
- repo.branch = getEcosystemProductizedBranch()
- }
-
- // add cloud.images if operating on kogito project
-
- branchConfig.cloud = branchConfig.cloud ?: [:]
- if (getEcosystemMainProject() == 'kogito') {
- branchConfig.cloud.images = 'kogito-data-index-ephemeral,kogito-swf-builder,kogito-swf-devmode'
- }
-
- // override nexus artifacts repository
-
- def nexusRepo = "${env.BXMS_QE_NEXUS}/content/repositories/osl-prod-nightly/"
- branchConfig.maven = branchConfig.maven ?: [:]
- branchConfig.maven.artifacts_repository = nexusRepo
-
- branchConfig.maven.artifacts_upload_repository = branchConfig.maven.artifacts_upload_repository ?: [:]
- branchConfig.maven.artifacts_upload_repository.url = nexusRepo
- branchConfig.maven.artifacts_upload_repository.creds_id = 'unpacks-zip-on-qa-nexus'
-
- echo "Write dsl branch_config => ${branchConfig}"
- sh "rm -f ${branchConfigFilePath}"
- writeYaml file: "${branchConfigFilePath}", data: branchConfig, overwrite: true
-
- // update build-chain configuration
-
- def buildChainConfigFilePath = readMainBranchConfig().buildchain_config.git.file_path
- def buildChainConfig = readYaml file: buildChainConfigFilePath
-
- // add -Dproductized in BUILD_MVN_OPTS, then we don't have to add -Dproductized inside DSL configs
-
- sh "sed -i 's/export BUILD_MVN_OPTS=\"\\\${{ env.BUILD_MVN_OPTS }}/export BUILD_MVN_OPTS=\"\\\${{ env.BUILD_MVN_OPTS }} -Dproductized/' ${buildChainConfigFilePath}"
-
- // comment out projects we are not interested in from the buildchain-config.yaml
- def projectToRemoveFromBCPRChecks = getProjectsToRemoveFromBuildChainConfig()
-
- if (projectToRemoveFromBCPRChecks.isEmpty()) {
- echo "Removing projects ${projectToRemoveFromBCPRChecks} from build chain configuration"
-
- def builds = buildChainConfig.build.findAll { build ->
- !projectToRemoveFromBCPRChecks.contains(build.project)
- }
- buildChainConfig.build = builds
-
- echo "Write build-chain configuration => ${buildChainConfig}"
- sh "rm -f ${buildChainConfigFilePath}"
- writeYaml file: "${buildChainConfigFilePath}", data: buildChainConfig, overwrite: true
-
- // update build-chain project dependencies
- def buildChainConfigDependenciesFilePath = buildChainConfigFilePath.substring(0, buildChainConfigFilePath.lastIndexOf('/') + 1) + "${buildChainConfig.dependencies}"
- def buildChainConfigDependencies = readYaml file: buildChainConfigDependenciesFilePath
-
- def deps = buildChainConfigDependencies.dependencies.findAll { dep ->
- !projectToRemoveFromBCPRChecks.contains(dep.project)
- }
- buildChainConfigDependencies.dependencies = deps
-
- echo "Write build-chain dependencies configuration => ${buildChainConfigDependencies}"
- sh "rm -f ${buildChainConfigDependenciesFilePath}"
- writeYaml file: "${buildChainConfigDependenciesFilePath}", data: buildChainConfigDependencies, overwrite: true
- }
-
- pushIfChanged(prodBranch, getMainBranchConfigFileGitAuthorCredentialsId(), "Setup DSL branch config after productized branch creation", "Branch config on ${prodBranch} has been updated with correct configuration")
- }
- }
- }
- }
-
-
- // 2. update productized branch on other projects
- // - disable PR checks from jobs.groovy
- // - comment out projects we are not interested in from the buildchain-config.yaml
- // - disable GHA jobs no more needed by commenting out workflows
- // - ensure that fullProfile is not enabled on .ci/jenkins/dsl/jobs.groovy, if so remove it
- stage("Update prod branch for all projects to be productized"){
- steps{
- script {
- def prodRepositories = getProdRepositoriesToBranch()
- prodRepositories.each { repoConfig ->
- String repository = repoConfig.name
- String repoAuthor = repoConfig.author?.name ?: readMainBranchConfig().git.author.name
- String repoCredsId = repoConfig.author?.credentials_id ?: readMainBranchConfig().git.author.credentials_id
-
- String jobsGroovyPath = getJobDefinitionFilePath()
-
- dir(repository) {
- deleteDir()
- // here productized branches should have been already created on repos to be productized
- checkout(githubscm.resolveRepository(repository, repoAuthor, getProductizedBranchFromRepository(repository), false, repoCredsId))
-
- getOrCreateGitBranch(repoConfig.branch, repoCredsId)
-
- if (fileExists("${jobsGroovyPath}")) {
- // def jobsGroovy = readFile file: jobsGroovyPath
- // remove fullProfile
- sh "sed -i 's/, addFullProfileJobParamsGetter)/)/g' ${jobsGroovyPath}"
- // TODO: disable pr checks in getMultijobPRConfig, get them from params
- } else {
- echo "[WARN] Unable to find jobs.groovy for '${repository}' at '${jobsGroovyPath}'"
- }
-
-
- // TODO iterate over PR workflows
- // - comment out/remove if not needed (get these from param?)
-
- // push changes
- pushIfChanged(repoConfig.branch, repoCredsId, "Pull request checks updated for productized branch", "Pull request checks updated for productized branch")
- }
- }
- }
- }
- }
-
- // 3. update the projects version in order to avoid any kind of conflicts with already existing and deployed artifacts
-
- stage("Update projects version"){
- when {
- expression { return getProjectUpdateVersionKeys().findAll{ it.value != '' } }
- }
- steps{
- script {
- println "Updating projects versions"
-
- def prodBranch = getEcosystemProductizedBranch()
- String jobName = "${prodBranch}/setup-branch/0-setup-branch"
- List jobParams = []
- jobParams.add(booleanParam(name: 'DEPLOY', value: false))
- // here we could have a variable number of params
- getProjectUpdateVersionKeys().each{ p ->
- jobParams.add(stringParam(name: p.key.replace('_UPDATE', ''), value: p.value))
- }
-
- if (!isDryRun()) {
- def job = [:]
- try {
- // Retry 20 times every 5 min in order to assure seed job ran
- retry(20) {
- sleep 300
- echo "Build ./${jobName} with parameters ${jobParams}"
- job = build(job: "./${jobName}", parameters: jobParams, wait: true, propagate: false)
- }
-
- if (job.result != 'SUCCESS') {
- unstable("Update projects version on repositories was not successful")
- }
- } catch (err) {
- unstable("Error executing the ${prodBranch} setup job ...")
- String msg = "ERROR: Setup branch job on newly created release branch '${prodBranch}' was unsuccessful."
- if(job) {
- msg += "\nPlease review job ${job.absoluteUrl}..."
- }
- sendNotification(msg)
- }
- } else {
- // dry run - just print the job name and params
- echo "Build ./${jobName} with parameters ${jobParams}"
- }
- }
- }
- }
-
- // 4. call update quarkus job in order to downgrade quarkus to LTS version (version provided as parameter QUARKUS_VERSION)
- // this will:
- // - downgrade quarkus, there already exists a job doing this
- // - apply patches from .ci/environments/quarkus-lts on the same PR
-
- stage('Downgrade quarkus to LTS version'){
- when {
- expression { return params.QUARKUS_VERSION }
- }
- steps{
- script {
- println "Launch update quarkus all"
-
- String jobName = "${getEcosystemProductizedBranch()}/tools/update-quarkus-all"
- String quarkusDowngradePrBranch = getQuarkusDowngradePrBranch()
- List jobParams = []
- jobParams.add(stringParam(name: 'NEW_VERSION', value: getQuarkusVersion()))
- jobParams.add(stringParam(name: 'PR_BRANCH', value: quarkusDowngradePrBranch))
-
- echo "Build ./${jobName} with parameters ${jobParams}"
- if (!isDryRun()) {
- def job = [:]
- try {
- // Retry 20 times every 5 min in order to assure seed job ran
- retry(20) {
- sleep 300
- echo "Build ./${jobName} with parameters ${jobParams}"
- job = build(job: "./${jobName}", parameters: jobParams, wait: true, propagate: false)
- }
-
- if (job.result != 'SUCCESS') {
- unstable("Downgrade quarkus version on repositories was not successful")
- } else {
- def prodRepositories = getProdRepositoriesToBranch()
- prodRepositories.each { repoConfig ->
- String repoAuthor = repoConfig.author?.name ?: readMainBranchConfig().git.author.name
- String repoCredsId = repoConfig.author?.credentials_id ?: readMainBranchConfig().git.author.credentials_id
- String repository = repoConfig.name
- String baseBranch = repoConfig.branch ?: 'main'
-
- dir(repository) {
- deleteDir()
- checkout(githubscm.resolveRepository(repository, repoAuthor, baseBranch, false, repoCredsId))
-
- // if quarkusDowngradePrBranch has been created by update-quarkus-all job, checkout it
- if (checkoutGitBranchIfExists(quarkusDowngradePrBranch, repoCredsId)) {
- // thefollowing script takes care of applying all patches needed when downgrading to Quarkus LTS
- // i.e., it will apply all patches found under .ci/environments/quarkus-lts/patches
- def updateQuarkusLtsScriptPath = '.ci/environments/update.sh'
- if (fileExists(updateQuarkusLtsScriptPath)) {
- sh "${updateQuarkusLtsScriptPath} quarkus-lts"
- } else {
- echo "[WARN] Unable to find '${updateQuarkusLtsScriptPath}' for '${repository}'"
- }
-
- pushIfChanged(quarkusDowngradePrBranch, repoCredsId, "Applied patches after Quarkus downgrade to ${getQuarkusVersion()}", "Quarkus LTS patches on ${quarkusDowngradePrBranch} have been applied")
- }
- }
- }
- }
- } catch (err) {
- unstable("Error executing update quarkus all...")
- String msg = "ERROR: Update quarkus all job on newly created prod branch was unsuccessful."
- if(job) {
- msg += "\nPlease review job ${job.absoluteUrl}..."
- }
- sendNotification(msg)
- }
- }
- }
- }
- }
- }
- post{
- unsuccessful {
- script {
- sendNotification("${getEcosystemMainProject()}: Branch Productization Pipeline job #${BUILD_NUMBER} was: ${currentBuild.currentResult}\nPlease look here: ${BUILD_URL}")
- }
- }
- success {
- script {
- sendNotification("${getEcosystemMainProject()}: Branch Productization Pipeline job #${BUILD_NUMBER} was: ${currentBuild.currentResult}")
- }
- }
- }
-}
-
-
-void sendNotification(String body) {
- echo 'Send Notification'
- echo body
- if (!isDryRun()) {
- emailext body: body, subject: "[${getEcosystemProductizedBranch()}] ${getEcosystemMainProject()}",
- to: env.CI_EMAIL_TO
- }
-}
-
-// Retrieve job parameters keys or values
-
-String getBranchParameterKey(String projectName) {
- return "${projectName}_RELEASE_BRANCH".toUpperCase()
-}
-
-String getProdBranchSuffixParameterKey(String projectName) {
- def key = "${projectName}_PROD_BRANCH_SUFFIX".toUpperCase()
- return params."${key}"
-}
-
-def getProjectUpdateVersionKeys() {
- return params.findAll{ it.key.contains('_UPDATE_VERSION') }
-}
-
-String getQuarkusVersion() {
- return params.QUARKUS_VERSION
-}
-
-String getQuarkusDowngradePrBranch() {
- return params.DOWNGRADE_QUARKUS_PR_BRANCH ?: "${getEcosystemProductizedBranch()}-${getQuarkusVersion()}-downgrade"
-}
-
-Boolean isDryRun() {
- return params.DRY_RUN
-}
-
-
-def getAdditionalDefaultBuildMavenOpts() {
- return params.ADDITIONAL_BUILD_MAVEN_OPTS ?: ''
-}
-
-def getProjectsToRemoveFromBuildChainConfig() {
- return params.PROJECTS_TO_REMOVE_FROM_PR_CHECKS.split(',') as List ?: []
-}
-
-// Retrieve seed configuration
-
-String checkoutMainSeedConfigFileRepo() {
- assert env.SEED_CONFIG_FILE_GIT_REPOSITORY : 'Missing main seed config file Git Repository into the environment. Please check the job configuration.'
- assert env.SEED_CONFIG_FILE_GIT_AUTHOR_NAME : 'Missing main seed config file Git Author Name into the environment. Please check the job configuration.'
- assert env.SEED_CONFIG_FILE_GIT_AUTHOR_CREDS_ID : 'Missing main seed config file Git Author Credentials ID into the environment. Please check the job configuration.'
- assert env.SEED_CONFIG_FILE_GIT_BRANCH : 'Missing main seed config file Git Branch into the environment. Please check the job configuration.'
-
- String dirName = "seed-main-${env.SEED_CONFIG_FILE_GIT_REPOSITORY}"
- dir(dirName) {
- deleteDir()
- checkout(githubscm.resolveRepository(env.SEED_CONFIG_FILE_GIT_REPOSITORY, env.SEED_CONFIG_FILE_GIT_AUTHOR_NAME, env.SEED_CONFIG_FILE_GIT_BRANCH, false, env.SEED_CONFIG_FILE_GIT_AUTHOR_CREDS_ID))
- sh "git checkout ${env.SEED_CONFIG_FILE_GIT_BRANCH}"
- }
- return dirName
-}
-
-def readSeedConfig() {
- assert env.SEED_CONFIG_FILE_PATH : 'Missing main seed config file Path into the environment. Please check the job configuration.'
- if (!seedConfig) {
- dir(checkoutMainSeedConfigFileRepo()) {
- seedConfig = readYaml(file: "${env.SEED_CONFIG_FILE_PATH}")
- }
- }
- return seedConfig
-}
-
-String getProdBranchConfigFilePath() {
- return readSeedConfig().seed.config_file.path
-}
-
-String getMainBranchConfigFileGitAuthorCredentialsId() {
- return readSeedConfig().seed.config_file.git.author.credentials_id
-}
-
-String checkoutMainBranchSeedConfigFileRepo() {
- String dirName = "seed-branch-${getMainBranchConfigFileGitRepository()}"
- dir(dirName) {
- deleteDir()
- checkout(githubscm.resolveRepository(getMainBranchConfigFileGitRepository(), getMainBranchConfigFileGitAuthorName(), getMainBranchConfigFileGitBranch(), false, getMainBranchConfigFileGitAuthorCredentialsId()))
- sh "git checkout ${getMainBranchConfigFileGitBranch()}"
- }
- return dirName
-}
-
-def readMainBranchConfig() {
- if (!mainBranchConfig) {
- dir(checkoutMainBranchSeedConfigFileRepo()) {
- mainBranchConfig = readYaml(file: "${getProdBranchConfigFilePath()}")
- }
- }
- return mainBranchConfig
-}
-
-String getRepoNameCamelCase(String repo) {
- List words = repo.split('-') as List
- return words.collect { it.isEmpty() ? it : it.substring(0, 1).toUpperCase() + it.substring(1).toLowerCase() }.join(' ')
-}
-
-String getJobDefinitionFilePath() {
- return readMainBranchConfig().jenkins?.jobs_definition_file ?: '.ci/jenkins/dsl/jobs.groovy'
-}
-
-// Retrieve impacted projects
-
-List getEcosystemProjects() {
- return readSeedConfig().ecosystem.projects.findAll { ! (it.ignore_productization ? it.ignore_productization.toBoolean() : false) }
-}
-
-
-// Retrieve branch to productize starting from current repository/project
-
-String getProjectFromRepository(String repository) {
- return getEcosystemProjects().find { project -> project.regexs?.any { Pattern.compile(it).matcher(repository).matches() } }?.name
-}
-
-String getBranchFromProject(String projectName) {
- String key = getBranchParameterKey(projectName)
- assert params."${key}" : "No parameter ${key} available for project ${projectName}. Please check job configuration."
- return params."${key}"
-}
-
-String getBranchFromRepository(String repository) {
- def projectName = getProjectFromRepository(repository)
- if (projectName) {
- return getBranchFromProject(projectName)
- } else {
- error "Cannot retrieve repository from repository name: ${repository}. Make sure it matches pattern from ecosystem projects in the main config"
- }
-}
-
-// Retrieve repositories to branch
-
-String getMainBranchConfigFileGitRepository() {
- return readSeedConfig().seed.config_file.git.repository
-}
-
-String getMainBranchConfigFileGitAuthorName() {
- return readSeedConfig().seed.config_file.git.author.name
-}
-
-String getMainBranchConfigFileGitBranch() {
- return readSeedConfig().seed.config_file.git.branch
-}
-
-List getProdRepositoriesToBranch() {
- if (!repositoriesToBranch) {
- repositoriesToBranch = readMainBranchConfig().productized_repositories.findAll { getProjectFromRepository(it.name) }
- def branches = readSeedConfig().git.branches
- if (!branches) {
- error "No branches are defined in main configuration..."
- }
-
- def releaseBranch = branches.find { it.name == getEcosystemReleaseBranch() }?.name ?: ''
- if (!releaseBranch) {
- error "No ${getEcosystemReleaseBranch()} branch defined into the main configuration..."
- }
- repositoriesToBranch.each { repoConfig ->
- // set repoConfig.branch to the prod release one (e.g., 1.37.x) - input parameter
- def baseBranch = getBranchFromRepository(repoConfig.name)
- repoConfig.branch = repoConfig.branch ?: baseBranch ?: releaseBranch
-
- if (repoConfig.name == getMainBranchConfigFileGitRepository()) {
- String gitAuthor = repoConfig.author?.name ?: readMainBranchConfig().git.author.name
- if (gitAuthor == getMainBranchConfigFileGitAuthorName() &&
- repoConfig.branch == getEcosystemReleaseBranch()) {
- // we are already going to branch it with the setup of the branch config
- echo "Repository ${repoConfig.name} is branch config repository"
- repoConfig.is_branch_config_repo = true
- }
- }
- }
- }
- return repositoriesToBranch
-}
-
-// Create productized branches
-
-String getProductizedBranchFromProject(String projectName) {
- String suffix = getProdBranchSuffixParameterKey(projectName) ?: 'prod'
- return "${getBranchFromProject(projectName)}-${suffix}"
-}
-
-String getProductizedBranchFromRepository(String repository) {
- def projectName = getProjectFromRepository(repository)
- return getProductizedBranchFromProject(projectName)
-}
-
-void createBranches(List repositories) {
- repositories.each { repoConfig ->
- String repoName = repoConfig.name
- String baseBranch = repoConfig.branch
- String prodBranch = getProductizedBranchFromRepository(repoConfig.name)
- String gitAuthorCredsId = repoConfig.author?.credentials_id ?: readMainBranchConfig().git.author.credentials_id
- assert gitAuthorCredsId : "Cannot find any credentials Id for git author ${repoConfig.author.name}. Please check your branch seed config file."
- String gitAuthor = repoConfig.author?.name ?: readMainBranchConfig().git.author.name
-
- echo "Checkout repo ${gitAuthor}/${repoName} on branch ${baseBranch}"
- dir(repoName) {
- deleteDir()
- checkout(githubscm.resolveRepository(repoName, gitAuthor, baseBranch, false, gitAuthorCredsId))
- getOrCreateGitBranch(prodBranch, gitAuthorCredsId)
- }
- // Update the branch with the new productized branch
- repoConfig.branch = prodBranch
- }
-}
-
-// Update main seed config
-
-String getEcosystemMainProject() {
- return readSeedConfig().ecosystem.main_project
-}
-
-String getEcosystemProductizedBranch() {
- return getProductizedBranchFromProject(getEcosystemMainProject())
-}
-
-String getEcosystemReleaseBranch() {
- return getBranchFromProject(getEcosystemMainProject())
-}
-
-String getSeedRepoReleaseBranch() {
- return readSeedConfig().git.branches.find{ it -> it.name == getEcosystemReleaseBranch() }?.seed.branch ?: "seed-${getEcosystemMainProject()}-${getEcosystemReleaseBranch()}"
-}
-
-String getBranchConfigProductizedBranch() {
- // Check if repository already branched
- return (getProdRepositoriesToBranch().find { it -> it.is_branch_config_repo }?.branch) ?: "${getEcosystemMainProject()}-${getEcosystemProductizedBranch()}"
-}
-
-// Git utilities
-
-void getOrCreateGitBranch(String branch, String credentialsId) {
- sh 'git fetch origin'
- String branchRemoteResult = sh(script: "git ls-remote origin ${branch} | wc -l", returnStdout: true).trim()
- if (Integer.parseInt(branchRemoteResult) > 0) {
- echo "Branch ${branch} already exist ... will not create it. Checking out !"
- sh "git checkout ${branch}"
- } else {
- echo "Branch ${branch} does not exist ... gonna create it"
- githubscm.createBranch(branch)
- if (!isDryRun()) {
- githubscm.pushObject('origin', branch, credentialsId)
- }
- }
-}
-
-// If the provided branch exists, checkout it and return true, otherwise return false and skip checkout.
-boolean checkoutGitBranchIfExists(String branch, String credentialsId) {
- sh 'git fetch origin'
- String branchRemoteResult = sh(script: "git ls-remote origin ${branch} | wc -l", returnStdout: true).trim()
- if (Integer.parseInt(branchRemoteResult) > 0) {
- echo "Branch ${branch} exist. Checking out !"
- sh "git checkout ${branch}"
- return true
- }
-
- echo "Branch ${branch} does not exist... skipping checkout"
- return false
-}
-
-def pushIfChanged(String branch, String credentialsId, String commitMsg, String notificationMsg) {
- if (githubscm.isThereAnyChanges()) {
- sh 'git diff'
-
- if (!isDryRun()) {
- githubscm.commitChanges(commitMsg)
- githubscm.pushObject('origin', branch, credentialsId)
- }
-
- sendNotification(notificationMsg)
- } else {
- println '[WARN] No changes to commit'
- }
-}
-
diff --git a/dsl/seed/jenkinsfiles/Jenkinsfile.release.prepare b/dsl/seed/jenkinsfiles/Jenkinsfile.release.prepare
index 0a5514e7..10bcf835 100644
--- a/dsl/seed/jenkinsfiles/Jenkinsfile.release.prepare
+++ b/dsl/seed/jenkinsfiles/Jenkinsfile.release.prepare
@@ -9,7 +9,7 @@ repositoriesToBranch = []
pipeline {
agent {
- label 'rhel8 && !built-in'
+ label 'ubuntu'
}
environment {
@@ -54,7 +54,6 @@ pipeline {
// Update branch config
def branchConfig = readYaml file: branchConfigFile
branchConfig.repositories = repositories
- branchConfig.productized_branch = params.PRODUCTIZED_BRANCH
// Disable some environments when branching as they make no sense by default
branchConfig.environments.each { envName, envData ->
@@ -63,9 +62,6 @@ pipeline {
envData.enabled = false // Keep only quarkus-branch
}
}
- if (envData.ids.find { it == 'lts' }) {
- envData.enabled = params.PRODUCTIZED_BRANCH // LTS envs depend on param
- }
}
echo "Write dsl branch_config => ${branchConfig}"
diff --git a/dsl/seed/jenkinsfiles/Jenkinsfile.remove.branches b/dsl/seed/jenkinsfiles/Jenkinsfile.remove.branches
index be29f3e9..f42833b2 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 'kie-rhel8 && !built-in'
+ label 'ubuntu'
}
options{
diff --git a/dsl/seed/jenkinsfiles/Jenkinsfile.seed.branch b/dsl/seed/jenkinsfiles/Jenkinsfile.seed.branch
index 5e8891c7..b1e8fa29 100644
--- a/dsl/seed/jenkinsfiles/Jenkinsfile.seed.branch
+++ b/dsl/seed/jenkinsfiles/Jenkinsfile.seed.branch
@@ -17,7 +17,7 @@ import org.kie.jenkins.jobdsl.utils.SeedJobUtils
SeedJobUtils.createSeedJobTrigger(
this,
- "z-seed-trigger-${REPO_NAME}-job",
+ "z-seed-trigger-${JOB_DISPLAY_NAME}-job",
"${REPO_NAME}",
"${GIT_AUTHOR_NAME}",
"${GIT_AUTHOR_CREDS_ID}",
@@ -32,12 +32,12 @@ pipeline {
}
tools {
- jdk 'kie-jdk11'
+ jdk 'jdk_11_latest'
}
options {
timestamps()
- timeout(time: 60, unit: 'MINUTES')
+ timeout(time: 180, unit: 'MINUTES')
}
// parameters {
@@ -130,6 +130,7 @@ pipeline {
// Add other repos `jenkins_config_path` var (useful if multijob PR checks for example)
envProps += all_repos.collectEntries {
[
+ (generateEnvKey(it, 'job_display_name')): getRepoConfig(it).job_display_name,
(generateEnvKey(it, 'jenkins_config_path')): getRepoConfig(it).git.jenkins_config_path,
(generateEnvKey(it, 'git_branch')): getRepoConfig(it).git.branch,
(generateEnvKey(it, 'git_author')): getRepoConfig(it).git.author.name,
@@ -170,6 +171,7 @@ pipeline {
GIT_AUTHOR_CREDS_ID: repoConfig.git.author.credentials_id,
GIT_JENKINS_CONFIG_PATH: repoConfig.git.jenkins_config_path,
JOB_NAME: "${JOB_NAME}",
+ JOB_DISPLAY_NAME: repoConfig.job_display_name,
SEED_CONFIG_FILE_GIT_REPOSITORY: "${SEED_CONFIG_FILE_GIT_REPOSITORY}",
SEED_CONFIG_FILE_GIT_AUTHOR_NAME: "${SEED_CONFIG_FILE_GIT_AUTHOR_NAME}",
SEED_CONFIG_FILE_GIT_AUTHOR_CREDS_ID: "${SEED_CONFIG_FILE_GIT_AUTHOR_CREDS_ID}",
@@ -256,6 +258,8 @@ def getRepoConfig(String repository, String generationBranch = "${GENERATION_BRA
def cfg = scriptUtils.deepCopyObject(branchConfig)
cfg.remove('repositories')
+ cfg.job_display_name = repoConfig.job_display_name
+
// In case repository is disabled
cfg.disabled = repoConfig.disabled ?: false
@@ -309,7 +313,7 @@ void fillEnvProperties(Map envProperties, String envKeyPrefix, Map propsMap) {
}
if (value instanceof Map) {
fillEnvProperties(envProperties, newKey, value as Map)
- } else if ([List, net.sf.json.JSONArray].any { it.isAssignableFrom(value.getClass()) }) {
+ } else if (value instanceof List || value instanceof net.sf.json.JSONArray) {
envProperties.put(newKey, (value as List).collect { it }.join(','))
} else {
envProperties.put(newKey, value)
diff --git a/dsl/seed/jenkinsfiles/Jenkinsfile.seed.main b/dsl/seed/jenkinsfiles/Jenkinsfile.seed.main
index 4a56f485..98b7ead0 100644
--- a/dsl/seed/jenkinsfiles/Jenkinsfile.seed.main
+++ b/dsl/seed/jenkinsfiles/Jenkinsfile.seed.main
@@ -16,11 +16,11 @@ pipeline {
options {
timestamps()
- timeout(time: 20, unit: 'MINUTES')
+ timeout(time: 180, unit: 'MINUTES')
}
tools {
- jdk 'kie-jdk11'
+ jdk 'jdk_11_latest'
}
environment {
@@ -43,11 +43,9 @@ pipeline {
steps {
script {
def releaseProjects = readSeedConfig().ecosystem.projects.findAll { ! (it.ignore_release ? it.ignore_release.toBoolean() : false) }
- def productizeProjects = readSeedConfig().ecosystem.projects.findAll { ! (it.ignore_productization ? it.ignore_productization.toBoolean() : false) }
def envProperties = [
JENKINS_EMAIL_CREDS_ID: readSeedConfig().jenkins.email_creds_id,
RELEASE_PROJECTS: releaseProjects.collect { it.name }.join(','),
- PRODUCTIZED_PROJECTS: productizeProjects.collect { it.name }.join(','),
DEPENDENCY_PROJECTS: readSeedConfig().ecosystem.dependencies.collect { it.name } .join(','),
SEED_REPO: "${SEED_REPO}",
SEED_AUTHOR: "${SEED_AUTHOR}",
diff --git a/dsl/seed/jenkinsfiles/Jenkinsfile.seed.trigger b/dsl/seed/jenkinsfiles/Jenkinsfile.seed.trigger
index b7f55667..4fe35ac7 100644
--- a/dsl/seed/jenkinsfiles/Jenkinsfile.seed.trigger
+++ b/dsl/seed/jenkinsfiles/Jenkinsfile.seed.trigger
@@ -9,7 +9,7 @@ pipeline {
options {
timestamps()
- timeout(time: 20, unit: 'MINUTES')
+ timeout(time: 180, unit: 'MINUTES')
}
stages {
diff --git a/dsl/seed/jenkinsfiles/Jenkinsfile.tools.toggle-triggers b/dsl/seed/jenkinsfiles/Jenkinsfile.tools.toggle-triggers
index e0f3e68f..d63cd573 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 'kie-rhel8 && !built-in'
+ label 'ubuntu'
}
options {
diff --git a/dsl/seed/jenkinsfiles/Jenkinsfile.update-dependency-version b/dsl/seed/jenkinsfiles/Jenkinsfile.update-dependency-version
index 5d548061..969fd622 100644
--- a/dsl/seed/jenkinsfiles/Jenkinsfile.update-dependency-version
+++ b/dsl/seed/jenkinsfiles/Jenkinsfile.update-dependency-version
@@ -7,25 +7,17 @@ pipelineProperties = [:]
pipeline {
agent {
- label 'rhel8 && !built-in'
- }
-
- tools {
- maven env.BUILD_MAVEN_TOOL
- jdk env.BUILD_JDK_TOOL
+ docker {
+ image env.AGENT_DOCKER_BUILDER_IMAGE
+ args env.AGENT_DOCKER_BUILDER_ARGS
+ }
}
options {
timeout(time: 30, unit: 'MINUTES')
}
- // parameters {
- // For parameters, check into .jenkins/dsl/jobs.groovy file
- // }
-
environment {
- // Static env is defined into .jenkins/dsl/jobs.groovy file
-
KOGITO_CI_EMAIL_TO = credentials("${JENKINS_EMAIL_CREDS_ID}")
}
diff --git a/dsl/seed/jenkinsfiles/Jenkinsfile.update-quarkus-platform b/dsl/seed/jenkinsfiles/Jenkinsfile.update-quarkus-platform
index d318e988..8843ea7a 100644
--- a/dsl/seed/jenkinsfiles/Jenkinsfile.update-quarkus-platform
+++ b/dsl/seed/jenkinsfiles/Jenkinsfile.update-quarkus-platform
@@ -3,14 +3,15 @@ import org.jenkinsci.plugins.workflow.libs.Library
import org.kie.jenkins.MavenCommand
-AGENT_LABEL="kie-rhel8 && docker && kie-mem16g && !built-in"
quarkusPlatformRepo="quarkus-platform"
branchCreated = false
pipeline {
-
agent {
- label "${AGENT_LABEL}"
+ docker {
+ image env.AGENT_DOCKER_BUILDER_IMAGE
+ args env.AGENT_DOCKER_BUILDER_ARGS
+ }
}
options{
@@ -18,14 +19,7 @@ pipeline {
timeout(time: 60, unit: 'MINUTES')
}
- tools {
- maven "${BUILD_MAVEN_TOOL}"
- jdk "${BUILD_JDK_TOOL}"
- }
-
environment {
- // Static env is defined into .jenkins/dsl/jobs.groovy file
-
KOGITO_CI_EMAIL_TO = credentials("${JENKINS_EMAIL_CREDS_ID}")
}
diff --git a/dsl/seed/jenkinsfiles/Jenkinsfile.update-quarkus-version b/dsl/seed/jenkinsfiles/Jenkinsfile.update-quarkus-version
index 000b75db..d1c28fcf 100644
--- a/dsl/seed/jenkinsfiles/Jenkinsfile.update-quarkus-version
+++ b/dsl/seed/jenkinsfiles/Jenkinsfile.update-quarkus-version
@@ -7,16 +7,10 @@ failingRepos = []
pipeline {
agent {
- label 'rhel8 && !built-in'
+ label 'ubuntu'
}
- // parameters {
- // For parameters, check into ./dsl/jobs.groovy file
- // }
-
environment {
- // Static env is defined into .jenkins/dsl/jobs.groovy file
-
KOGITO_CI_EMAIL_TO = credentials("${JENKINS_EMAIL_CREDS_ID}")
}
diff --git a/dsl/seed/jobs/root_jobs.groovy b/dsl/seed/jobs/root_jobs.groovy
index 95a21e80..f3e3dd00 100644
--- a/dsl/seed/jobs/root_jobs.groovy
+++ b/dsl/seed/jobs/root_jobs.groovy
@@ -30,8 +30,6 @@ KogitoJobTemplate.createPipelineJob(this, jobParams)?.with {
stringParam("${projectName}_VERSION".toUpperCase(), '', "${Utils.getRepoNameCamelCase(projectName)} dependency version which this will depend on")
}
}
-
- booleanParam('PRODUCTIZED_BRANCH', false, 'Is the created branch a productized one ?')
}
environmentVariables {
@@ -85,61 +83,3 @@ if (nonMainBranches) {
} else {
println 'No branches to remove ...'
}
-
-def jobParamsProd = [
- job: [
- name: '0-prepare-productized-branch',
- description: 'Prepare productized branch',
- ],
- git: [
- repository: Utils.getSeedRepo(this),
- author: Utils.getSeedAuthor(this),
- credentials: Utils.getSeedAuthorCredsId(this),
- branch: Utils.getSeedBranch(this),
- ],
- env: [:],
- jenkinsfile: 'dsl/seed/jenkinsfiles/Jenkinsfile.prod.prepare',
-]
-
-List communityReleaseBranches = ALL_BRANCHES.split(',').findAll { it != MAIN_BRANCH_NAME && !it.endsWith('-prod') }
-if (communityReleaseBranches) {
- KogitoJobTemplate.createPipelineJob(this, jobParamsProd)?.with {
- parameters {
- PRODUCTIZED_PROJECTS.split(',').each { projectName ->
- choiceParam("${projectName}_RELEASE_BRANCH".toUpperCase(), communityReleaseBranches, "${Utils.getRepoNameCamelCase(projectName)} community branch to which to create the productized branch from")
- stringParam("${projectName}_PROD_BRANCH_SUFFIX".toUpperCase(), 'prod', "${Utils.getRepoNameCamelCase(projectName)} productized branch suffix")
- stringParam("${projectName}_UPDATE_VERSION".toUpperCase(), '', "${Utils.getRepoNameCamelCase(projectName)} dependency version which this will depend on")
- }
-
- if (DEPENDENCY_PROJECTS) {
- DEPENDENCY_PROJECTS.split(',').each { projectName ->
- stringParam("${projectName}_UPDATE_VERSION".toUpperCase(), '', "${Utils.getRepoNameCamelCase(projectName)} dependency version which this will depend on")
- }
- }
-
- stringParam('QUARKUS_VERSION', '', 'Quarkus version to which to update all productized branches, usually latest LTS version')
- stringParam('DOWNGRADE_QUARKUS_PR_BRANCH', '', 'Which PR branch name to use for Quarkus downgrade? If none given, a name will be generated automatically.')
- stringParam('ADDITIONAL_BUILD_MAVEN_OPTS', '', 'Additional default maven opts for jenkins jobs, e.g., -Ddata-index-ephemeral.image=quay.io/kiegroup/kogito-data-index-ephemeral')
- stringParam('PROJECTS_TO_REMOVE_FROM_PR_CHECKS', '', 'Comma-separated list of projects (<owner>/<repo>) to be removed/disabled from build chain pull request config')
-
- booleanParam('DRY_RUN', false, 'If enabled no changes will be applied to remote branches')
- }
-
- environmentVariables {
- env('JENKINS_EMAIL_CREDS_ID', Utils.getJenkinsEmailCredsId(this))
-
- env('SEED_CONFIG_FILE_GIT_REPOSITORY', "${SEED_CONFIG_FILE_GIT_REPOSITORY}")
- env('SEED_CONFIG_FILE_GIT_AUTHOR_NAME', "${SEED_CONFIG_FILE_GIT_AUTHOR_NAME}")
- env('SEED_CONFIG_FILE_GIT_AUTHOR_CREDS_ID', "${SEED_CONFIG_FILE_GIT_AUTHOR_CREDS_ID}")
- env('SEED_CONFIG_FILE_GIT_BRANCH', "${SEED_CONFIG_FILE_GIT_BRANCH}")
- env('SEED_CONFIG_FILE_PATH', "${SEED_CONFIG_FILE_PATH}")
-
- env('SEED_REPO', Utils.getSeedRepo(this))
- env('SEED_AUTHOR', Utils.getSeedAuthor(this))
- env('SEED_BRANCH', Utils.getSeedBranch(this))
- env('SEED_CREDENTIALS_ID', Utils.getSeedAuthorCredsId(this))
- }
- }
-} else {
- println 'No branches to productize ...'
-}
\ No newline at end of file
diff --git a/dsl/seed/jobs/seed_job_branch.groovy b/dsl/seed/jobs/seed_job_branch.groovy
index c99c1774..fd30e850 100644
--- a/dsl/seed/jobs/seed_job_branch.groovy
+++ b/dsl/seed/jobs/seed_job_branch.groovy
@@ -45,7 +45,7 @@ SeedJobUtils.createSeedJobTrigger(
// Configuration of the seed and generated jobs is done via `dsl/seed/config.yaml`
pipelineJob("${GENERATION_BRANCH}/${JOB_NAME}") {
- description("This job creates all needed Jenkins jobs on branch ${GENERATION_BRANCH}. DO NOT USE FOR TESTING !!!! See https://github.com/kiegroup/kogito-pipelines/blob/main/docs/jenkins.md#test-specific-jobs")
+ description("This job creates all needed Jenkins jobs on branch ${GENERATION_BRANCH}. DO NOT USE FOR TESTING !!!! See https://github.com/apache/incubator-kie-kogito-pipelines/blob/main/docs/jenkins.md#test-specific-jobs")
logRotator {
numToKeep(5)
@@ -76,7 +76,7 @@ pipelineJob("${GENERATION_BRANCH}/${JOB_NAME}") {
env('SEED_AUTHOR_CREDS_ID', Utils.getSeedAuthorCredsId(this))
env('SEED_BRANCH', Utils.getSeedBranch(this))
- env('AGENT_LABEL', Utils.isProdEnvironment(this) ? 'kie-rhel8 && !built-in' : 'kie-rhel8-priority')
+ env('AGENT_LABEL', 'ubuntu')
env('JENKINS_EMAIL_CREDS_ID', Utils.getJenkinsEmailCredsId(this))
}
diff --git a/dsl/seed/jobs/seed_job_main.groovy b/dsl/seed/jobs/seed_job_main.groovy
index c43c2d3b..3d4a10b7 100644
--- a/dsl/seed/jobs/seed_job_main.groovy
+++ b/dsl/seed/jobs/seed_job_main.groovy
@@ -3,7 +3,7 @@
import org.kie.jenkins.jobdsl.utils.SeedJobUtils
import org.kie.jenkins.jobdsl.Utils
-KOGITO_PIPELINES_REPOSITORY = 'kogito-pipelines'
+KOGITO_PIPELINES_REPOSITORY = 'incubator-kie-kogito-pipelines'
DEFAULT_CREDENTIALS_ID = 'kie-ci'
String getSeedRepo() {
@@ -11,7 +11,7 @@ String getSeedRepo() {
}
String getSeedAuthor() {
- return Utils.getSeedAuthor(this) ?: 'kiegroup'
+ return Utils.getSeedAuthor(this) ?: 'apache'
}
String getSeedAuthorCredsId() {
@@ -27,7 +27,7 @@ String getSeedConfigFileGitRepository() {
}
String getSeedConfigFileGitAuthorName() {
- return SEED_CONFIG_FILE_GIT_AUTHOR_NAME ?: 'kiegroup'
+ return SEED_CONFIG_FILE_GIT_AUTHOR_NAME ?: 'apache'
}
String getSeedConfigFileGitAuthorCredsId() {
@@ -72,7 +72,7 @@ SeedJobUtils.createSeedJobTrigger(
// Configuration of the seed and generated jobs is done via `dsl/seed/config.yaml`
pipelineJob('0-seed-job') {
- description('This job creates all needed Jenkins jobs. DO NOT USE FOR TESTING !!!! See https://github.com/kiegroup/kogito-pipelines/blob/main/docs/jenkins.md#test-specific-jobs')
+ description('This job creates all needed Jenkins jobs. DO NOT USE FOR TESTING !!!! See https://github.com/apache/incubator-kie-kogito-pipelines/blob/main/docs/jenkins.md#test-specific-jobs')
logRotator {
numToKeep(5)
@@ -83,7 +83,7 @@ pipelineJob('0-seed-job') {
}
environmentVariables {
- env('AGENT_LABEL', Utils.isProdEnvironment(this) ? 'kie-rhel8 && !built-in' : 'kie-rhel8-priority')
+ env('AGENT_LABEL', 'ubuntu')
env('JENKINS_EMAIL_CREDS_ID', Utils.getJenkinsEmailCredsId(this))
}
diff --git a/dsl/seed/scripts/seed_test.sh b/dsl/seed/scripts/seed_test.sh
index e0e36809..d5d01343 100755
--- a/dsl/seed/scripts/seed_test.sh
+++ b/dsl/seed/scripts/seed_test.sh
@@ -6,7 +6,7 @@
# #!/bin/bash -e
# file=$(mktemp)
# # For more usage of the script, use ./test.sh -h
-# curl -o ${file} https://raw.githubusercontent.com/kiegroup/kogito-pipelines/main/dsl/seed/scripts/seed_test.sh
+# curl -o ${file} https://raw.githubusercontent.com/apache/incubator-kie-kogito-pipelines/main/dsl/seed/scripts/seed_test.sh
# chmod u+x ${file}
# ${file} $@
@@ -24,7 +24,7 @@ usage() {
echo ' DSL_DEFAULT_MAIN_CONFIG_FILE_REPO Main config file repository (owner/repo)'
echo ' DSL_DEFAULT_MAIN_CONFIG_FILE_REF Main config file reference'
echo ' DSL_DEFAULT_MAIN_CONFIG_FILE_PATH Main config file path. Default is `.ci/jenkins/config/main.yaml`'
- echo ' DSL_DEFAULT_FALLBACK_MAIN_CONFIG_FILE_REPO Fallback main config repository (owner/repo). Default is `kiegroup/kogito-pipelines`'
+ echo ' DSL_DEFAULT_FALLBACK_MAIN_CONFIG_FILE_REPO Fallback main config repository (owner/repo). Default is `apache/incubator-kie-kogito-pipelines`'
echo ' DSL_DEFAULT_FALLBACK_MAIN_CONFIG_FILE_REF Fallback main config reference. Default is `main`'
echo ' DSL_DEFAULT_MAIN_CONFIG_FILE_LOCAL_PATH Main config file local path. If set, the other `DSL_DEFAULT_MAIN_CONFIG_FILE_*` envs will be ignored'
echo
@@ -39,7 +39,7 @@ usage() {
echo ' DSL_DEFAULT_SEED_REPO DSL seed repository (owner/repo). Else it will be calculated from the test repository.'
echo ' DSL_DEFAULT_SEED_REF DSL seed reference. Else it will be calculated from the branch config'
echo ' DSL_DEFAULT_SEED_REPO_LOCAL_PATH DSL seed repository local path. If set, the other `DSL_DEFAULT_SEED_*` envs will be ignored'
- echo ' DSL_DEFAULT_FALLBACK_SEED_REPO Fallback seed repository (owner/repo). Default is `kiegroup/kogito-pipelines`'
+ echo ' DSL_DEFAULT_FALLBACK_SEED_REPO Fallback seed repository (owner/repo). Default is `apache/incubator-kie-kogito-pipelines`'
echo ' DSL_DEFAULT_FALLBACK_SEED_REF Fallback seed reference. Default is `main`'
echo
echo ' Test repository configuration:'
@@ -179,9 +179,9 @@ branch_config_file_ref=${DSL_DEFAULT_BRANCH_CONFIG_FILE_REF}
branch_config_file_path=${DSL_DEFAULT_BRANCH_CONFIG_FILE_PATH}
branch_config_file_local_path=${DSL_DEFAULT_BRANCH_CONFIG_FILE_LOCAL_PATH:-''}
-fallback_main_config_file_repo=${DSL_DEFAULT_FALLBACK_MAIN_CONFIG_FILE_REPO:-'kiegroup/kogito-pipelines'}
+fallback_main_config_file_repo=${DSL_DEFAULT_FALLBACK_MAIN_CONFIG_FILE_REPO:-'apache/incubator-kie-kogito-pipelines'}
fallback_main_config_file_ref=${DSL_DEFAULT_FALLBACK_MAIN_CONFIG_FILE_REF:-'main'}
-fallback_branch_config_file_repo=${DSL_DEFAULT_FALLBACK_BRANCH_CONFIG_FILE_REPO:-'kiegroup/kogito-pipelines'}
+fallback_branch_config_file_repo=${DSL_DEFAULT_FALLBACK_BRANCH_CONFIG_FILE_REPO:-'apache/incubator-kie-kogito-pipelines'}
fallback_branch_config_file_ref=${DSL_DEFAULT_FALLBACK_BRANCH_CONFIG_FILE_REF:-'main'}
fallback_branch_config_name="${fallback_main_config_file_ref}"
@@ -315,7 +315,7 @@ seed_repo=${DSL_DEFAULT_SEED_REPO}
seed_ref=${DSL_DEFAULT_SEED_REF}
seed_local_path=${DSL_DEFAULT_SEED_REPO_LOCAL_PATH}
-fallback_seed_repo=${DSL_DEFAULT_FALLBACK_SEED_REPO:-'kiegroup/kogito-pipelines'}
+fallback_seed_repo=${DSL_DEFAULT_FALLBACK_SEED_REPO:-'apache/incubator-kie-kogito-pipelines'}
fallback_seed_ref=${DSL_DEFAULT_FALLBACK_SEED_REF}
if [ -z ${fallback_seed_ref} ]; then
fallback_seed_ref="$(yq -e ".git.branches[] | select(.name == \"${branch_config_name}\") | .seed.branch" ${main_config_file_path} 2> /dev/null)"
diff --git a/dsl/seed/src/main/groovy/org/kie/jenkins/jobdsl/KogitoJobTemplate.groovy b/dsl/seed/src/main/groovy/org/kie/jenkins/jobdsl/KogitoJobTemplate.groovy
index e4b84a25..79dfbf5b 100644
--- a/dsl/seed/src/main/groovy/org/kie/jenkins/jobdsl/KogitoJobTemplate.groovy
+++ b/dsl/seed/src/main/groovy/org/kie/jenkins/jobdsl/KogitoJobTemplate.groovy
@@ -44,7 +44,7 @@ class KogitoJobTemplate {
String jobFolderName = ''
def jobFolder = jobParams.job.folder
if (jobFolder) {
- if (![JenkinsFolder].any { it.isAssignableFrom(jobFolder.getClass()) }) {
+ if (!jobFolder instanceof JenkinsFolder) {
throw new RuntimeException('Folder is not of type org.kie.jenkins.jobdsl.model.JenkinsFolder')
}
@@ -182,14 +182,14 @@ class KogitoJobTemplate {
jobParams.pr = jobParams.pr ?: [:]
jobParams.pr.putAll ([
run_only_for_labels: (jobParams.pr.run_only_for_labels ?: []) + [KogitoConstants.LABEL_DSL_TEST],
- run_only_for_branches: [ jobParams.git.repository == 'optaplanner-quickstarts' ? 'development' : 'main' ],
- authorized_users: [ 'kiegroup' ],
- authorized_groups: [ 'kiegroup' ],
+ run_only_for_branches: [ VersionUtils.isOptaplannerQuickstartsProject(jobParams.git.repository) ? 'development' : 'main' ],
+ authorized_users: [ 'apache' ],
+ authorized_groups: [ 'apache' ],
])
// Enable PR test only if main branch
if (Utils.isMainBranch(script)) {
- jobParams.git.project_url = "https://github.com/kiegroup/${jobParams.pr.target_repository ?: jobParams.git.repository}/"
+ jobParams.git.project_url = "https://github.com/apache/${jobParams.pr.target_repository ?: jobParams.git.repository}/"
}
}
@@ -360,7 +360,7 @@ class KogitoJobTemplate {
jobParams.job.folder = prFolder
jobParams.env = jobParams.env ?: [:]
jobParams.pr = jobParams.pr ?: [:]
- JobParamsUtils.setupJobParamsDefaultMavenConfiguration(script, jobParams)
+ JobParamsUtils.setupJobParamsAgentDockerBuilderImageConfiguration(script, jobParams)
// Kept for backward compatibility
jobParams.job.name += testTypeId ? ".${testTypeId}" : ''
@@ -466,4 +466,94 @@ class KogitoJobTemplate {
return "(.*${RegexUtils.getRegexFirstLetterCase('jenkins')},?.*(rerun|run) ${idStr}${testType}.*)"
}
+ static def createPullRequestMultibranchPipelineJob(def script, String jenkinsFilePath = '.ci/jenkins/Jenkinsfile') {
+ String jobName = "${Utils.getJobDisplayName(script)}-pr"
+ PrintUtils.debug(script, "Create pull request multibranch job ${jobName}")
+ script.folder('pullrequest_jobs')
+ return script.multibranchPipelineJob("pullrequest_jobs/${Utils.getJobDisplayName(script)}-pr")?.with {
+ triggers {
+ periodicFolderTrigger {
+ // The maximum amount of time since the last indexing that is allowed to elapse before an indexing is triggered.
+ interval('5m')
+ }
+ }
+ factory {
+ workflowBranchProjectFactory {
+ scriptPath(jenkinsFilePath)
+ }
+ }
+ branchSources {
+ github {
+ id(Utils.getRepoName(script)) // IMPORTANT: use a constant and unique identifier
+ repoOwner(Utils.getGitAuthor(script))
+ repository(Utils.getRepoName(script))
+ checkoutCredentialsId(Utils.getGitAuthorCredsId(script))
+ scanCredentialsId(Utils.getGitAuthorCredsId(script))
+ // Build fork PRs (unmerged head).
+ buildForkPRHead(false)
+ // Build fork PRs (merged with base branch).
+ buildForkPRMerge(true)
+ // Build origin branches.
+ buildOriginBranch(false)
+ // Build origin branches also filed as PRs.
+ buildOriginBranchWithPR(false)
+ // Build origin PRs (unmerged head).
+ buildOriginPRHead(false)
+ // Build origin PRs (merged with base branch).
+ buildOriginPRMerge(true)
+ }
+ }
+ orphanedItemStrategy {
+ discardOldItems {
+ daysToKeep(10)
+ }
+ }
+ }
+ }
+
+ static def createBranchMultibranchPipelineJob(def script, String jobName = '', String jenkinsFilePath = '.ci/jenkins/Jenkinsfile') {
+ jobName = jobName ?: Utils.getJobDisplayName(script)
+ PrintUtils.debug(script, "Create branch multibranch job ${jobName}")
+ script.folder('branch_jobs')
+ return script.multibranchPipelineJob("branch_jobs/${jobName}")?.with {
+ triggers {
+ periodicFolderTrigger {
+ // The maximum amount of time since the last indexing that is allowed to elapse before an indexing is triggered.
+ interval('5m')
+ }
+ }
+ factory {
+ workflowBranchProjectFactory {
+ scriptPath(jenkinsFilePath)
+ }
+ }
+ branchSources {
+ github {
+ id(Utils.getRepoName(script)) // IMPORTANT: use a constant and unique identifier
+ repoOwner(Utils.getGitAuthor(script))
+ repository(Utils.getRepoName(script))
+ checkoutCredentialsId(Utils.getGitAuthorCredsId(script))
+ scanCredentialsId(Utils.getGitAuthorCredsId(script))
+ // Build fork PRs (unmerged head).
+ buildForkPRHead(false)
+ // Build fork PRs (merged with base branch).
+ buildForkPRMerge(false)
+ // Build origin branches.
+ buildOriginBranch(true)
+ // Build origin branches also filed as PRs.
+ buildOriginBranchWithPR(false)
+ // Build origin PRs (unmerged head).
+ buildOriginPRHead(false)
+ // Build origin PRs (merged with base branch).
+ buildOriginPRMerge(false)
+ }
+ }
+ orphanedItemStrategy {
+ discardOldItems {
+ daysToKeep(10)
+ }
+ }
+ }
+ }
+
}
diff --git a/dsl/seed/src/main/groovy/org/kie/jenkins/jobdsl/KogitoJobUtils.groovy b/dsl/seed/src/main/groovy/org/kie/jenkins/jobdsl/KogitoJobUtils.groovy
index 929adcdc..72ba7b3f 100644
--- a/dsl/seed/src/main/groovy/org/kie/jenkins/jobdsl/KogitoJobUtils.groovy
+++ b/dsl/seed/src/main/groovy/org/kie/jenkins/jobdsl/KogitoJobUtils.groovy
@@ -42,8 +42,8 @@ class KogitoJobUtils {
*
*/
static def createVersionUpdateToolsJob(def script, String repository, String dependencyName, def mavenUpdate = [:], def gradleUpdate = [:], def filepathReplaceRegex = [], def scriptCalls = []) {
- def jobParams = JobParamsUtils.getSeedJobParams(script, "update-${dependencyName.toLowerCase()}-${repository}", JobType.TOOLS, 'Jenkinsfile.update-dependency-version', "Update ${dependencyName} version for ${repository}")
- JobParamsUtils.setupJobParamsDefaultMavenConfiguration(script, jobParams)
+ def jobParams = JobParamsUtils.getSeedJobParams(script, "update-${dependencyName.toLowerCase()}-${Utils.getRepositoryJobDisplayName(script, repository)}", JobType.TOOLS, 'Jenkinsfile.update-dependency-version', "Update ${dependencyName} version for ${repository}")
+ JobParamsUtils.setupJobParamsAgentDockerBuilderImageConfiguration(script, jobParams)
// Setup correct checkout branch for pipelines
jobParams.env.putAll([
JENKINS_EMAIL_CREDS_ID: Utils.getJenkinsEmailCredsId(script),
@@ -140,7 +140,7 @@ class KogitoJobUtils {
*/
static def createQuarkusPlatformUpdateToolsJob(def script, String project) {
def jobParams = JobParamsUtils.getSeedJobParams(script, "update-quarkus-platform-${project}", JobType.TOOLS, 'Jenkinsfile.update-quarkus-platform', "Update Quarkus platform with new version of ${project}")
- JobParamsUtils.setupJobParamsDefaultMavenConfiguration(script, jobParams)
+ JobParamsUtils.setupJobParamsAgentDockerBuilderImageConfiguration(script, jobParams)
jobParams.env.putAll([
JENKINS_EMAIL_CREDS_ID: Utils.getJenkinsEmailCredsId(script),
BUILD_BRANCH_NAME: Utils.getGitBranch(script),
@@ -178,7 +178,7 @@ class KogitoJobUtils {
*
*/
static def createEnvironmentIntegrationBranchNightlyJob(def script, String envName, def scriptCalls = [], Closure defaultJobParamsGetter = JobParamsUtils.DEFAULT_PARAMS_GETTER) {
- def jobParams = JobParamsUtils.getSeedJobParamsWithEnv(script, "${Utils.getRepoName(script)}.integration", JobType.NIGHTLY, envName, 'Jenkinsfile.environment.integration-branch', "Generic Integration branch job for specific environment", defaultJobParamsGetter)
+ def jobParams = JobParamsUtils.getSeedJobParamsWithEnv(script, "${Utils.getJobDisplayName(script)}.integration", JobType.NIGHTLY, envName, 'Jenkinsfile.environment.integration-branch', "Generic Integration branch job for specific environment", defaultJobParamsGetter)
jobParams.triggers = jobParams.triggers ?: [ cron : '@midnight' ] // To remove once environment nightlies are managed by main nightly pipeline
if (!envName) {
throw new RuntimeException('Please provide a non-empty environment to generate an integration branch job...')
@@ -237,7 +237,7 @@ class KogitoJobUtils {
* See also `createBranchBuildChainJob` method
*/
static def createNightlyBuildChainBuildAndTestJob(def script, String envName = '', String repository, Map extraEnv = [:], boolean enableNotification = false, Closure defaultJobParamsGetter = JobParamsUtils.DEFAULT_PARAMS_GETTER) {
- def jobParams = JobParamsUtils.getSeedJobParamsWithEnv(script, "${repository}.build-and-test", JobType.NIGHTLY, envName, KogitoConstants.BUILD_CHAIN_JENKINSFILE, "Build & Test for ${repository} using the build-chain", defaultJobParamsGetter)
+ def jobParams = JobParamsUtils.getSeedJobParamsWithEnv(script, "${Utils.getRepositoryJobDisplayName(script, repository)}.build-and-test", JobType.NIGHTLY, envName, KogitoConstants.BUILD_CHAIN_JENKINSFILE, "Build & Test for ${repository} using the build-chain", defaultJobParamsGetter)
jobParams.env.putAll(extraEnv)
jobParams.triggers = jobParams.triggers ?: [ cron : '@midnight' ] // To remove once environment nightlies are managed by main nightly pipeline
return createBranchBuildChainJob(script, jobParams, repository, enableNotification, envName)
@@ -258,7 +258,7 @@ class KogitoJobUtils {
* See also `createBranchBuildChainJob` method
*/
static def createNightlyBuildChainBuildAndDeployJob(def script, String envName = '', String repository, Map extraEnv = [:], boolean enableNotification = false, Closure defaultJobParamsGetter = JobParamsUtils.DEFAULT_PARAMS_GETTER) {
- def jobParams = JobParamsUtils.getSeedJobParamsWithEnv(script, "${repository}.build-and-deploy", JobType.NIGHTLY, envName, KogitoConstants.BUILD_CHAIN_JENKINSFILE, "Build & Test for ${repository} using the build-chain", defaultJobParamsGetter)
+ def jobParams = JobParamsUtils.getSeedJobParamsWithEnv(script, "${Utils.getRepositoryJobDisplayName(script, repository)}.build-and-deploy", JobType.NIGHTLY, envName, KogitoConstants.BUILD_CHAIN_JENKINSFILE, "Build & Test for ${repository} using the build-chain", defaultJobParamsGetter)
JobParamsUtils.setupJobParamsDeployConfiguration(script, jobParams)
jobParams.env.putAll(extraEnv)
return createBranchBuildChainJob(script, jobParams, repository, enableNotification, envName)
@@ -285,7 +285,7 @@ class KogitoJobUtils {
*
*/
static def createBuildChainIntegrationJob(def script, String envName, String repository, boolean enableNotification = false, Closure defaultJobParamsGetter = JobParamsUtils.DEFAULT_PARAMS_GETTER) {
- def jobParams = JobParamsUtils.getSeedJobParamsWithEnv(script, "${repository}.integration", JobType.NIGHTLY, envName, KogitoConstants.BUILD_CHAIN_JENKINSFILE, "Integration with Quarkus for ${repository} using the build-chain", defaultJobParamsGetter)
+ def jobParams = JobParamsUtils.getSeedJobParamsWithEnv(script, "${Utils.getRepositoryJobDisplayName(script, repository)}.integration", JobType.NIGHTLY, envName, KogitoConstants.BUILD_CHAIN_JENKINSFILE, "Integration with Quarkus for ${repository} using the build-chain", defaultJobParamsGetter)
if (!envName) {
throw new RuntimeException('Please provide a non-empty environment to generate an integration branch job...')
}
@@ -303,7 +303,6 @@ class KogitoJobUtils {
* - notificationJobName: Identifier for the notification stream
*/
static def createBranchBuildChainJob(def script, def jobParams, String repository, boolean enableNotification = false, String notificationJobName = '') {
- JobParamsUtils.setupJobParamsDefaultMavenConfiguration(script, jobParams)
JobParamsUtils.setupJobParamsBuildChainConfiguration(script, jobParams, repository, 'branch', notificationJobName)
jobParams.parametersClosures.add({
diff --git a/dsl/seed/src/main/groovy/org/kie/jenkins/jobdsl/Utils.groovy b/dsl/seed/src/main/groovy/org/kie/jenkins/jobdsl/Utils.groovy
index 9514b2bd..d04c3a47 100644
--- a/dsl/seed/src/main/groovy/org/kie/jenkins/jobdsl/Utils.groovy
+++ b/dsl/seed/src/main/groovy/org/kie/jenkins/jobdsl/Utils.groovy
@@ -48,10 +48,6 @@ class Utils {
static boolean hasBindingValuesStartingWith(def script, String keyPrefix) {
return getBindingValuesStartingWith(script, keyPrefix).size() > 0
}
-
- static boolean isProductizedBranch(def script) {
- return getBindingValue(script, 'PRODUCTIZED_BRANCH').toBoolean()
- }
static String getGenerationBranch(def script) {
return getBindingValue(script, 'GENERATION_BRANCH')
@@ -67,6 +63,14 @@ class Utils {
return getBindingValue(script, 'REPO_NAME')
}
+ static String getRepositoryJobDisplayName(def script, String repository) {
+ return getBindingValue(script, "${repository.toUpperCase()}_JOB_DISPLAY_NAME") ?: repository
+ }
+
+ static String getJobDisplayName(def script) {
+ return getRepositoryJobDisplayName(script, getRepoName(script))
+ }
+
static String getGitBranch(def script) {
return getBindingValue(script, 'GIT_BRANCH')
}
@@ -102,9 +106,9 @@ class Utils {
static boolean isProdEnvironment(def script) {
// Check for all possible `GIT_AUTHOR_NAME` variables
- return getSeedAuthor(script) == 'kiegroup' &&
- (hasGitAuthor(script) ? getGitAuthor(script) == 'kiegroup' : true) &&
- (hasSeedConfigFileGitAuthor(script) ? getSeedConfigFileGitAuthor(script) == 'kiegroup' : true)
+ return getSeedAuthor(script) == 'kieapachegroup' &&
+ (hasGitAuthor(script) ? getGitAuthor(script) == 'apache' : true) &&
+ (hasSeedConfigFileGitAuthor(script) ? getSeedConfigFileGitAuthor(script) == 'apache' : true)
}
static boolean isTestEnvironment(def script) {
@@ -223,6 +227,14 @@ class Utils {
return getBindingValue(script, 'MAVEN_QUARKUS_PLATFORM_REPOSITORY_CREDS_ID')
}
+ static String getJenkinsAgentDockerImage(def script, String imageId) {
+ return getBindingValue(script, "JENKINS_AGENT_DOCKER_${imageId.toUpperCase()}_IMAGE")
+ }
+
+ static String getJenkinsAgentDockerArgs(def script, String imageId) {
+ return getBindingValue(script, "JENKINS_AGENT_DOCKER_${imageId.toUpperCase()}_ARGS")
+ }
+
static String getSeedJenkinsfilePath(def script, String jenkinsfileName) {
return "${KogitoConstants.SEED_JENKINSFILES_PATH}/${jenkinsfileName}"
}
@@ -263,4 +275,8 @@ class Utils {
return words.collect { it.isEmpty() ? it : it.substring(0, 1).toUpperCase() + it.substring(1).toLowerCase() }.join(' ')
}
+ static boolean isDeployDisabled(def script) {
+ return getBindingValue(script, 'DISABLE_DEPLOY').toBoolean() || isTestEnvironment(script)
+ }
+
}
diff --git a/dsl/seed/src/main/groovy/org/kie/jenkins/jobdsl/utils/JobParamsUtils.groovy b/dsl/seed/src/main/groovy/org/kie/jenkins/jobdsl/utils/JobParamsUtils.groovy
index 7c946f03..d1da98aa 100644
--- a/dsl/seed/src/main/groovy/org/kie/jenkins/jobdsl/utils/JobParamsUtils.groovy
+++ b/dsl/seed/src/main/groovy/org/kie/jenkins/jobdsl/utils/JobParamsUtils.groovy
@@ -16,7 +16,7 @@ class JobParamsUtils {
repository = repository ?: Utils.getRepoName(script)
def jobParams = [
job: [
- name: repository,
+ name: Utils.getRepositoryJobDisplayName(script, repository),
],
git: [
author: Utils.getGitAuthor(script),
@@ -135,9 +135,10 @@ class JobParamsUtils {
static def setupJobParamsBuildChainConfiguration(def script, def jobParams, String repository, String buildchainType, String notificationJobName) {
setupJobParamsSeedPipelineConfiguration(script, jobParams, KogitoConstants.BUILD_CHAIN_JENKINSFILE)
+ setupJobParamsAgentDockerBuilderImageConfiguration(script, jobParams)
jobParams.env = jobParams.env ?: [:]
jobParams.env.putAll([
- BUILDCHAIN_PROJECT: "kiegroup/${repository}",
+ BUILDCHAIN_PROJECT: "apache/${repository}",
BUILDCHAIN_TYPE: buildchainType,
BUILDCHAIN_CONFIG_REPO: Utils.getBuildChainConfigRepo(script) ?: Utils.getSeedRepo(script),
BUILDCHAIN_CONFIG_AUTHOR: Utils.getBuildChainConfigAuthor(script) ?: Utils.getSeedAuthor(script),
@@ -168,8 +169,14 @@ class JobParamsUtils {
static def setupJobParamsDeployConfiguration(def script, def jobParams) {
jobParams.env = jobParams.env ?: [:]
- jobParams.env.put('ENABLE_DEPLOY', 'true')
+ jobParams.env.put('ENABLE_DEPLOY', String.valueOf(!Utils.isDeployDisabled(script)))
addJobParamsEnvIfNotExisting(script, jobParams, 'MAVEN_DEPLOY_REPOSITORY', Utils.getMavenArtifactsUploadRepositoryUrl(script))
addJobParamsEnvIfNotExisting(script, jobParams, 'MAVEN_DEPLOY_REPOSITORY_CREDS_ID', Utils.getMavenArtifactsUploadRepositoryCredentialsId(script))
}
+
+ static def setupJobParamsAgentDockerBuilderImageConfiguration(def script, def jobParams) {
+ jobParams.env = jobParams.env ?: [:]
+ addJobParamsEnvIfNotExisting(script, jobParams, 'AGENT_DOCKER_BUILDER_IMAGE', Utils.getJenkinsAgentDockerImage(script, 'builder'))
+ addJobParamsEnvIfNotExisting(script, jobParams, 'AGENT_DOCKER_BUILDER_ARGS', Utils.getJenkinsAgentDockerArgs(script, 'builder'))
+ }
}
diff --git a/dsl/seed/src/main/groovy/org/kie/jenkins/jobdsl/utils/SeedJobUtils.groovy b/dsl/seed/src/main/groovy/org/kie/jenkins/jobdsl/utils/SeedJobUtils.groovy
index 8abdbb18..0d9b9a1b 100644
--- a/dsl/seed/src/main/groovy/org/kie/jenkins/jobdsl/utils/SeedJobUtils.groovy
+++ b/dsl/seed/src/main/groovy/org/kie/jenkins/jobdsl/utils/SeedJobUtils.groovy
@@ -15,7 +15,7 @@ class SeedJobUtils {
throw new RuntimeException('pathsToListen cannot be empty, else it would end up in an infinite loop ...');
}
def job = jenkinsScript.pipelineJob(jobName) {
- description('This job listens to pipelines repo and launch the seed job if needed. DO NOT USE FOR TESTING !!!! See https://github.com/kiegroup/kogito-pipelines/blob/main/docs/jenkins.md#test-specific-jobs')
+ description('This job listens to pipelines repo and launch the seed job if needed. DO NOT USE FOR TESTING !!!! See https://github.com/apache/incubator-kie-kogito-pipelines/blob/main/docs/jenkins.md#test-specific-jobs')
logRotator {
numToKeep(5)
@@ -38,12 +38,13 @@ class SeedJobUtils {
env('JOB_RELATIVE_PATH_TO_TRIGGER', jobRelativePathToTrigger)
env('LISTEN_TO_MODIFIED_PATHS', new groovy.json.JsonBuilder(pathsToListen).toString())
- env('AGENT_LABEL', Utils.isProdEnvironment(jenkinsScript) ? 'rhel8 && !built-in' : 'kie-rhel8-priority')
+ env('AGENT_LABEL', 'ubuntu')
}
definition {
cps {
script(jenkinsScript.readFileFromWorkspace('jenkinsfiles/Jenkinsfile.seed.trigger'))
+ sandbox()
}
}
diff --git a/dsl/seed/src/main/groovy/org/kie/jenkins/jobdsl/utils/VersionUtils.groovy b/dsl/seed/src/main/groovy/org/kie/jenkins/jobdsl/utils/VersionUtils.groovy
index 7a8adeda..ac9472b3 100644
--- a/dsl/seed/src/main/groovy/org/kie/jenkins/jobdsl/utils/VersionUtils.groovy
+++ b/dsl/seed/src/main/groovy/org/kie/jenkins/jobdsl/utils/VersionUtils.groovy
@@ -28,15 +28,15 @@ class VersionUtils {
}
static boolean isKogitoProject(String project) {
- return project.startsWith('kogito')
+ return project.startsWith('kogito') || project.startsWith('incubator-kie-kogito')
}
static boolean isOptaplannerProject(String project) {
- return project.startsWith('opta')
+ return project.startsWith('opta') || project.startsWith('incubator-kie-opta')
}
static boolean isDroolsProject(String project) {
- return project.startsWith('drools')
+ return project.startsWith('drools') || project.startsWith('incubator-kie-drools')
}
static boolean isDroolsOrOptaPlannerProject(String project) {
@@ -44,7 +44,7 @@ class VersionUtils {
}
static boolean isOptaplannerQuickstartsProject(String project) {
- return project == 'optaplanner-quickstarts'
+ return project == 'optaplanner-quickstarts' || project == 'incubator-kie-optaplanner-quickstarts'
}
}
diff --git a/dsl/seed/src/test/groovy/org/kie/jenkins/jobdsl/JobScriptsSpec.groovy b/dsl/seed/src/test/groovy/org/kie/jenkins/jobdsl/JobScriptsSpec.groovy
index 555ab0e3..0e7d7413 100644
--- a/dsl/seed/src/test/groovy/org/kie/jenkins/jobdsl/JobScriptsSpec.groovy
+++ b/dsl/seed/src/test/groovy/org/kie/jenkins/jobdsl/JobScriptsSpec.groovy
@@ -44,7 +44,6 @@ class JobScriptsSpec extends Specification {
envVars.put('GENERATION_BRANCH', 'GENERATION_BRANCH')
envVars.put('RELEASE_PROJECTS', 'RELEASE_PROJECTS')
- envVars.put('PRODUCTIZED_PROJECTS', 'PRODUCTIZED_PROJECTS')
envVars.put('DEPENDENCY_PROJECTS', 'DEPENDENCY_PROJECTS')
envVars.put('REPO_NAME', 'REPO_NAME')
envVars.put('GIT_MAIN_BRANCH', 'GIT_MAIN_BRANCH')
diff --git a/tools/update-kie7-version.sh b/tools/update-kie7-version.sh
index a1582c1c..6e5e2ec7 100755
--- a/tools/update-kie7-version.sh
+++ b/tools/update-kie7-version.sh
@@ -85,7 +85,7 @@ if [ "$FORK" = "" ]; then
fi
REPO=kogito-runtimes
-ORIGIN=kiegroup/$REPO
+ORIGIN=apache/$REPO
PR_FORK=$FORK/$REPO
PR_BRANCH=${BRANCH}-bump-${PREFIX}kie-$KIE_VERSION
@@ -120,7 +120,7 @@ if [ "$DRY_RUN" = "false" ]; then
git push -u ${GITHUB_URL}${PR_FORK} ${PR_BRANCH}
# Open a PR to kogito-runtimes using the commit as a title
- # e.g. see https://github.com/kiegroup/kogito-runtimes/pull/1200
+ # e.g. see https://github.com/apache/incubator-kie-kogito-runtimes/pull/1200
gh pr create --fill --base $BRANCH -R $ORIGIN
fi
diff --git a/tools/update-quarkus-versions.sh b/tools/update-quarkus-versions.sh
index ad4cf80a..19b72ee8 100755
--- a/tools/update-quarkus-versions.sh
+++ b/tools/update-quarkus-versions.sh
@@ -113,7 +113,7 @@ if [ "$FORK" = "" ]; then
exit 2
fi
-ORIGIN=kiegroup/$REPO
+ORIGIN=apache/$REPO
PR_FORK=$FORK/$REPO
PR_BRANCH=${BRANCH}-bump-quarkus-$QUARKUS_VERSION
@@ -183,6 +183,6 @@ if [ "$DRY_RUN" = "false" ]; then
git push -u ${GITHUB_URL}${PR_FORK} ${PR_BRANCH}
# Open a PR to kogito-runtimes using the commit as a title
- # e.g. see https://github.com/kiegroup/kogito-runtimes/pull/1200
+ # e.g. see https://github.com/apache/incubator-kie-kogito-runtimes/pull/1200
gh pr create --fill --base $BRANCH -R $ORIGIN
fi
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org