You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kie.apache.org by ed...@apache.org on 2025/06/03 14:31:06 UTC

(incubator-kie-tools) branch 10.1.x updated: Jenkins Pipelines - Added new 6 jobs that were missing with code reference at getUpstreamImagesArtifactsList and blocking the release pipeline - jobs: kogito-data-index-ephemeral-image kogito-data-index-postgresql-image kogito-jobs-service-allinone-image kogito-jobs-service-ephemeral-image kogito-jobs-service-postgresql-image kogito-jit-runner-image

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

eduardocerqueira pushed a commit to branch 10.1.x
in repository https://gitbox.apache.org/repos/asf/incubator-kie-tools.git


The following commit(s) were added to refs/heads/10.1.x by this push:
     new 39ed931ebd7 Jenkins Pipelines - Added new 6 jobs that were missing with code reference at getUpstreamImagesArtifactsList and blocking the release pipeline - jobs: kogito-data-index-ephemeral-image kogito-data-index-postgresql-image kogito-jobs-service-allinone-image kogito-jobs-service-ephemeral-image kogito-jobs-service-postgresql-image kogito-jit-runner-image
39ed931ebd7 is described below

commit 39ed931ebd76a05d3da8395d6e354dfd0f6d0027
Author: Eduardo Cerqueira <ed...@aletyx.ai>
AuthorDate: Tue Jun 3 10:30:38 2025 -0400

    Jenkins Pipelines
    - Added new 6 jobs that were missing with code reference at getUpstreamImagesArtifactsList and blocking the release pipeline
    - jobs:
    kogito-data-index-ephemeral-image
    kogito-data-index-postgresql-image
    kogito-jobs-service-allinone-image
    kogito-jobs-service-ephemeral-image
    kogito-jobs-service-postgresql-image
    kogito-jit-runner-image
---
 .ci/jenkins/Jenkinsfile.release-build              | 162 +++++++++++++++++-
 .ci/jenkins/Jenkinsfile.release-candidate          |   2 +-
 .ci/jenkins/release-jobs/Jenkinsfile.kie-sandbox   |   2 +-
 .../Jenkinsfile.kogito-data-index-ephemeral-image  | 181 +++++++++++++++++++++
 .../Jenkinsfile.kogito-data-index-postgresql-image | 181 +++++++++++++++++++++
 .../Jenkinsfile.kogito-jit-runner-image            | 181 +++++++++++++++++++++
 .../Jenkinsfile.kogito-jobs-service-allinone-image | 181 +++++++++++++++++++++
 ...Jenkinsfile.kogito-jobs-service-ephemeral-image | 181 +++++++++++++++++++++
 ...enkinsfile.kogito-jobs-service-postgresql-image | 181 +++++++++++++++++++++
 .ci/jenkins/shared-scripts/releaseUtils.groovy     |  14 +-
 10 files changed, 1254 insertions(+), 12 deletions(-)

