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


The following commit(s) were added to refs/heads/apache_migration by this push:
     new d970de45 Create multibranch kogito-ci-build image job (#1084)
d970de45 is described below

commit d970de4597d12fe484967be5784918933be76922
Author: Tristan Radisson <[email protected]>
AuthorDate: Tue Sep 19 10:40:37 2023 +0200

    Create multibranch kogito-ci-build image job (#1084)
    
    * Create multibranch kogito-ci-build image job
    
    * Update .ci/jenkins/config/branch.yaml
---
 ...-ci-image => Jenkinsfile.build-kogito-ci-image} | 10 ++---
 .ci/jenkins/config/branch.yaml                     |  5 ++-
 .ci/jenkins/dsl/jobs.groovy                        | 28 +++++++------
 .../kie/jenkins/jobdsl/KogitoJobTemplate.groovy    | 48 +++++++++++++++++++++-
 4 files changed, 70 insertions(+), 21 deletions(-)

diff --git a/.ci/jenkins/Jenkinsfile.tools.build-kogito-ci-image 
b/.ci/jenkins/Jenkinsfile.build-kogito-ci-image
similarity index 91%
rename from .ci/jenkins/Jenkinsfile.tools.build-kogito-ci-image
rename to .ci/jenkins/Jenkinsfile.build-kogito-ci-image
index bd64b18d..fba0135f 100644
--- a/.ci/jenkins/Jenkinsfile.tools.build-kogito-ci-image
+++ b/.ci/jenkins/Jenkinsfile.build-kogito-ci-image
@@ -13,8 +13,6 @@ pipeline {
         IMAGE_NAME = 'quay.io/kiegroup/kogito-ci-build'
         IMAGE_TAG = "${BRANCH_NAME}-build-${BUILD_NUMBER}"
         IMAGE_NAME_TAG = "${env.IMAGE_NAME}:${env.IMAGE_TAG}"
-        COMMIT_IMAGE_NAME_TAG = "${env.IMAGE_NAME}:${GIT_COMMIT}"
-        LATEST_IMAGE_NAME_TAG = "${env.IMAGE_NAME}:${BRANCH_NAME}-latest"
     }
 
     options {
@@ -38,14 +36,14 @@ pipeline {
 
                         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.COMMIT_IMAGE_NAME_TAG}
-                            docker tag ${env.IMAGE_NAME_TAG} 
${env.LATEST_IMAGE_NAME_TAG}
+                            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.COMMIT_IMAGE_NAME_TAG}
-                            docker --config ${DOCKER_CONFIG} push 
${env.LATEST_IMAGE_NAME_TAG}
+                            docker --config ${DOCKER_CONFIG} push 
${env.IMAGE_NAME}:${GIT_COMMIT}
+                            docker --config ${DOCKER_CONFIG} push 
${env.IMAGE_NAME}:${BRANCH_NAME}-latest
                         """
                     }
                 }
diff --git a/.ci/jenkins/config/branch.yaml b/.ci/jenkins/config/branch.yaml
index 8393c69c..d1509a9f 100644
--- a/.ci/jenkins/config/branch.yaml
+++ b/.ci/jenkins/config/branch.yaml
@@ -108,7 +108,10 @@ jenkins:
   agent:
     docker:
       builder:
-        image: quay.io/kiegroup/kogito-ci-build:latest
+        # 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: jdk_11_latest
diff --git a/.ci/jenkins/dsl/jobs.groovy b/.ci/jenkins/dsl/jobs.groovy
index 55ae43fc..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,25 +57,27 @@ 
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',
     ])
@@ -92,7 +94,7 @@ 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([
         JENKINS_EMAIL_CREDS_ID: "${JENKINS_EMAIL_CREDS_ID}",
@@ -105,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}",
 
@@ -124,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}",
 
@@ -141,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}",
@@ -159,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}",
 
@@ -226,7 +228,7 @@ 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')
+    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}",
@@ -241,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}",
 
@@ -267,7 +269,7 @@ 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}",
 
@@ -308,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/dsl/seed/src/main/groovy/org/kie/jenkins/jobdsl/KogitoJobTemplate.groovy 
b/dsl/seed/src/main/groovy/org/kie/jenkins/jobdsl/KogitoJobTemplate.groovy
index 019c8c2f..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
@@ -467,7 +467,8 @@ class KogitoJobTemplate {
     }
 
     static def createPullRequestMultibranchPipelineJob(def script, String 
jenkinsFilePath = '.ci/jenkins/Jenkinsfile') {
-        PrintUtils.debug(script, "Create pull request job 
${Utils.getJobDisplayName(script)}-pr")
+        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 {
@@ -510,4 +511,49 @@ class KogitoJobTemplate {
         }
     }
 
+    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)
+                }
+            }
+        }
+    }
+
 }


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

Reply via email to