diff --git a/.ci/jenkins/Jenkinsfile.release-build b/.ci/jenkins/Jenkinsfile.release-build
index a5abbe2d728..c0d2b71ba4b 100644
--- a/.ci/jenkins/Jenkinsfile.release-build
+++ b/.ci/jenkins/Jenkinsfile.release-build
@@ -36,7 +36,7 @@ pipeline {
         string(name: 'BASE_REF', description: 'GitHub Base Ref (tag or branch)')
         string(name: 'RELEASE_VERSION', description: 'Release Version', defaultValue: '0.0.0')
         string(name: 'UPLOAD_ASSET_URL', description: 'Upload asset url', defaultValue: '')
-        string(name: 'RUNNERS', description: 'Runners', defaultValue: '{"chrome_extensions":"false","cors_proxy_image":"false","dashbuilder_viewer_image":"false","dev_deployment_base_image":"false","dev_deployment_dmn_form_webapp_image":"false","dev_deployment_quakus_blank_app_image":"false","dev_deployment_upload_service":"false","extended_services":"false","jbpm_quarkus_devui":"false","kie_sandbox_image":"false","kie_sandbox_accelerator_quarkus":"false","kie_sandbox_extended_services": [...]
+        string(name: 'RUNNERS', description: 'Runners', defaultValue: '{"chrome_extensions":"false","cors_proxy_image":"false","dashbuilder_viewer_image":"false","dev_deployment_base_image":"false","dev_deployment_dmn_form_webapp_image":"false","dev_deployment_quakus_blank_app_image":"false","dev_deployment_upload_service":"false","extended_services":"false","jbpm_quarkus_devui":"false","kie_sandbox_image":"false","kie_sandbox_accelerator_quarkus":"false","kie_sandbox_extended_services": [...]
         string(name: 'RELEASE_CANDIDATE_VERSION', description: 'Release Candidate Version', defaultValue: '')
     }
 
@@ -99,6 +99,72 @@ pipeline {
                     }
                 }
 
+                stage('KIE Kogito Data Index Ephemeral Image') {
+                    when {
+                        expression { env.KOGITO_DATA_INDEX_EPHEMERAL_IMAGE == 'true' }
+                    }
+                    steps {
+                        script {
+                            kogitoDataIndexEphemeralImageBuildJob()
+                        }
+                    }
+                }
+
+                stage('KIE Kogito Data Index Postgresql Image') {
+                    when {
+                        expression { env.KOGITO_DATA_INDEX_POSTGRESQL_IMAGE == 'true' }
+                    }
+                    steps {
+                        script {
+                            kogitoDataIndexPostgresqlImageBuildJob()
+                        }
+                    }
+                }
+
+                stage('KIE Kogito Jobs Service Allinone Image') {
+                    when {
+                        expression { env.KOGITO_JOBS_SERVICE_ALLINONE_IMAGE == 'true' }
+                    }
+                    steps {
+                        script {
+                            kogitoJobsServiceAllinoneImageBuildJob()
+                        }
+                    }
+                }
+
+                stage('KIE Kogito Jobs Service Ephemeral Image') {
+                    when {
+                        expression { env.KOGITO_JOBS_SERVICE_EPHEMERAL_IMAGE == 'true' }
+                    }
+                    steps {
+                        script {
+                            kogitoJobsServiceEphemeralImageBuildJob()
+                        }
+                    }
+                }
+
+                stage('KIE Kogito Jobs Service Postgresql Image') {
+                    when {
+                        expression { env.KOGITO_JOBS_SERVICE_POSTGRESQL_IMAGE == 'true' }
+                    }
+                    steps {
+                        script {
+                            kogitoJobsServicePostgresqlImageBuildJob()
+                        }
+                    }
+                }
+
+                stage('KIE Kogito Jit Runner Image') {
+                    when {
+                        expression { env.KOGITO_JIT_RUNNER_IMAGE == 'true' }
+                    }
+                    steps {
+                        script {
+                            kogitoJitRunnerImageBuildJob()
+                        }
+                    }
+                }
+
                 stage('KIE Sandbox Accelerator Quarkus') {
                     when {
                         expression { env.KIE_SANDBOX_ACCELERATOR_QUARKUS == 'true' }
@@ -475,8 +541,14 @@ def setRunners() {
     env.KIE_SANDBOX_ACCELERATOR_QUARKUS = runners.kie_sandbox_accelerator_quarkus
     env.KIE_SANDBOX_EXTENDED_SERVICES = runners.kie_sandbox_extended_services    
     env.KIE_SANDBOX_HELM_CHART = runners.kie_sandbox_helm_chart
-    env.KN_PLUGIN_WORKFLOW = runners.kn_plugin_workflow
-    env.KOGITO_BASE_BUILDER_IMAGE = runners.kogito_base_builder_image
+    env.KN_PLUGIN_WORKFLOW = runners.kn_plugin_workflow    
+    env.KOGITO_BASE_BUILDER_IMAGE = runners.kogito_base_builder_image   
+    env.KOGITO_DATA_INDEX_EPHEMERAL_IMAGE = runners.kogito_data_index_ephemeral_image
+    env.KOGITO_DATA_INDEX_POSTGRESQL_IMAGE = runners.kogito_data_index_postgresql_image
+    env.KOGITO_JOBS_SERVICE_ALLINONE_IMAGE = runners.kogito_jobs_service_allinone_image
+    env.KOGITO_JOBS_SERVICE_EPHEMERAL_IMAGE = runners.kogito_jobs_service_ephemeral_image
+    env.KOGITO_JOBS_SERVICE_POSTGRESQL_IMAGE = runners.kogito_jobs_service_postgresql_image
+    env.KOGITO_JIT_RUNNER_IMAGE = runners.kogito_jit_runner_image
     env.KOGITO_DB_MIGRATOR_TOOL = runners.kogito_db_migrator_tool
     env.KOGITO_MANAGEMENT_CONSOLE = runners.kogito_management_console
     env.KOGITO_SERVERLESS_OPERATOR = runners.kogito_serverless_operator
@@ -514,6 +586,12 @@ def printRunners() {
     echo "kie_sandbox_helm_chart: ${env.KIE_SANDBOX_HELM_CHART}"
     echo "kn_plugin_workflow: ${env.KN_PLUGIN_WORKFLOW}"
     echo "kogito_base_builder_image: ${env.KOGITO_BASE_BUILDER_IMAGE}"
+    echo "kogito_data_index_ephemeral_image: ${env.KOGITO_DATA_INDEX_EPHEMERAL_IMAGE}"
+    echo "kogito_data_index_postgresql_image: ${env.KOGITO_DATA_INDEX_POSTGRESQL_IMAGE}"
+    echo "kogito_jobs_service_allinone_image: ${env.KOGITO_JOBS_SERVICE_ALLINONE_IMAGE}"
+    echo "kogito_jobs_service_ephemeral_image: ${env.KOGITO_JOBS_SERVICE_EPHEMERAL_IMAGE}"
+    echo "kogito_jobs_service_postgresql_image: ${env.KOGITO_JOBS_SERVICE_POSTGRESQL_IMAGE}"
+    echo "kogito_jit_runner_image: ${env.KOGITO_JIT_RUNNER_IMAGE}"
     echo "kogito_db_migrator_tool: ${env.KOGITO_DB_MIGRATOR_TOOL}"
     echo "kogito_management_console: ${env.KOGITO_MANAGEMENT_CONSOLE}"
     echo "kogito_serverless_operator: ${env.KOGITO_SERVERLESS_OPERATOR}"
@@ -547,6 +625,84 @@ def kogitoBaseBuilderImageBuildJob() {
     ).result
 }
 
+def kogitoDataIndexEphemeralImageBuildJob() {
+    env.KOGITO_DATA_INDEX_EPHEMERAL_IMAGE_JOB_RESULT = build(
+        job: "KIE/kie-tools/${params.PIPELINE_PATH}/individual-release-artifacts-jobs/kogito-data-index-ephemeral-image",
+        parameters: [
+            booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"),
+            string(name: 'BASE_REF', value: "${params.BASE_REF}"),
+            string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}"),
+            string(name: 'RELEASE_CANDIDATE_VERSION', value: "${params.RELEASE_CANDIDATE_VERSION}"),
+            string(name: 'PIPELINE_PATH', value: "${params.PIPELINE_PATH}")
+        ]
+    ).result
+}
+
+def kogitoDataIndexPostgresqlImageBuildJob() {
+    env.KOGITO_DATA_INDEX_POSTGRESQL_IMAGE_JOB_RESULT = build(
+        job: "KIE/kie-tools/${params.PIPELINE_PATH}/individual-release-artifacts-jobs/kogito-data-index-postgresql-image",
+        parameters: [
+            booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"),
+            string(name: 'BASE_REF', value: "${params.BASE_REF}"),
+            string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}"),
+            string(name: 'RELEASE_CANDIDATE_VERSION', value: "${params.RELEASE_CANDIDATE_VERSION}"),
+            string(name: 'PIPELINE_PATH', value: "${params.PIPELINE_PATH}")
+        ]
+    ).result
+}
+
+def kogitoJobsServiceAllinoneImageBuildJob() {
+    env.KOGITO_JOBS_SERVICE_ALLINONE_IMAGE_JOB_RESULT = build(
+        job: "KIE/kie-tools/${params.PIPELINE_PATH}/individual-release-artifacts-jobs/kogito-jobs-service-allinone-image",
+        parameters: [
+            booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"),
+            string(name: 'BASE_REF', value: "${params.BASE_REF}"),
+            string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}"),
+            string(name: 'RELEASE_CANDIDATE_VERSION', value: "${params.RELEASE_CANDIDATE_VERSION}"),
+            string(name: 'PIPELINE_PATH', value: "${params.PIPELINE_PATH}")
+        ]
+    ).result
+}
+
+def kogitoJobsServiceEphemeralImageBuildJob() {
+    env.KOGITO_JOBS_SERVICE_EPHEMERAL_IMAGE_JOB_RESULT = build(
+        job: "KIE/kie-tools/${params.PIPELINE_PATH}/individual-release-artifacts-jobs/kogito-jobs-service-ephemeral-image",
+        parameters: [
+            booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"),
+            string(name: 'BASE_REF', value: "${params.BASE_REF}"),
+            string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}"),
+            string(name: 'RELEASE_CANDIDATE_VERSION', value: "${params.RELEASE_CANDIDATE_VERSION}"),
+            string(name: 'PIPELINE_PATH', value: "${params.PIPELINE_PATH}")
+        ]
+    ).result
+}
+
+def kogitoJobsServicePostgresqlImageBuildJob() {
+    env.KOGITO_JOBS_SERVICE_POSTGRESQL_IMAGE_JOB_RESULT = build(
+        job: "KIE/kie-tools/${params.PIPELINE_PATH}/individual-release-artifacts-jobs/kogito-jobs-service-postgresql-image",
+        parameters: [
+            booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"),
+            string(name: 'BASE_REF', value: "${params.BASE_REF}"),
+            string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}"),
+            string(name: 'RELEASE_CANDIDATE_VERSION', value: "${params.RELEASE_CANDIDATE_VERSION}"),
+            string(name: 'PIPELINE_PATH', value: "${params.PIPELINE_PATH}")
+        ]
+    ).result
+}
+
+def kogitoJitRunnerImageBuildJob() {
+    env.KOGITO_JIT_RUNNER_IMAGE_JOB_RESULT = build(
+        job: "KIE/kie-tools/${params.PIPELINE_PATH}/individual-release-artifacts-jobs/kogito-jit-runner-image",
+        parameters: [
+            booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"),
+            string(name: 'BASE_REF', value: "${params.BASE_REF}"),
+            string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}"),
+            string(name: 'RELEASE_CANDIDATE_VERSION', value: "${params.RELEASE_CANDIDATE_VERSION}"),
+            string(name: 'PIPELINE_PATH', value: "${params.PIPELINE_PATH}")
+        ]
+    ).result
+}
+
 def devDeploymentQuarkusBlankAppImageBuildJob() {
     env.DEV_DEPLOYMENT_QUARKUS_BLANK_APP_IMAGE_JOB_RESULT = build(
         job: "KIE/kie-tools/${params.PIPELINE_PATH}/individual-release-artifacts-jobs/dev-deployment-quarkus-blank-app-image",
diff --git a/.ci/jenkins/Jenkinsfile.release-candidate b/.ci/jenkins/Jenkinsfile.release-candidate
index d9a913aa9a2..1723bc63bd8 100644
--- a/.ci/jenkins/Jenkinsfile.release-candidate
+++ b/.ci/jenkins/Jenkinsfile.release-candidate
@@ -39,7 +39,7 @@ pipeline {
         string(name: 'RELEASE_VERSION', description: 'Release version', trim: true, defaultValue: '10.1.0')
         string(name: 'RELEASE_CANDIDATE_VERSION', description: 'Release candidate version', trim: true, defaultValue: '10.1.0-rc1')
         string(name: 'TAG_NAME', description: 'Tag name to be created', trim: true, defaultValue: '10.1.0-rc1')
-        string(description: 'Runners', name: 'RUNNERS', defaultValue: '{"chrome_extensions":"true","cors_proxy_image":"true","dashbuilder_viewer_image":"true","dev_deployment_base_image":"true","dev_deployment_dmn_form_webapp_image":"true","dev_deployment_quakus_blank_app_image":"true","dev_deployment_upload_service":"true","extended_services":"true","jbpm_quarkus_devui":"true","kie_sandbox_image":"true","kie_sandbox_accelerator_quarkus":"true","kie_sandbox_extended_services":"true","kie [...]
+        string(name: 'RUNNERS', description: 'Runners', defaultValue: '{"chrome_extensions":"true","cors_proxy_image":"true","dashbuilder_viewer_image":"true","dev_deployment_base_image":"true","dev_deployment_dmn_form_webapp_image":"true","dev_deployment_quakus_blank_app_image":"true","dev_deployment_upload_service":"true","extended_services":"true","jbpm_quarkus_devui":"true","kie_sandbox_image":"true","kie_sandbox_accelerator_quarkus":"true","kie_sandbox_extended_services":"true","kie [...]
         string(name: 'PIPELINE_PATH', description: 'Path to run the pipeline', defaultValue: '10.1.x/release')
     }
 
diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.kie-sandbox b/.ci/jenkins/release-jobs/Jenkinsfile.kie-sandbox
index 0432b7968b0..fd8970b0070 100644
--- a/.ci/jenkins/release-jobs/Jenkinsfile.kie-sandbox
+++ b/.ci/jenkins/release-jobs/Jenkinsfile.kie-sandbox
@@ -70,7 +70,7 @@ pipeline {
 
         PNPM_FILTER_STRING = '-F @kie-tools/kie-sandbox-webapp-image...'
 
-        MAVEN_ARGS = "-Dmaven.repo.local=${WORKSPACE}/.maven"
+        MAVEN_ARGS = "-B -s ${WORKSPACE}/kie-settings.xml"
     }
 
     stages {
diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.kogito-data-index-ephemeral-image b/.ci/jenkins/release-jobs/Jenkinsfile.kogito-data-index-ephemeral-image
new file mode 100644
index 00000000000..a3043f5fafd
--- /dev/null
+++ b/.ci/jenkins/release-jobs/Jenkinsfile.kogito-data-index-ephemeral-image
@@ -0,0 +1,181 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+pipeline {
+    agent {
+        docker {
+            image 'docker.io/apache/incubator-kie-tools-ci-build:10.1.999'
+            args '--shm-size=2g --privileged --group-add docker'
+        }
+    }
+
+    options {
+        timeout(time: 60, unit: 'MINUTES')
+    }
+
+    parameters {
+        booleanParam(name: 'DRY_RUN', description: 'Dry run', defaultValue: true)
+        string(name: 'RELEASE_VERSION', description: 'Release Version', defaultValue: '0.0.0')
+        string(name: 'BASE_REF', description: 'GitHub Base Ref (tag or branch)')
+        string(name: 'RELEASE_CANDIDATE_VERSION', description: 'Release Candidate Version', defaultValue: '')
+        string(name: 'PIPELINE_PATH', description: 'Path to run the pipeline')
+    }
+
+    environment {
+        KIE_TOOLS_BUILD__runLinters = 'false'
+        KIE_TOOLS_BUILD__runTests = 'false'
+        KIE_TOOLS_BUILD__runEndToEndTests = 'false'
+        KIE_TOOLS_BUILD__buildContainerImages = 'true'
+
+        KOGITO_DATA_INDEX_EPHEMERAL_IMAGE__registry = 'docker.io'
+        KOGITO_DATA_INDEX_EPHEMERAL_IMAGE__account = 'apache'
+        KOGITO_DATA_INDEX_EPHEMERAL_IMAGE__name = 'incubator-kie-kogito-data-index-ephemeral'
+        KOGITO_DATA_INDEX_EPHEMERAL_IMAGE__buildTag = "${params.RELEASE_VERSION}"
+
+        RELEASE_ARTIFACTS_DIR = "${WORKSPACE}/release-artifacts"
+        DOCKER_CONFIG = "${WORKSPACE}/.docker"
+        PNPM_FILTER_STRING = '-F @kie/kogito-data-index-ephemeral-image...'
+        MAVEN_ARGS = "-B -s ${WORKSPACE}/kie-settings.xml"
+    }
+
+    stages {
+        stage('Load local shared scripts') {
+            steps {
+                script {
+                    pipelineVars = load '.ci/jenkins/shared-scripts/pipelineVars.groovy'
+                    buildUtils = load '.ci/jenkins/shared-scripts/buildUtils.groovy'
+                    githubUtils = load '.ci/jenkins/shared-scripts/githubUtils.groovy'
+                    dockerUtils = load '.ci/jenkins/shared-scripts/dockerUtils.groovy'
+                    releaseUtils = load '.ci/jenkins/shared-scripts/releaseUtils.groovy'
+                }
+            }
+        }
+
+        stage('Start required services for build and tests (DinD, Xvfb, Fluxbox)') {
+            steps {
+                script {
+                    buildUtils.startRequiredServices()
+                }
+            }
+        }
+
+        stage('Clean workspace before build') {
+            steps {
+                cleanWs(deleteDirs: true, disableDeferredWipeout: true)
+            }
+        }
+
+        stage('Checkout kie-tools') {
+            steps {
+                dir('kie-tools') {
+                    script {
+                        githubUtils.checkoutRepo(
+                            "http://github.com/${pipelineVars.githubRepositorySlug}.git",
+                            "${params.BASE_REF}",
+                            "${pipelineVars.kieToolsBotGithubCredentialsId}"
+                        )
+                        githubUtils.setupGitConfig()
+                    }
+                }
+            }
+        }
+
+        stage('Setup PNPM') {
+            steps {
+                dir('kie-tools') {
+                    script {
+                        buildUtils.setupPnpm("${pipelineVars.mavenSettingsReleaseConfigFileId}")
+                    }
+                }
+            }
+        }
+
+        stage('PNPM Bootstrap') {
+            steps {
+                dir('kie-tools') {
+                    script {
+                        buildUtils.pnpmBootstrap(env.PNPM_FILTER_STRING, env.MAVEN_ARGS)
+                    }
+                }
+            }
+        }
+
+        stage('Build') {
+            steps {
+                dir('kie-tools') {
+                    script {
+                        env.KIE_TOOLS_BUILD__mavenDeploySkip = params.DRY_RUN ? 'true' : 'false'
+                        withEnv(["KIE_TOOLS_BUILD__mavenDeploySkip=${env.KIE_TOOLS_BUILD__mavenDeploySkip}"]) {
+                            buildUtils.pnpmBuild(env.PNPM_FILTER_STRING, env.MAVEN_ARGS)
+                        }
+                    }
+                }
+            }
+        }
+
+        stage('Setup release candidate artifacts') {
+            when {
+                expression { !params.DRY_RUN && params.RELEASE_CANDIDATE_VERSION != '' }
+            }
+            steps {
+                script {
+                    env.RELEASE_IMAGE_TAR_FILE = "apache-kie-${params.RELEASE_VERSION}-incubating-kogito-base-builder-image.tar.gz"
+
+                    sh """#!/bin/bash -el
+                    mkdir ${env.RELEASE_ARTIFACTS_DIR}
+                    docker save "${env.KOGITO_DATA_INDEX_EPHEMERAL_IMAGE__registry}/${env.KOGITO_DATA_INDEX_EPHEMERAL_IMAGE__account}/${env.KOGITO_DATA_INDEX_EPHEMERAL_IMAGE__name}:${params.RELEASE_VERSION}" | gzip > "${env.RELEASE_ARTIFACTS_DIR}/${env.RELEASE_IMAGE_TAR_FILE}"
+                    """.trim()
+                }
+            }
+        }
+
+        stage('Sign artifact for Apache release') {
+            when {
+                expression { !params.DRY_RUN && params.RELEASE_CANDIDATE_VERSION != '' }
+            }
+            steps {
+                dir("${env.RELEASE_ARTIFACTS_DIR}") {
+                    script {
+                        releaseUtils.setupSigningKey("${pipelineVars.asfReleaseGPGKeyCredentialsId}")
+                        releaseUtils.signArtifact("${env.RELEASE_IMAGE_TAR_FILE}")
+                    }
+                }
+            }
+        }
+
+        stage('Publish Release Candidate artifacts') {
+            when {
+                expression { !params.DRY_RUN && params.RELEASE_CANDIDATE_VERSION != '' }
+            }
+            steps {
+                script {
+                    releaseUtils.publishArtifacts(
+                        "${env.RELEASE_ARTIFACTS_DIR}",
+                        "${pipelineVars.asfReleaseStagingRepository}",
+                        "${params.RELEASE_CANDIDATE_VERSION}",
+                        "${pipelineVars.asfReleaseSVNStagingCredentialsId}"
+                    )
+                }
+            }
+        }
+    }
+
+    post {
+        always {
+            cleanWs(deleteDirs: true)
+        }
+    }
+}
diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.kogito-data-index-postgresql-image b/.ci/jenkins/release-jobs/Jenkinsfile.kogito-data-index-postgresql-image
new file mode 100644
index 00000000000..8338a9fd594
--- /dev/null
+++ b/.ci/jenkins/release-jobs/Jenkinsfile.kogito-data-index-postgresql-image
@@ -0,0 +1,181 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+pipeline {
+    agent {
+        docker {
+            image 'docker.io/apache/incubator-kie-tools-ci-build:10.1.999'
+            args '--shm-size=2g --privileged --group-add docker'
+        }
+    }
+
+    options {
+        timeout(time: 60, unit: 'MINUTES')
+    }
+
+    parameters {
+        booleanParam(name: 'DRY_RUN', description: 'Dry run', defaultValue: true)
+        string(name: 'RELEASE_VERSION', description: 'Release Version', defaultValue: '0.0.0')
+        string(name: 'BASE_REF', description: 'GitHub Base Ref (tag or branch)')
+        string(name: 'RELEASE_CANDIDATE_VERSION', description: 'Release Candidate Version', defaultValue: '')
+        string(name: 'PIPELINE_PATH', description: 'Path to run the pipeline')
+    }
+
+    environment {
+        KIE_TOOLS_BUILD__runLinters = 'false'
+        KIE_TOOLS_BUILD__runTests = 'false'
+        KIE_TOOLS_BUILD__runEndToEndTests = 'false'
+        KIE_TOOLS_BUILD__buildContainerImages = 'true'
+
+        KOGITO_DATA_INDEX_POSTGRESQL_IMAGE__registry = 'docker.io'
+        KOGITO_DATA_INDEX_POSTGRESQL_IMAGE__account = 'apache'
+        KOGITO_DATA_INDEX_POSTGRESQL_IMAGE__name = 'incubator-kie-kogito-data-index-postgresql'
+        KOGITO_DATA_INDEX_POSTGRESQL_IMAGE__buildTag = "${params.RELEASE_VERSION}"
+
+        RELEASE_ARTIFACTS_DIR = "${WORKSPACE}/release-artifacts"
+        DOCKER_CONFIG = "${WORKSPACE}/.docker"
+        PNPM_FILTER_STRING = '-F @kie/kogito-data-index-postgresql-image...'
+        MAVEN_ARGS = "-B -s ${WORKSPACE}/kie-settings.xml"
+    }
+
+    stages {
+        stage('Load local shared scripts') {
+            steps {
+                script {
+                    pipelineVars = load '.ci/jenkins/shared-scripts/pipelineVars.groovy'
+                    buildUtils = load '.ci/jenkins/shared-scripts/buildUtils.groovy'
+                    githubUtils = load '.ci/jenkins/shared-scripts/githubUtils.groovy'
+                    dockerUtils = load '.ci/jenkins/shared-scripts/dockerUtils.groovy'
+                    releaseUtils = load '.ci/jenkins/shared-scripts/releaseUtils.groovy'
+                }
+            }
+        }
+
+        stage('Start required services for build and tests (DinD, Xvfb, Fluxbox)') {
+            steps {
+                script {
+                    buildUtils.startRequiredServices()
+                }
+            }
+        }
+
+        stage('Clean workspace before build') {
+            steps {
+                cleanWs(deleteDirs: true, disableDeferredWipeout: true)
+            }
+        }
+
+        stage('Checkout kie-tools') {
+            steps {
+                dir('kie-tools') {
+                    script {
+                        githubUtils.checkoutRepo(
+                            "http://github.com/${pipelineVars.githubRepositorySlug}.git",
+                            "${params.BASE_REF}",
+                            "${pipelineVars.kieToolsBotGithubCredentialsId}"
+                        )
+                        githubUtils.setupGitConfig()
+                    }
+                }
+            }
+        }
+
+        stage('Setup PNPM') {
+            steps {
+                dir('kie-tools') {
+                    script {
+                        buildUtils.setupPnpm("${pipelineVars.mavenSettingsReleaseConfigFileId}")
+                    }
+                }
+            }
+        }
+
+        stage('PNPM Bootstrap') {
+            steps {
+                dir('kie-tools') {
+                    script {
+                        buildUtils.pnpmBootstrap(env.PNPM_FILTER_STRING, env.MAVEN_ARGS)
+                    }
+                }
+            }
+        }
+
+        stage('Build') {
+            steps {
+                dir('kie-tools') {
+                    script {
+                        env.KIE_TOOLS_BUILD__mavenDeploySkip = params.DRY_RUN ? 'true' : 'false'
+                        withEnv(["KIE_TOOLS_BUILD__mavenDeploySkip=${env.KIE_TOOLS_BUILD__mavenDeploySkip}"]) {
+                            buildUtils.pnpmBuild(env.PNPM_FILTER_STRING, env.MAVEN_ARGS)
+                        }
+                    }
+                }
+            }
+        }
+
+        stage('Setup release candidate artifacts') {
+            when {
+                expression { !params.DRY_RUN && params.RELEASE_CANDIDATE_VERSION != '' }
+            }
+            steps {
+                script {
+                    env.RELEASE_IMAGE_TAR_FILE = "apache-kie-${params.RELEASE_VERSION}-incubating-kogito-base-builder-image.tar.gz"
+
+                    sh """#!/bin/bash -el
+                    mkdir ${env.RELEASE_ARTIFACTS_DIR}
+                    docker save "${env.KOGITO_DATA_INDEX_POSTGRESQL_IMAGE__registry}/${env.KOGITO_DATA_INDEX_POSTGRESQL_IMAGE__account}/${env.KOGITO_DATA_INDEX_POSTGRESQL_IMAGE__name}:${params.RELEASE_VERSION}" | gzip > "${env.RELEASE_ARTIFACTS_DIR}/${env.RELEASE_IMAGE_TAR_FILE}"
+                    """.trim()
+                }
+            }
+        }
+
+        stage('Sign artifact for Apache release') {
+            when {
+                expression { !params.DRY_RUN && params.RELEASE_CANDIDATE_VERSION != '' }
+            }
+            steps {
+                dir("${env.RELEASE_ARTIFACTS_DIR}") {
+                    script {
+                        releaseUtils.setupSigningKey("${pipelineVars.asfReleaseGPGKeyCredentialsId}")
+                        releaseUtils.signArtifact("${env.RELEASE_IMAGE_TAR_FILE}")
+                    }
+                }
+            }
+        }
+
+        stage('Publish Release Candidate artifacts') {
+            when {
+                expression { !params.DRY_RUN && params.RELEASE_CANDIDATE_VERSION != '' }
+            }
+            steps {
+                script {
+                    releaseUtils.publishArtifacts(
+                        "${env.RELEASE_ARTIFACTS_DIR}",
+                        "${pipelineVars.asfReleaseStagingRepository}",
+                        "${params.RELEASE_CANDIDATE_VERSION}",
+                        "${pipelineVars.asfReleaseSVNStagingCredentialsId}"
+                    )
+                }
+            }
+        }
+    }
+
+    post {
+        always {
+            cleanWs(deleteDirs: true)
+        }
+    }
+}
diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.kogito-jit-runner-image b/.ci/jenkins/release-jobs/Jenkinsfile.kogito-jit-runner-image
new file mode 100644
index 00000000000..4603cb5bed9
--- /dev/null
+++ b/.ci/jenkins/release-jobs/Jenkinsfile.kogito-jit-runner-image
@@ -0,0 +1,181 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+pipeline {
+    agent {
+        docker {
+            image 'docker.io/apache/incubator-kie-tools-ci-build:10.1.999'
+            args '--shm-size=2g --privileged --group-add docker'
+        }
+    }
+
+    options {
+        timeout(time: 60, unit: 'MINUTES')
+    }
+
+    parameters {
+        booleanParam(name: 'DRY_RUN', description: 'Dry run', defaultValue: true)
+        string(name: 'RELEASE_VERSION', description: 'Release Version', defaultValue: '0.0.0')
+        string(name: 'BASE_REF', description: 'GitHub Base Ref (tag or branch)')
+        string(name: 'RELEASE_CANDIDATE_VERSION', description: 'Release Candidate Version', defaultValue: '')
+        string(name: 'PIPELINE_PATH', description: 'Path to run the pipeline')
+    }
+
+    environment {
+        KIE_TOOLS_BUILD__runLinters = 'false'
+        KIE_TOOLS_BUILD__runTests = 'false'
+        KIE_TOOLS_BUILD__runEndToEndTests = 'false'
+        KIE_TOOLS_BUILD__buildContainerImages = 'true'
+
+        KOGITO_JIT_RUNNER_IMAGE__registry = 'docker.io'
+        KOGITO_JIT_RUNNER_IMAGE__account = 'apache'
+        KOGITO_JIT_RUNNER_IMAGE__name = 'incubator-kie-kogito-jit-runner'
+        KOGITO_JIT_RUNNER_IMAGE__buildTag = "${params.RELEASE_VERSION}"
+
+        RELEASE_ARTIFACTS_DIR = "${WORKSPACE}/release-artifacts"
+        DOCKER_CONFIG = "${WORKSPACE}/.docker"
+        PNPM_FILTER_STRING = '-F @kie/kogito-jit-runner-image...'
+        MAVEN_ARGS = "-B -s ${WORKSPACE}/kie-settings.xml"
+    }
+
+    stages {
+        stage('Load local shared scripts') {
+            steps {
+                script {
+                    pipelineVars = load '.ci/jenkins/shared-scripts/pipelineVars.groovy'
+                    buildUtils = load '.ci/jenkins/shared-scripts/buildUtils.groovy'
+                    githubUtils = load '.ci/jenkins/shared-scripts/githubUtils.groovy'
+                    dockerUtils = load '.ci/jenkins/shared-scripts/dockerUtils.groovy'
+                    releaseUtils = load '.ci/jenkins/shared-scripts/releaseUtils.groovy'
+                }
+            }
+        }
+
+        stage('Start required services for build and tests (DinD, Xvfb, Fluxbox)') {
+            steps {
+                script {
+                    buildUtils.startRequiredServices()
+                }
+            }
+        }
+
+        stage('Clean workspace before build') {
+            steps {
+                cleanWs(deleteDirs: true, disableDeferredWipeout: true)
+            }
+        }
+
+        stage('Checkout kie-tools') {
+            steps {
+                dir('kie-tools') {
+                    script {
+                        githubUtils.checkoutRepo(
+                            "http://github.com/${pipelineVars.githubRepositorySlug}.git",
+                            "${params.BASE_REF}",
+                            "${pipelineVars.kieToolsBotGithubCredentialsId}"
+                        )
+                        githubUtils.setupGitConfig()
+                    }
+                }
+            }
+        }
+
+        stage('Setup PNPM') {
+            steps {
+                dir('kie-tools') {
+                    script {
+                        buildUtils.setupPnpm("${pipelineVars.mavenSettingsReleaseConfigFileId}")
+                    }
+                }
+            }
+        }
+
+        stage('PNPM Bootstrap') {
+            steps {
+                dir('kie-tools') {
+                    script {
+                        buildUtils.pnpmBootstrap(env.PNPM_FILTER_STRING, env.MAVEN_ARGS)
+                    }
+                }
+            }
+        }
+
+        stage('Build') {
+            steps {
+                dir('kie-tools') {
+                    script {
+                        env.KIE_TOOLS_BUILD__mavenDeploySkip = params.DRY_RUN ? 'true' : 'false'
+                        withEnv(["KIE_TOOLS_BUILD__mavenDeploySkip=${env.KIE_TOOLS_BUILD__mavenDeploySkip}"]) {
+                            buildUtils.pnpmBuild(env.PNPM_FILTER_STRING, env.MAVEN_ARGS)
+                        }
+                    }
+                }
+            }
+        }
+
+        stage('Setup release candidate artifacts') {
+            when {
+                expression { !params.DRY_RUN && params.RELEASE_CANDIDATE_VERSION != '' }
+            }
+            steps {
+                script {
+                    env.RELEASE_IMAGE_TAR_FILE = "apache-kie-${params.RELEASE_VERSION}-incubating-kogito-base-builder-image.tar.gz"
+
+                    sh """#!/bin/bash -el
+                    mkdir ${env.RELEASE_ARTIFACTS_DIR}
+                    docker save "${env.KOGITO_JIT_RUNNER_IMAGE__registry}/${env.KOGITO_JIT_RUNNER_IMAGE__account}/${env.KOGITO_JIT_RUNNER_IMAGE__name}:${params.RELEASE_VERSION}" | gzip > "${env.RELEASE_ARTIFACTS_DIR}/${env.RELEASE_IMAGE_TAR_FILE}"
+                    """.trim()
+                }
+            }
+        }
+
+        stage('Sign artifact for Apache release') {
+            when {
+                expression { !params.DRY_RUN && params.RELEASE_CANDIDATE_VERSION != '' }
+            }
+            steps {
+                dir("${env.RELEASE_ARTIFACTS_DIR}") {
+                    script {
+                        releaseUtils.setupSigningKey("${pipelineVars.asfReleaseGPGKeyCredentialsId}")
+                        releaseUtils.signArtifact("${env.RELEASE_IMAGE_TAR_FILE}")
+                    }
+                }
+            }
+        }
+
+        stage('Publish Release Candidate artifacts') {
+            when {
+                expression { !params.DRY_RUN && params.RELEASE_CANDIDATE_VERSION != '' }
+            }
+            steps {
+                script {
+                    releaseUtils.publishArtifacts(
+                        "${env.RELEASE_ARTIFACTS_DIR}",
+                        "${pipelineVars.asfReleaseStagingRepository}",
+                        "${params.RELEASE_CANDIDATE_VERSION}",
+                        "${pipelineVars.asfReleaseSVNStagingCredentialsId}"
+                    )
+                }
+            }
+        }
+    }
+
+    post {
+        always {
+            cleanWs(deleteDirs: true)
+        }
+    }
+}
diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.kogito-jobs-service-allinone-image b/.ci/jenkins/release-jobs/Jenkinsfile.kogito-jobs-service-allinone-image
new file mode 100644
index 00000000000..fd3c9bc8f3c
--- /dev/null
+++ b/.ci/jenkins/release-jobs/Jenkinsfile.kogito-jobs-service-allinone-image
@@ -0,0 +1,181 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+pipeline {
+    agent {
+        docker {
+            image 'docker.io/apache/incubator-kie-tools-ci-build:10.1.999'
+            args '--shm-size=2g --privileged --group-add docker'
+        }
+    }
+
+    options {
+        timeout(time: 60, unit: 'MINUTES')
+    }
+
+    parameters {
+        booleanParam(name: 'DRY_RUN', description: 'Dry run', defaultValue: true)
+        string(name: 'RELEASE_VERSION', description: 'Release Version', defaultValue: '0.0.0')
+        string(name: 'BASE_REF', description: 'GitHub Base Ref (tag or branch)')
+        string(name: 'RELEASE_CANDIDATE_VERSION', description: 'Release Candidate Version', defaultValue: '')
+        string(name: 'PIPELINE_PATH', description: 'Path to run the pipeline')
+    }
+
+    environment {
+        KIE_TOOLS_BUILD__runLinters = 'false'
+        KIE_TOOLS_BUILD__runTests = 'false'
+        KIE_TOOLS_BUILD__runEndToEndTests = 'false'
+        KIE_TOOLS_BUILD__buildContainerImages = 'true'
+
+        KOGITO_JOBS_SERVICE_ALLINONE_IMAGE__registry = 'docker.io'
+        KOGITO_JOBS_SERVICE_ALLINONE_IMAGE__account = 'apache'
+        KOGITO_JOBS_SERVICE_ALLINONE_IMAGE__name = 'incubator-kie-kogito-jobs-service-allinone'
+        KOGITO_JOBS_SERVICE_ALLINONE_IMAGE__buildTag = "${params.RELEASE_VERSION}"
+
+        RELEASE_ARTIFACTS_DIR = "${WORKSPACE}/release-artifacts"
+        DOCKER_CONFIG = "${WORKSPACE}/.docker"
+        PNPM_FILTER_STRING = '-F @kie/kogito-jobs-service-allinone-image...'
+        MAVEN_ARGS = "-B -s ${WORKSPACE}/kie-settings.xml"
+    }
+
+    stages {
+        stage('Load local shared scripts') {
+            steps {
+                script {
+                    pipelineVars = load '.ci/jenkins/shared-scripts/pipelineVars.groovy'
+                    buildUtils = load '.ci/jenkins/shared-scripts/buildUtils.groovy'
+                    githubUtils = load '.ci/jenkins/shared-scripts/githubUtils.groovy'
+                    dockerUtils = load '.ci/jenkins/shared-scripts/dockerUtils.groovy'
+                    releaseUtils = load '.ci/jenkins/shared-scripts/releaseUtils.groovy'
+                }
+            }
+        }
+
+        stage('Start required services for build and tests (DinD, Xvfb, Fluxbox)') {
+            steps {
+                script {
+                    buildUtils.startRequiredServices()
+                }
+            }
+        }
+
+        stage('Clean workspace before build') {
+            steps {
+                cleanWs(deleteDirs: true, disableDeferredWipeout: true)
+            }
+        }
+
+        stage('Checkout kie-tools') {
+            steps {
+                dir('kie-tools') {
+                    script {
+                        githubUtils.checkoutRepo(
+                            "http://github.com/${pipelineVars.githubRepositorySlug}.git",
+                            "${params.BASE_REF}",
+                            "${pipelineVars.kieToolsBotGithubCredentialsId}"
+                        )
+                        githubUtils.setupGitConfig()
+                    }
+                }
+            }
+        }
+
+        stage('Setup PNPM') {
+            steps {
+                dir('kie-tools') {
+                    script {
+                        buildUtils.setupPnpm("${pipelineVars.mavenSettingsReleaseConfigFileId}")
+                    }
+                }
+            }
+        }
+
+        stage('PNPM Bootstrap') {
+            steps {
+                dir('kie-tools') {
+                    script {
+                        buildUtils.pnpmBootstrap(env.PNPM_FILTER_STRING, env.MAVEN_ARGS)
+                    }
+                }
+            }
+        }
+
+        stage('Build') {
+            steps {
+                dir('kie-tools') {
+                    script {
+                        env.KIE_TOOLS_BUILD__mavenDeploySkip = params.DRY_RUN ? 'true' : 'false'
+                        withEnv(["KIE_TOOLS_BUILD__mavenDeploySkip=${env.KIE_TOOLS_BUILD__mavenDeploySkip}"]) {
+                            buildUtils.pnpmBuild(env.PNPM_FILTER_STRING, env.MAVEN_ARGS)
+                        }
+                    }
+                }
+            }
+        }
+
+        stage('Setup release candidate artifacts') {
+            when {
+                expression { !params.DRY_RUN && params.RELEASE_CANDIDATE_VERSION != '' }
+            }
+            steps {
+                script {
+                    env.RELEASE_IMAGE_TAR_FILE = "apache-kie-${params.RELEASE_VERSION}-incubating-kogito-base-builder-image.tar.gz"
+
+                    sh """#!/bin/bash -el
+                    mkdir ${env.RELEASE_ARTIFACTS_DIR}
+                    docker save "${env.KOGITO_JOBS_SERVICE_ALLINONE_IMAGE__registry}/${env.KOGITO_JOBS_SERVICE_ALLINONE_IMAGE__account}/${env.KOGITO_JOBS_SERVICE_ALLINONE_IMAGE__name}:${params.RELEASE_VERSION}" | gzip > "${env.RELEASE_ARTIFACTS_DIR}/${env.RELEASE_IMAGE_TAR_FILE}"
+                    """.trim()
+                }
+            }
+        }
+
+        stage('Sign artifact for Apache release') {
+            when {
+                expression { !params.DRY_RUN && params.RELEASE_CANDIDATE_VERSION != '' }
+            }
+            steps {
+                dir("${env.RELEASE_ARTIFACTS_DIR}") {
+                    script {
+                        releaseUtils.setupSigningKey("${pipelineVars.asfReleaseGPGKeyCredentialsId}")
+                        releaseUtils.signArtifact("${env.RELEASE_IMAGE_TAR_FILE}")
+                    }
+                }
+            }
+        }
+
+        stage('Publish Release Candidate artifacts') {
+            when {
+                expression { !params.DRY_RUN && params.RELEASE_CANDIDATE_VERSION != '' }
+            }
+            steps {
+                script {
+                    releaseUtils.publishArtifacts(
+                        "${env.RELEASE_ARTIFACTS_DIR}",
+                        "${pipelineVars.asfReleaseStagingRepository}",
+                        "${params.RELEASE_CANDIDATE_VERSION}",
+                        "${pipelineVars.asfReleaseSVNStagingCredentialsId}"
+                    )
+                }
+            }
+        }
+    }
+
+    post {
+        always {
+            cleanWs(deleteDirs: true)
+        }
+    }
+}
diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.kogito-jobs-service-ephemeral-image b/.ci/jenkins/release-jobs/Jenkinsfile.kogito-jobs-service-ephemeral-image
new file mode 100644
index 00000000000..afbed5cc182
--- /dev/null
+++ b/.ci/jenkins/release-jobs/Jenkinsfile.kogito-jobs-service-ephemeral-image
@@ -0,0 +1,181 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+pipeline {
+    agent {
+        docker {
+            image 'docker.io/apache/incubator-kie-tools-ci-build:10.1.999'
+            args '--shm-size=2g --privileged --group-add docker'
+        }
+    }
+
+    options {
+        timeout(time: 60, unit: 'MINUTES')
+    }
+
+    parameters {
+        booleanParam(name: 'DRY_RUN', description: 'Dry run', defaultValue: true)
+        string(name: 'RELEASE_VERSION', description: 'Release Version', defaultValue: '0.0.0')
+        string(name: 'BASE_REF', description: 'GitHub Base Ref (tag or branch)')
+        string(name: 'RELEASE_CANDIDATE_VERSION', description: 'Release Candidate Version', defaultValue: '')
+        string(name: 'PIPELINE_PATH', description: 'Path to run the pipeline')
+    }
+
+    environment {
+        KIE_TOOLS_BUILD__runLinters = 'false'
+        KIE_TOOLS_BUILD__runTests = 'false'
+        KIE_TOOLS_BUILD__runEndToEndTests = 'false'
+        KIE_TOOLS_BUILD__buildContainerImages = 'true'
+
+        KOGITO_JOBS_SERVICE_EPHEMERAL_IMAGE__registry = 'docker.io'
+        KOGITO_JOBS_SERVICE_EPHEMERAL_IMAGE__account = 'apache'
+        KOGITO_JOBS_SERVICE_EPHEMERAL_IMAGE__name = 'incubator-kie-kogito-jobs-service-ephemeral'
+        KOGITO_JOBS_SERVICE_EPHEMERAL_IMAGE__buildTag = "${params.RELEASE_VERSION}"
+
+        RELEASE_ARTIFACTS_DIR = "${WORKSPACE}/release-artifacts"
+        DOCKER_CONFIG = "${WORKSPACE}/.docker"
+        PNPM_FILTER_STRING = '-F @kie/kogito-jobs-service-ephemeral-image...'
+        MAVEN_ARGS = "-B -s ${WORKSPACE}/kie-settings.xml"
+    }
+
+    stages {
+        stage('Load local shared scripts') {
+            steps {
+                script {
+                    pipelineVars = load '.ci/jenkins/shared-scripts/pipelineVars.groovy'
+                    buildUtils = load '.ci/jenkins/shared-scripts/buildUtils.groovy'
+                    githubUtils = load '.ci/jenkins/shared-scripts/githubUtils.groovy'
+                    dockerUtils = load '.ci/jenkins/shared-scripts/dockerUtils.groovy'
+                    releaseUtils = load '.ci/jenkins/shared-scripts/releaseUtils.groovy'
+                }
+            }
+        }
+
+        stage('Start required services for build and tests (DinD, Xvfb, Fluxbox)') {
+            steps {
+                script {
+                    buildUtils.startRequiredServices()
+                }
+            }
+        }
+
+        stage('Clean workspace before build') {
+            steps {
+                cleanWs(deleteDirs: true, disableDeferredWipeout: true)
+            }
+        }
+
+        stage('Checkout kie-tools') {
+            steps {
+                dir('kie-tools') {
+                    script {
+                        githubUtils.checkoutRepo(
+                            "http://github.com/${pipelineVars.githubRepositorySlug}.git",
+                            "${params.BASE_REF}",
+                            "${pipelineVars.kieToolsBotGithubCredentialsId}"
+                        )
+                        githubUtils.setupGitConfig()
+                    }
+                }
+            }
+        }
+
+        stage('Setup PNPM') {
+            steps {
+                dir('kie-tools') {
+                    script {
+                        buildUtils.setupPnpm("${pipelineVars.mavenSettingsReleaseConfigFileId}")
+                    }
+                }
+            }
+        }
+
+        stage('PNPM Bootstrap') {
+            steps {
+                dir('kie-tools') {
+                    script {
+                        buildUtils.pnpmBootstrap(env.PNPM_FILTER_STRING, env.MAVEN_ARGS)
+                    }
+                }
+            }
+        }
+
+        stage('Build') {
+            steps {
+                dir('kie-tools') {
+                    script {
+                        env.KIE_TOOLS_BUILD__mavenDeploySkip = params.DRY_RUN ? 'true' : 'false'
+                        withEnv(["KIE_TOOLS_BUILD__mavenDeploySkip=${env.KIE_TOOLS_BUILD__mavenDeploySkip}"]) {
+                            buildUtils.pnpmBuild(env.PNPM_FILTER_STRING, env.MAVEN_ARGS)
+                        }
+                    }
+                }
+            }
+        }
+
+        stage('Setup release candidate artifacts') {
+            when {
+                expression { !params.DRY_RUN && params.RELEASE_CANDIDATE_VERSION != '' }
+            }
+            steps {
+                script {
+                    env.RELEASE_IMAGE_TAR_FILE = "apache-kie-${params.RELEASE_VERSION}-incubating-kogito-base-builder-image.tar.gz"
+
+                    sh """#!/bin/bash -el
+                    mkdir ${env.RELEASE_ARTIFACTS_DIR}
+                    docker save "${env.KOGITO_JOBS_SERVICE_EPHEMERAL_IMAGE__registry}/${env.KOGITO_JOBS_SERVICE_EPHEMERAL_IMAGE__account}/${env.KOGITO_JOBS_SERVICE_EPHEMERAL_IMAGE__name}:${params.RELEASE_VERSION}" | gzip > "${env.RELEASE_ARTIFACTS_DIR}/${env.RELEASE_IMAGE_TAR_FILE}"
+                    """.trim()
+                }
+            }
+        }
+
+        stage('Sign artifact for Apache release') {
+            when {
+                expression { !params.DRY_RUN && params.RELEASE_CANDIDATE_VERSION != '' }
+            }
+            steps {
+                dir("${env.RELEASE_ARTIFACTS_DIR}") {
+                    script {
+                        releaseUtils.setupSigningKey("${pipelineVars.asfReleaseGPGKeyCredentialsId}")
+                        releaseUtils.signArtifact("${env.RELEASE_IMAGE_TAR_FILE}")
+                    }
+                }
+            }
+        }
+
+        stage('Publish Release Candidate artifacts') {
+            when {
+                expression { !params.DRY_RUN && params.RELEASE_CANDIDATE_VERSION != '' }
+            }
+            steps {
+                script {
+                    releaseUtils.publishArtifacts(
+                        "${env.RELEASE_ARTIFACTS_DIR}",
+                        "${pipelineVars.asfReleaseStagingRepository}",
+                        "${params.RELEASE_CANDIDATE_VERSION}",
+                        "${pipelineVars.asfReleaseSVNStagingCredentialsId}"
+                    )
+                }
+            }
+        }
+    }
+
+    post {
+        always {
+            cleanWs(deleteDirs: true)
+        }
+    }
+}
diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.kogito-jobs-service-postgresql-image b/.ci/jenkins/release-jobs/Jenkinsfile.kogito-jobs-service-postgresql-image
new file mode 100644
index 00000000000..57f794fa7d8
--- /dev/null
+++ b/.ci/jenkins/release-jobs/Jenkinsfile.kogito-jobs-service-postgresql-image
@@ -0,0 +1,181 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+pipeline {
+    agent {
+        docker {
+            image 'docker.io/apache/incubator-kie-tools-ci-build:10.1.999'
+            args '--shm-size=2g --privileged --group-add docker'
+        }
+    }
+
+    options {
+        timeout(time: 60, unit: 'MINUTES')
+    }
+
+    parameters {
+        booleanParam(name: 'DRY_RUN', description: 'Dry run', defaultValue: true)
+        string(name: 'RELEASE_VERSION', description: 'Release Version', defaultValue: '0.0.0')
+        string(name: 'BASE_REF', description: 'GitHub Base Ref (tag or branch)')
+        string(name: 'RELEASE_CANDIDATE_VERSION', description: 'Release Candidate Version', defaultValue: '')
+        string(name: 'PIPELINE_PATH', description: 'Path to run the pipeline')
+    }
+
+    environment {
+        KIE_TOOLS_BUILD__runLinters = 'false'
+        KIE_TOOLS_BUILD__runTests = 'false'
+        KIE_TOOLS_BUILD__runEndToEndTests = 'false'
+        KIE_TOOLS_BUILD__buildContainerImages = 'true'
+
+        KOGITO_JOBS_SERVICE_POSTGRESQL_IMAGE__registry = 'docker.io'
+        KOGITO_JOBS_SERVICE_POSTGRESQL_IMAGE__account = 'apache'
+        KOGITO_JOBS_SERVICE_POSTGRESQL_IMAGE__name = 'incubator-kie-kogito-jobs-service-postgresql'
+        KOGITO_JOBS_SERVICE_POSTGRESQL_IMAGE__buildTag = "${params.RELEASE_VERSION}"
+
+        RELEASE_ARTIFACTS_DIR = "${WORKSPACE}/release-artifacts"
+        DOCKER_CONFIG = "${WORKSPACE}/.docker"
+        PNPM_FILTER_STRING = '-F @kie/kogito-jobs-service-postgresql-image...'
+        MAVEN_ARGS = "-B -s ${WORKSPACE}/kie-settings.xml"
+    }
+
+    stages {
+        stage('Load local shared scripts') {
+            steps {
+                script {
+                    pipelineVars = load '.ci/jenkins/shared-scripts/pipelineVars.groovy'
+                    buildUtils = load '.ci/jenkins/shared-scripts/buildUtils.groovy'
+                    githubUtils = load '.ci/jenkins/shared-scripts/githubUtils.groovy'
+                    dockerUtils = load '.ci/jenkins/shared-scripts/dockerUtils.groovy'
+                    releaseUtils = load '.ci/jenkins/shared-scripts/releaseUtils.groovy'
+                }
+            }
+        }
+
+        stage('Start required services for build and tests (DinD, Xvfb, Fluxbox)') {
+            steps {
+                script {
+                    buildUtils.startRequiredServices()
+                }
+            }
+        }
+
+        stage('Clean workspace before build') {
+            steps {
+                cleanWs(deleteDirs: true, disableDeferredWipeout: true)
+            }
+        }
+
+        stage('Checkout kie-tools') {
+            steps {
+                dir('kie-tools') {
+                    script {
+                        githubUtils.checkoutRepo(
+                            "http://github.com/${pipelineVars.githubRepositorySlug}.git",
+                            "${params.BASE_REF}",
+                            "${pipelineVars.kieToolsBotGithubCredentialsId}"
+                        )
+                        githubUtils.setupGitConfig()
+                    }
+                }
+            }
+        }
+
+        stage('Setup PNPM') {
+            steps {
+                dir('kie-tools') {
+                    script {
+                        buildUtils.setupPnpm("${pipelineVars.mavenSettingsReleaseConfigFileId}")
+                    }
+                }
+            }
+        }
+
+        stage('PNPM Bootstrap') {
+            steps {
+                dir('kie-tools') {
+                    script {
+                        buildUtils.pnpmBootstrap(env.PNPM_FILTER_STRING, env.MAVEN_ARGS)
+                    }
+                }
+            }
+        }
+
+        stage('Build') {
+            steps {
+                dir('kie-tools') {
+                    script {
+                        env.KIE_TOOLS_BUILD__mavenDeploySkip = params.DRY_RUN ? 'true' : 'false'
+                        withEnv(["KIE_TOOLS_BUILD__mavenDeploySkip=${env.KIE_TOOLS_BUILD__mavenDeploySkip}"]) {
+                            buildUtils.pnpmBuild(env.PNPM_FILTER_STRING, env.MAVEN_ARGS)
+                        }
+                    }
+                }
+            }
+        }
+
+        stage('Setup release candidate artifacts') {
+            when {
+                expression { !params.DRY_RUN && params.RELEASE_CANDIDATE_VERSION != '' }
+            }
+            steps {
+                script {
+                    env.RELEASE_IMAGE_TAR_FILE = "apache-kie-${params.RELEASE_VERSION}-incubating-kogito-base-builder-image.tar.gz"
+
+                    sh """#!/bin/bash -el
+                    mkdir ${env.RELEASE_ARTIFACTS_DIR}
+                    docker save "${env.KOGITO_JOBS_SERVICE_POSTGRESQL_IMAGE__registry}/${env.KOGITO_JOBS_SERVICE_POSTGRESQL_IMAGE__account}/${env.KOGITO_JOBS_SERVICE_POSTGRESQL_IMAGE__name}:${params.RELEASE_VERSION}" | gzip > "${env.RELEASE_ARTIFACTS_DIR}/${env.RELEASE_IMAGE_TAR_FILE}"
+                    """.trim()
+                }
+            }
+        }
+
+        stage('Sign artifact for Apache release') {
+            when {
+                expression { !params.DRY_RUN && params.RELEASE_CANDIDATE_VERSION != '' }
+            }
+            steps {
+                dir("${env.RELEASE_ARTIFACTS_DIR}") {
+                    script {
+                        releaseUtils.setupSigningKey("${pipelineVars.asfReleaseGPGKeyCredentialsId}")
+                        releaseUtils.signArtifact("${env.RELEASE_IMAGE_TAR_FILE}")
+                    }
+                }
+            }
+        }
+
+        stage('Publish Release Candidate artifacts') {
+            when {
+                expression { !params.DRY_RUN && params.RELEASE_CANDIDATE_VERSION != '' }
+            }
+            steps {
+                script {
+                    releaseUtils.publishArtifacts(
+                        "${env.RELEASE_ARTIFACTS_DIR}",
+                        "${pipelineVars.asfReleaseStagingRepository}",
+                        "${params.RELEASE_CANDIDATE_VERSION}",
+                        "${pipelineVars.asfReleaseSVNStagingCredentialsId}"
+                    )
+                }
+            }
+        }
+    }
+
+    post {
+        always {
+            cleanWs(deleteDirs: true)
+        }
+    }
+}
diff --git a/.ci/jenkins/shared-scripts/releaseUtils.groovy b/.ci/jenkins/shared-scripts/releaseUtils.groovy
index 4051e13888a..768829b5bd0 100644
--- a/.ci/jenkins/shared-scripts/releaseUtils.groovy
+++ b/.ci/jenkins/shared-scripts/releaseUtils.groovy
@@ -68,13 +68,13 @@ def downloadReleaseArtifacts(String releaseRepository, String artifactsDir, Stri
 */
 def getUpstreamImagesArtifactsList(String artifactsDir, String releaseVersion) {
     def components = [
-        "kogito-base-builder",
-        "kogito-data-index-ephemeral",
-        "kogito-data-index-postgresql",
-        "kogito-jit-runner",
-        "kogito-jobs-service-allinone",
-        "kogito-jobs-service-ephemeral",
-        "kogito-jobs-service-postgresql"
+        "kogito-base-builder",              // jenkinsfile.kogito-base-builder-image
+        "kogito-data-index-ephemeral",      // jenkinsfile.kogito-data-index-ephemeral-image
+        "kogito-data-index-postgresql",     // jenkinsfile.kogito-data-index-postgresql-image
+        "kogito-jit-runner",                // jenkinsfile.kogito-jit-runner-image
+        "kogito-jobs-service-allinone",     // jenkinsfile.kogito-jobs-service-allinone-image
+        "kogito-jobs-service-ephemeral",    // jenkinsfile.kogito-jobs-service-ephemeral-image
+        "kogito-jobs-service-postgresql"    // jenkinsfile.kogito-jobs-service-postgresql-image
     ]
 
     // clean -rc suffix if present


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org