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

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


The following commit(s) were added to refs/heads/main by this push:
     new 558ae562b47 kie-issues#1036: Adapt kie-tools Jenkins jobs to build and 
publish packages/kogito-swf-{devmode,builder} (#2262)
558ae562b47 is described below

commit 558ae562b476591a1257711e365bc385c3d01f4c
Author: Rodrigo Antunes <[email protected]>
AuthorDate: Thu Apr 25 12:36:42 2024 -0300

    kie-issues#1036: Adapt kie-tools Jenkins jobs to build and publish 
packages/kogito-swf-{devmode,builder} (#2262)
---
 .ci/jenkins/Jenkinsfile.daily-dev-publish          |  36 ++
 .ci/jenkins/Jenkinsfile.release-build              |  54 ++-
 .ci/jenkins/Jenkinsfile.release-dry-run            |   2 +-
 .ci/jenkins/Jenkinsfile.release-publish            |   2 +-
 .ci/jenkins/Jenkinsfile.staging-build              | 456 ++++++++++++---------
 .../release-jobs/Jenkinsfile.kogito-swf-builder    | 143 +++++++
 .../release-jobs/Jenkinsfile.kogito-swf-devmode    | 143 +++++++
 .ci/jenkins/shared-scripts/pipelineVars.groovy     |   1 +
 .ci/kie-tools-ci-build.Dockerfile                  |  61 ++-
 9 files changed, 677 insertions(+), 221 deletions(-)

diff --git a/.ci/jenkins/Jenkinsfile.daily-dev-publish 
b/.ci/jenkins/Jenkinsfile.daily-dev-publish
index 1499566eb2f..32336bcd44d 100644
--- a/.ci/jenkins/Jenkinsfile.daily-dev-publish
+++ b/.ci/jenkins/Jenkinsfile.daily-dev-publish
@@ -122,6 +122,16 @@ pipeline {
         KOGITO_MANAGEMENT_CONSOLE__name = 'kogito-management-console'
         KOGITO_MANAGEMENT_CONSOLE__buildTags = 'daily-dev'
 
+        KOGITO_SWF_BUILDER_IMAGE__registry = 'quay.io'
+        KOGITO_SWF_BUILDER_IMAGE__account = 'kiegroup'
+        KOGITO_SWF_BUILDER_IMAGE__name = 'kogito-swf-builder-nightly'
+        KOGITO_SWF_BUILDER_IMAGE__buildTag = 'latest'
+
+        KOGITO_SWF_DEVMODE_IMAGE__registry = 'quay.io'
+        KOGITO_SWF_DEVMODE_IMAGE__account = 'kiegroup'
+        KOGITO_SWF_DEVMODE_IMAGE__name = 'kogito-swf-devmode-nightly'
+        KOGITO_SWF_DEVMODE_IMAGE__buildTag = 'latest'
+
         BUILD_DATE = sh(script: "echo `date +'%Y-%m-%d %T'`", returnStdout: 
true).trim()
 
         DOCKER_CONFIG = "${WORKSPACE}/.docker"
@@ -215,6 +225,32 @@ pipeline {
             }
         }
 
+        stage('Push kogito-swf-builder to quay.io') {
+            steps {
+                script {
+                    dockerUtils.pushImageToRegistry(
+                        
"${env.KOGITO_SWF_BUILDER_IMAGE__registry}/${env.KOGITO_SWF_BUILDER_IMAGE__account}",
+                        "${env.KOGITO_SWF_BUILDER_IMAGE__name}",
+                        "${env.KOGITO_SWF_BUILDER_IMAGE__buildTag}",
+                        "${pipelineVars.quayKiegroupPushCredentialsId}"
+                    )
+                }
+            }
+        }
+
+        stage('Push kogito-swf-devmode to quay.io') {
+            steps {
+                script {
+                    dockerUtils.pushImageToRegistry(
+                        
"${env.KOGITO_SWF_DEVMODE_IMAGE__registry}/${env.KOGITO_SWF_DEVMODE_IMAGE__account}",
+                        "${env.KOGITO_SWF_DEVMODE_IMAGE__name}",
+                        "${env.KOGITO_SWF_DEVMODE_IMAGE__buildTag}",
+                        "${pipelineVars.quayKiegroupPushCredentialsId}"
+                    )
+                }
+            }
+        }
+
         stage('Push dev-deployment-base-image to quay.io') {
             steps {
                 script {
diff --git a/.ci/jenkins/Jenkinsfile.release-build 
b/.ci/jenkins/Jenkinsfile.release-build
index a799a5fa168..3d694b0c0ed 100644
--- a/.ci/jenkins/Jenkinsfile.release-build
+++ b/.ci/jenkins/Jenkinsfile.release-build
@@ -35,7 +35,7 @@ pipeline {
         string(description: 'Base Ref', name: 'BASE_REF')
         string(description: 'Tag', name: 'TAG', defaultValue: '0.0.0')
         string(description: 'Upload asset url', name: 'UPLOAD_ASSET_URL', 
defaultValue: '')
-        string(description: 'Runners', name: 'RUNNERS', defaultValue: 
'{"dev_deployment_base_image":"false","dev_deployment_kogito_quakus_blank_app_image":"false","dev_deployment_dmn_form_webapp_image":"false","dev_deployment_upload_service":"false","kie_sandbox_image":"false","kie_sandbox_extended_services_image":"false","cors_proxy_image":"false","online_editor":"false",
 
"chrome_extensions":"false","vscode_extensions_dev":"false","vscode_extensions_prod":"false","npm_packages":"false",
 [...]
+        string(description: 'Runners', name: 'RUNNERS', defaultValue: 
'{"dev_deployment_base_image":"false","dev_deployment_kogito_quakus_blank_app_image":"false","dev_deployment_dmn_form_webapp_image":"false","dev_deployment_upload_service":"false","kie_sandbox_image":"false","kie_sandbox_extended_services_image":"false","cors_proxy_image":"false","online_editor":"false",
 
"chrome_extensions":"false","vscode_extensions_dev":"false","vscode_extensions_prod":"false","npm_packages":"false",
 [...]
     }
 
     environment {
@@ -54,6 +54,8 @@ pipeline {
         DASHBUILDER_VIEWER_IMAGE_JOB_RESULT = 'SKIPPED'
         KOGITO_TASK_CONSOLE_JOB_RESULT = 'SKIPPED'
         KOGITO_MANAGEMENT_CONSOLE_JOB_RESULT = 'SKIPPED'
+        KOGITO_SWF_BUILDER_JOB_RESULT = 'SKIPPED'
+        KOGITO_SWF_DEVMODE_JOB_RESULT = 'SKIPPED'
     }
 
     stages {
@@ -91,8 +93,10 @@ pipeline {
                     env.DASHBUILDER_VIEWER_IMAGE = 
runners.dashbuilder_viewer_image
                     env.KN_PLUGIN_WORKFLOW = runners.kn_plugin_workflow
                     env.KIE_SANDBOX_HELM_CHART = runners.kie_sandbox_helm_chart
-                    env.KOGITO_TASK_CONSOLE = runners.KOGITO_TASK_CONSOLE
-                    env.KOGITO_MANAGEMENT_CONSOLE = 
runners.KOGITO_MANAGEMENT_CONSOLE
+                    env.KOGITO_TASK_CONSOLE = runners.kogito_task_console
+                    env.KOGITO_MANAGEMENT_CONSOLE = 
runners.kogito_management_console
+                    env.KOGITO_SWF_BUILDER = runners.kogito_swf_builder
+                    env.KOGITO_SWF_DEVMODE = runners.kogito_swf_devmode
                 }
             }
         }
@@ -121,8 +125,10 @@ pipeline {
                 echo "dashbuilder_viewer_image: 
${env.DASHBUILDER_VIEWER_IMAGE}"
                 echo "kn_plugin_workflow: ${env.KN_PLUGIN_WORKFLOW}"
                 echo "kie_sandbox_helm_chart: ${env.KIE_SANDBOX_HELM_CHART}"
-                echo "KOGITO_TASK_CONSOLE": ${env.KOGITO_TASK_CONSOLE}"
-                echo "KOGITO_MANAGEMENT_CONSOLE": 
${env.KOGITO_MANAGEMENT_CONSOLE}"
+                echo "kogito_task_console": ${env.KOGITO_TASK_CONSOLE}"
+                echo "kogito_management_console": 
${env.KOGITO_MANAGEMENT_CONSOLE}"
+                echo "kogito_swf_builder": ${env.KOGITO_SWF_BUILDER}"
+                echo "kogito_swf_devmode": ${env.KOGITO_SWF_DEVMODE}"
                 """.trim()
             }
         }
@@ -578,6 +584,44 @@ pipeline {
                 }
             }
         }
+
+        stage('Kogito SWF Builder Image') {
+            when {
+                expression { env.KOGITO_SWF_BUILDER == 'true' }
+            }
+            steps {
+                script {
+                    env.KOGITO_SWF_BUILDER_JOB_RESULT = build(
+                        wait: true,
+                        job: 
'KIE/kie-tools/kie-tools-release-jobs/kogito-swf-builder',
+                        parameters: [
+                            booleanParam(name: 'DRY_RUN', value: 
"${params.DRY_RUN}"),
+                            string(name: 'BASE_REF', value: 
"${params.BASE_REF}"),
+                            string(name: 'TAG', value: "${params.TAG}")
+                        ]
+                    ).result
+                }
+            }
+        }
+
+        stage('Kogito SWF Devmode Image') {
+            when {
+                expression { env.KOGITO_SWF_DEVMODE == 'true' }
+            }
+            steps {
+                script {
+                    env.KOGITO_SWF_DEVMODE_JOB_RESULT = build(
+                        wait: true,
+                        job: 
'KIE/kie-tools/kie-tools-release-jobs/kogito-swf-devmode',
+                        parameters: [
+                            booleanParam(name: 'DRY_RUN', value: 
"${params.DRY_RUN}"),
+                            string(name: 'BASE_REF', value: 
"${params.BASE_REF}"),
+                            string(name: 'TAG', value: "${params.TAG}")
+                        ]
+                    ).result
+                }
+            }
+        }
     }
 
     post {
diff --git a/.ci/jenkins/Jenkinsfile.release-dry-run 
b/.ci/jenkins/Jenkinsfile.release-dry-run
index 4515c5dab39..bad2dc0e926 100644
--- a/.ci/jenkins/Jenkinsfile.release-dry-run
+++ b/.ci/jenkins/Jenkinsfile.release-dry-run
@@ -35,7 +35,7 @@ pipeline {
                 build job: 'KIE/kie-tools/kie-tools-release-build', 
parameters: [
                     booleanParam(name: 'DRY_RUN', value: true),
                     string(name: 'BASE_REF', value: 'main'),
-                    string(name: 'RUNNERS', value: 
'{"dev_deployment_base_image":"true","dev_deployment_kogito_quakus_blank_app_image":"true","dev_deployment_dmn_form_webapp_image":"true","dev_deployment_upload_service":"true","kie_sandbox_image":"true","kie_sandbox_extended_services_image":"true","cors_proxy_image":"true","online_editor":"true","chrome_extensions":"true","vscode_extensions_dev":"true","vscode_extensions_prod":"true","npm_packages":"true","standalone_editors_cdn":"true",
 [...]
+                    string(name: 'RUNNERS', value: 
'{"dev_deployment_base_image":"true","dev_deployment_kogito_quakus_blank_app_image":"true","dev_deployment_dmn_form_webapp_image":"true","dev_deployment_upload_service":"true","kie_sandbox_image":"true","kie_sandbox_extended_services_image":"true","cors_proxy_image":"true","online_editor":"true","chrome_extensions":"true","vscode_extensions_dev":"true","vscode_extensions_prod":"true","npm_packages":"true","standalone_editors_cdn":"true",
 [...]
                 ]
             }
         }
diff --git a/.ci/jenkins/Jenkinsfile.release-publish 
b/.ci/jenkins/Jenkinsfile.release-publish
index 5f95fd9c7aa..d3d3c75e5fd 100644
--- a/.ci/jenkins/Jenkinsfile.release-publish
+++ b/.ci/jenkins/Jenkinsfile.release-publish
@@ -31,7 +31,7 @@ pipeline {
 
     parameters {
         string(description: 'Tag', name: 'TAG', defaultValue: '0.0.0')
-        string(description: 'Runners', name: 'RUNNERS', defaultValue: 
'{"dev_deployment_base_image":"true","dev_deployment_kogito_quakus_blank_app_image":"true","dev_deployment_dmn_form_webapp_image":"true","dev_deployment_upload_service":"true","kie_sandbox_image":"true","kie_sandbox_extended_services_image":"true","cors_proxy_image":"true","online_editor":"true","chrome_extensions":"true","vscode_extensions_dev":"true","vscode_extensions_prod":"true","npm_packages":"true","standalone_e
 [...]
+        string(description: 'Runners', name: 'RUNNERS', defaultValue: 
'{"dev_deployment_base_image":"true","dev_deployment_kogito_quakus_blank_app_image":"true","dev_deployment_dmn_form_webapp_image":"true","dev_deployment_upload_service":"true","kie_sandbox_image":"true","kie_sandbox_extended_services_image":"true","cors_proxy_image":"true","online_editor":"true","chrome_extensions":"true","vscode_extensions_dev":"true","vscode_extensions_prod":"true","npm_packages":"true","standalone_e
 [...]
     }
 
     stages {
diff --git a/.ci/jenkins/Jenkinsfile.staging-build 
b/.ci/jenkins/Jenkinsfile.staging-build
index 1bc8adcb862..c1254b6d484 100644
--- a/.ci/jenkins/Jenkinsfile.staging-build
+++ b/.ci/jenkins/Jenkinsfile.staging-build
@@ -117,6 +117,16 @@ pipeline {
         KOGITO_MANAGEMENT_CONSOLE__name = 'kogito-management-console'
         KOGITO_MANAGEMENT_CONSOLE__buildTags = "${params.TAG}-prerelease"
 
+        KOGITO_SWF_BUILDER_IMAGE__registry = 'quay.io'
+        KOGITO_SWF_BUILDER_IMAGE__account = 'kiegroup'
+        KOGITO_SWF_BUILDER_IMAGE__name = 'kogito-swf-builder'
+        KOGITO_SWF_BUILDER_IMAGE__buildTag = "${params.TAG}-prerelease"
+
+        KOGITO_SWF_DEVMODE_IMAGE__registry = 'quay.io'
+        KOGITO_SWF_DEVMODE_IMAGE__account = 'kiegroup'
+        KOGITO_SWF_DEVMODE_IMAGE__name = 'kogito-swf-devmode'
+        KOGITO_SWF_DEVMODE_IMAGE__buildTag = "${params.TAG}-prerelease"
+
         DOCKER_CONFIG = "${WORKSPACE}/.docker"
     }
 
@@ -254,13 +264,7 @@ pipeline {
             }
             steps {
                 script {
-                    githubUtils.uploadReleaseAsset(
-                        "${params.UPLOAD_ASSET_URL}",
-                        'kie-tools/packages/online-editor/dist.zip',
-                        "STAGING__online_editor_${params.TAG}.zip",
-                        'application/zip',
-                        "${pipelineVars.kieToolsBotGithubTokenCredentialsId}"
-                    )
+                    uploadOnlineEditor()
                 }
             }
         }
@@ -271,13 +275,7 @@ pipeline {
             }
             steps {
                 script {
-                    githubUtils.uploadReleaseAsset(
-                        "${params.UPLOAD_ASSET_URL}",
-                        
'kie-tools/packages/serverless-logic-web-tools/dist.zip',
-                        
"STAGING__serverless_logic_web_tools_${params.TAG}.zip",
-                        'application/zip',
-                        "${pipelineVars.kieToolsBotGithubTokenCredentialsId}"
-                    )
+                    uploadServerlessLogicWebTools()
                 }
             }
         }
@@ -288,13 +286,7 @@ pipeline {
             }
             steps {
                 script {
-                    githubUtils.uploadReleaseAsset(
-                        "${params.UPLOAD_ASSET_URL}",
-                        
"kie-tools/packages/kie-editors-dev-vscode-extension/dist/kie_editors_dev_vscode_extension_${params.TAG}.vsix",
-                        "STAGING__vscode_extension_dev_${params.TAG}.vsix",
-                        'application/zip',
-                        "${pipelineVars.kieToolsBotGithubTokenCredentialsId}"
-                    )
+                    uploadVSCodeExtension()
                 }
             }
         }
@@ -305,13 +297,7 @@ pipeline {
             }
             steps {
                 script {
-                    githubUtils.uploadReleaseAsset(
-                        "${params.UPLOAD_ASSET_URL}",
-                        
"kie-tools/packages/bpmn-vscode-extension/dist/bpmn_vscode_extension_${params.TAG}.vsix",
-                        "STAGING__bpmn_vscode_extension_${params.TAG}.vsix",
-                        'application/zip',
-                        "${pipelineVars.kieToolsBotGithubTokenCredentialsId}"
-                    )
+                    uploadVSCodeExtensionBPMNEditor()
                 }
             }
         }
@@ -322,13 +308,7 @@ pipeline {
             }
             steps {
                 script {
-                    githubUtils.uploadReleaseAsset(
-                        "${params.UPLOAD_ASSET_URL}",
-                        
"kie-tools/packages/dmn-vscode-extension/dist/dmn_vscode_extension_${params.TAG}.vsix",
-                        "STAGING__dmn_vscode_extension_${params.TAG}.vsix",
-                        'application/zip',
-                        "${pipelineVars.kieToolsBotGithubTokenCredentialsId}"
-                    )
+                    uploadVSCodeExtensionDMNEditor()
                 }
             }
         }
@@ -339,13 +319,7 @@ pipeline {
             }
             steps {
                 script {
-                    githubUtils.uploadReleaseAsset(
-                        "${params.UPLOAD_ASSET_URL}",
-                        
"kie-tools/packages/pmml-vscode-extension/dist/pmml_vscode_extension_${params.TAG}.vsix",
-                        "STAGING__pmml_vscode_extension_${params.TAG}.vsix",
-                        'application/zip',
-                        "${pipelineVars.kieToolsBotGithubTokenCredentialsId}"
-                    )
+                    uploadVSCodeExtensionPMMLEditor()
                 }
             }
         }
@@ -356,13 +330,7 @@ pipeline {
             }
             steps {
                 script {
-                    githubUtils.uploadReleaseAsset(
-                        "${params.UPLOAD_ASSET_URL}",
-                        
"kie-tools/packages/serverless-workflow-vscode-extension/dist/serverless_workflow_vscode_extension_${params.TAG}.vsix",
-                        
"STAGING__serverless_workflow_vscode_extension_${params.TAG}.vsix",
-                        'application/zip',
-                        "${pipelineVars.kieToolsBotGithubTokenCredentialsId}"
-                    )
+                    uploadVSCodeExtensionServerlessWorkflowEditor()
                 }
             }
         }
@@ -373,13 +341,7 @@ pipeline {
             }
             steps {
                 script {
-                    githubUtils.uploadReleaseAsset(
-                        "${params.UPLOAD_ASSET_URL}",
-                        
"kie-tools/packages/vscode-extension-dashbuilder-editor/dist/vscode_extension_dashbuilder_editor_${params.TAG}.vsix",
-                        
"STAGING__vscode_extension_dashbuilder_editor_${params.TAG}.vsix",
-                        'application/zip',
-                        "${pipelineVars.kieToolsBotGithubTokenCredentialsId}"
-                    )
+                    uploadVSCodeExtensionDashbuilderEditor()
                 }
             }
         }
@@ -390,13 +352,7 @@ pipeline {
             }
             steps {
                 script {
-                    githubUtils.uploadReleaseAsset(
-                        "${params.UPLOAD_ASSET_URL}",
-                        
"kie-tools/packages/vscode-extension-kogito-bundle/dist/vscode_extension_kogito_bundle_${params.TAG}.vsix",
-                        
"STAGING__vscode_extension_kogito_bundle_${params.TAG}.vsix",
-                        'application/zip',
-                        "${pipelineVars.kieToolsBotGithubTokenCredentialsId}"
-                    )
+                    uploadVSCodeExtensionKogitoBundle()
                 }
             }
         }
@@ -407,13 +363,7 @@ pipeline {
             }
             steps {
                 script {
-                    githubUtils.uploadReleaseAsset(
-                        "${params.UPLOAD_ASSET_URL}",
-                        
"kie-tools/packages/vscode-extension-kie-ba-bundle/dist/vscode_extension_kie_ba_bundle_${params.TAG}.vsix",
-                        
"STAGING__vscode_extension_kie_ba_bundle_${params.TAG}.vsix",
-                        'application/zip',
-                        "${pipelineVars.kieToolsBotGithubTokenCredentialsId}"
-                    )
+                    uploadVSCodeExtensionKieBusinessAutomationBundle()
                 }
             }
         }
@@ -424,13 +374,7 @@ pipeline {
             }
             steps {
                 script {
-                    githubUtils.uploadReleaseAsset(
-                        "${params.UPLOAD_ASSET_URL}",
-                        
"kie-tools/packages/chrome-extension-pack-kogito-kie-editors/dist/chrome_extension_kogito_kie_editors_${params.TAG}.zip",
-                        
"STAGING__chrome_extension_kogito_kie_editors_${params.TAG}.zip",
-                        'application/zip',
-                        "${pipelineVars.kieToolsBotGithubTokenCredentialsId}"
-                    )
+                    uploadChromeExtensionForKieEditors()
                 }
             }
         }
@@ -441,13 +385,7 @@ pipeline {
             }
             steps {
                 script {
-                    githubUtils.uploadReleaseAsset(
-                        "${params.UPLOAD_ASSET_URL}",
-                        
"kie-tools/packages/chrome-extension-serverless-workflow-editor/dist/chrome_extension_serverless_workflow_editor_${params.TAG}.zip",
-                        
"STAGING__chrome_extension_serverless_workflow_editor_${params.TAG}.zip",
-                        'application/zip',
-                        "${pipelineVars.kieToolsBotGithubTokenCredentialsId}"
-                    )
+                    uploadChromeExtensionForServerlessWorkflowEditor()
                 }
             }
         }
@@ -458,13 +396,7 @@ pipeline {
             }
             steps {
                 script {
-                    githubUtils.uploadReleaseAsset(
-                        "${params.UPLOAD_ASSET_URL}",
-                        
'kie-tools/packages/extended-services/dist/linux/kie_sandbox_extended_services.tar.gz',
-                        
"STAGING__kie_sandbox_extended_services_linux_${params.TAG}.tar.gz",
-                        'application/zip',
-                        "${pipelineVars.kieToolsBotGithubTokenCredentialsId}"
-                    )
+                    uploadExtendedServicesForLinux()
                 }
             }
         }
@@ -475,13 +407,7 @@ pipeline {
             }
             steps {
                 script {
-                    githubUtils.uploadReleaseAsset(
-                        "${params.UPLOAD_ASSET_URL}",
-                        
'kie-tools/packages/kn-plugin-workflow/dist/kn-workflow-linux-amd64',
-                        "STAGING__kn-workflow-linux-amd64-${params.TAG}",
-                        'application/octet-stream',
-                        "${pipelineVars.kieToolsBotGithubTokenCredentialsId}"
-                    )
+                    uploadKnativeCliWorkflowPluginForLinux()
                 }
             }
         }
@@ -492,13 +418,7 @@ pipeline {
             }
             steps {
                 script {
-                    githubUtils.uploadReleaseAsset(
-                        "${params.UPLOAD_ASSET_URL}",
-                        
'kie-tools/packages/kn-plugin-workflow/dist/kn-workflow-darwin-amd64',
-                        "STAGING__kn-workflow-darwin-amd64-${params.TAG}",
-                        'application/octet-stream',
-                        "${pipelineVars.kieToolsBotGithubTokenCredentialsId}"
-                    )
+                    uploadKnativeCliWorkflowPluginForMacOs()
                 }
             }
         }
@@ -509,13 +429,7 @@ pipeline {
             }
             steps {
                 script {
-                    githubUtils.uploadReleaseAsset(
-                        "${params.UPLOAD_ASSET_URL}",
-                        
'kie-tools/packages/kn-plugin-workflow/dist/kn-workflow-darwin-arm64',
-                        "STAGING__kn-workflow-darwin-arm64-${params.TAG}",
-                        'application/octet-stream',
-                        "${pipelineVars.kieToolsBotGithubTokenCredentialsId}"
-                    )
+                    uploadKnativeCliWorkflowPluginForMacOsM1()
                 }
             }
         }
@@ -526,13 +440,7 @@ pipeline {
             }
             steps {
                 script {
-                    githubUtils.uploadReleaseAsset(
-                        "${params.UPLOAD_ASSET_URL}",
-                        
'kie-tools/packages/kn-plugin-workflow/dist/kn-workflow-windows-amd64.exe',
-                        "STAGING__kn-workflow-windows-amd64-${params.TAG}.exe",
-                        'application/octet-stream',
-                        "${pipelineVars.kieToolsBotGithubTokenCredentialsId}"
-                    )
+                    uploadKnativeCliWorkflowPluginForWindows()
                 }
             }
         }
@@ -615,11 +523,11 @@ pipeline {
             }
         }
 
-        stage('Build (serverless-logic-web-tools-swf-dev-mode-image)') {
+        stage('STAGING: Build 
(serverless-logic-web-tools-swf-dev-mode-image)') {
             steps {
                 dir('kie-tools') {
                     script {
-                        buildServerlessLogicWebToolsSwfDevModeImage()
+                        
buildImage('serverless-logic-web-tools-swf-dev-mode-image')
                     }
                 }
             }
@@ -640,8 +548,8 @@ pipeline {
             steps {
                 dir('kie-tools') {
                     script {
-                        buildDevDeploymentBaseImage()
-                        buildDevDeploymentKogitoQuarkusBlankAppImage()
+                        buildImage('dev-deployment-base-image')
+                        
buildImage('dev-deployment-kogito-quarkus-blank-app-image')
                     }
                 }
             }
@@ -659,11 +567,11 @@ pipeline {
             }
         }
 
-        stage('Build (dev-deployment-dmn-form-webapp-image)') {
+        stage('STAGING: Build (dev-deployment-dmn-form-webapp-image)') {
             steps {
                 dir('kie-tools') {
                     script {
-                        buildDevDeploymentDmnFormWebappImage()
+                        buildImage('dev-deployment-dmn-form-webapp-image')
                     }
                 }
             }
@@ -680,11 +588,11 @@ pipeline {
             }
         }
 
-        stage('Build (serverless-logic-web-tools-base-builder-image)') {
+        stage('STAGING: Build 
(serverless-logic-web-tools-base-builder-image)') {
             steps {
                 dir('kie-tools') {
                     script {
-                        buildServerlessLogicWebToolsBaseBuilderImage()
+                        
buildImage('serverless-logic-web-tools-base-builder-image')
                     }
                 }
             }
@@ -701,11 +609,11 @@ pipeline {
             }
         }
 
-        stage('Build (dashbuilder-viewer-image)') {
+        stage('STAGING: Build (dashbuilder-viewer-image)') {
             steps {
                 dir('kie-tools') {
                     script {
-                        buildDashbuilderViewerImage()
+                        buildImage('dashbuilder-viewer-image')
                     }
                 }
             }
@@ -735,11 +643,11 @@ pipeline {
             }
         }
 
-        stage('Build (kogito-task-console)') {
+        stage('STAGING: Build (kogito-task-console)') {
             steps {
                 dir('kie-tools') {
                     script {
-                        buildKogitoTaskConsole()
+                        buildImage('kogito-task-console')
                     }
                 }
             }
@@ -756,11 +664,11 @@ pipeline {
             }
         }
 
-        stage('Build (kogito-management-console)') {
+        stage('STAGING: Build (kogito-management-console)') {
             steps {
                 dir('kie-tools') {
                     script {
-                        buildKogitoManagementConsole()
+                        buildImage('kogito-management-console')
                     }
                 }
             }
@@ -776,6 +684,48 @@ pipeline {
                 }
             }
         }
+
+        stage('STAGING: Build (kogito-swf-builder)') {
+            steps {
+                dir('kie-tools') {
+                    script {
+                        buildImage('kogito-swf-builder')
+                    }
+                }
+            }
+        }
+
+        stage('STAGING: Push kogito-swf-builder to quay.io') {
+            when {
+                expression { !params.DRY_RUN }
+            }
+            steps {
+                script {
+                    pushKogitoSwfBuilderToQuay()
+                }
+            }
+        }
+
+        stage('STAGING: Build (kogito-swf-devmode)') {
+            steps {
+                dir('kie-tools') {
+                    script {
+                        buildImage('kogito-swf-devmode')
+                    }
+                }
+            }
+        }
+
+        stage('STAGING: Push kogito-swf-devmode to quay.io') {
+            when {
+                expression { !params.DRY_RUN }
+            }
+            steps {
+                script {
+                    pushKogitoSwfDevModeToQuay()
+                }
+            }
+        }
     }
 
     post {
@@ -825,62 +775,164 @@ def buildPartial() {
     """.trim()
 }
 
-def buildServerlessLogicWebToolsSwfDevModeImage() {
-    sh '''#!/bin/bash -el
-    export KIE_TOOLS_BUILD__runTests=true
-    export KIE_TOOLS_BUILD__buildContainerImages=true
-    docker system prune -af
-    echo "Build @kie-tools/serverless-logic-web-tools-swf-dev-mode-image"
-    pnpm -F @kie-tools/serverless-logic-web-tools-swf-dev-mode-image... 
--workspace-concurrency=1 build:prod
-    '''.trim()
+def uploadKnativeCliWorkflowPluginForWindows() {
+    githubUtils.uploadReleaseAsset(
+        "${params.UPLOAD_ASSET_URL}",
+        
'kie-tools/packages/kn-plugin-workflow/dist/kn-workflow-windows-amd64.exe',
+        "STAGING__kn-workflow-windows-amd64-${params.TAG}.exe",
+        'application/octet-stream',
+        "${pipelineVars.kieToolsBotGithubTokenCredentialsId}"
+    )
 }
 
-def buildDevDeploymentBaseImage() {
-    sh '''#!/bin/bash -el
-    export KIE_TOOLS_BUILD__runTests=true
-    export KIE_TOOLS_BUILD__buildContainerImages=true
-    docker system prune -af
-    echo "Build @kie-tools/dev-deployment-base-image"
-    pnpm -F @kie-tools/dev-deployment-base-image... --workspace-concurrency=1 
build:prod
-    '''.trim()
+def uploadKnativeCliWorkflowPluginForMacOsM1() {
+    githubUtils.uploadReleaseAsset(
+        "${params.UPLOAD_ASSET_URL}",
+        'kie-tools/packages/kn-plugin-workflow/dist/kn-workflow-darwin-arm64',
+        "STAGING__kn-workflow-darwin-arm64-${params.TAG}",
+        'application/octet-stream',
+        "${pipelineVars.kieToolsBotGithubTokenCredentialsId}"
+    )
 }
 
-def buildDevDeploymentDmnFormWebappImage() {
-    sh '''#!/bin/bash -el
-    export KIE_TOOLS_BUILD__runTests=true
-    export KIE_TOOLS_BUILD__buildContainerImages=true
-    echo "Build @kie-tools/dev-deployment-dmn-form-webapp-image"
-    pnpm -F @kie-tools/dev-deployment-dmn-form-webapp-image... 
--workspace-concurrency=1 build:prod
-    '''.trim()
+def uploadKnativeCliWorkflowPluginForMacOs() {
+    githubUtils.uploadReleaseAsset(
+        "${params.UPLOAD_ASSET_URL}",
+        'kie-tools/packages/kn-plugin-workflow/dist/kn-workflow-darwin-amd64',
+        "STAGING__kn-workflow-darwin-amd64-${params.TAG}",
+        'application/octet-stream',
+        "${pipelineVars.kieToolsBotGithubTokenCredentialsId}"
+    )
 }
 
-def buildDevDeploymentKogitoQuarkusBlankAppImage() {
-    sh '''#!/bin/bash -el
-    export KIE_TOOLS_BUILD__runTests=true
-    export KIE_TOOLS_BUILD__buildContainerImages=true
-    echo "Build @kie-tools/dev-deployment-kogito-quarkus-blank-app-image"
-    pnpm -F @kie-tools/dev-deployment-kogito-quarkus-blank-app-image... 
--workspace-concurrency=1 build:prod
-    '''.trim()
+def uploadKnativeCliWorkflowPluginForLinux() {
+    githubUtils.uploadReleaseAsset(
+        "${params.UPLOAD_ASSET_URL}",
+        'kie-tools/packages/kn-plugin-workflow/dist/kn-workflow-linux-amd64',
+        "STAGING__kn-workflow-linux-amd64-${params.TAG}",
+        'application/octet-stream',
+        "${pipelineVars.kieToolsBotGithubTokenCredentialsId}"
+    )
 }
 
-def buildServerlessLogicWebToolsBaseBuilderImage() {
-    sh '''#!/bin/bash -el
-    export KIE_TOOLS_BUILD__runTests=true
-    export KIE_TOOLS_BUILD__buildContainerImages=true
-    docker system prune -af
-    echo "Build @kie-tools/serverless-logic-web-tools-base-builder-image"
-    pnpm -F @kie-tools/serverless-logic-web-tools-base-builder-image... 
--workspace-concurrency=1 build:prod
-    '''.trim()
+def uploadExtendedServicesForLinux() {
+    githubUtils.uploadReleaseAsset(
+        "${params.UPLOAD_ASSET_URL}",
+        
'kie-tools/packages/extended-services/dist/linux/kie_sandbox_extended_services.tar.gz',
+        "STAGING__kie_sandbox_extended_services_linux_${params.TAG}.tar.gz",
+        'application/zip',
+        "${pipelineVars.kieToolsBotGithubTokenCredentialsId}"
+    )
 }
 
-def buildDashbuilderViewerImage() {
-    sh '''#!/bin/bash -el
-    export KIE_TOOLS_BUILD__runTests=true
-    export KIE_TOOLS_BUILD__buildContainerImages=true
-    docker system prune -af
-    echo "Build @kie-tools/dashbuilder-viewer-image"
-    pnpm -F @kie-tools/dashbuilder-viewer-image... --workspace-concurrency=1 
build:prod
-    '''.trim()
+def uploadChromeExtensionForServerlessWorkflowEditor() {
+    githubUtils.uploadReleaseAsset(
+        "${params.UPLOAD_ASSET_URL}",
+        
"kie-tools/packages/chrome-extension-serverless-workflow-editor/dist/chrome_extension_serverless_workflow_editor_${params.TAG}.zip",
+        
"STAGING__chrome_extension_serverless_workflow_editor_${params.TAG}.zip",
+        'application/zip',
+        "${pipelineVars.kieToolsBotGithubTokenCredentialsId}"
+    )
+}
+
+def uploadChromeExtensionForKieEditors() {
+    githubUtils.uploadReleaseAsset(
+        "${params.UPLOAD_ASSET_URL}",
+        
"kie-tools/packages/chrome-extension-pack-kogito-kie-editors/dist/chrome_extension_kogito_kie_editors_${params.TAG}.zip",
+        "STAGING__chrome_extension_kogito_kie_editors_${params.TAG}.zip",
+        'application/zip',
+        "${pipelineVars.kieToolsBotGithubTokenCredentialsId}"
+    )
+}
+
+def uploadVSCodeExtensionKieBusinessAutomationBundle() {
+    githubUtils.uploadReleaseAsset(
+        "${params.UPLOAD_ASSET_URL}",
+        
"kie-tools/packages/vscode-extension-kie-ba-bundle/dist/vscode_extension_kie_ba_bundle_${params.TAG}.vsix",
+        "STAGING__vscode_extension_kie_ba_bundle_${params.TAG}.vsix",
+        'application/zip',
+        "${pipelineVars.kieToolsBotGithubTokenCredentialsId}"
+    )
+}
+
+def uploadVSCodeExtensionKogitoBundle() {
+    githubUtils.uploadReleaseAsset(
+        "${params.UPLOAD_ASSET_URL}",
+        
"kie-tools/packages/vscode-extension-kogito-bundle/dist/vscode_extension_kogito_bundle_${params.TAG}.vsix",
+        "STAGING__vscode_extension_kogito_bundle_${params.TAG}.vsix",
+        'application/zip',
+        "${pipelineVars.kieToolsBotGithubTokenCredentialsId}"
+    )
+}
+
+def uploadVSCodeExtensionDashbuilderEditor() {
+    githubUtils.uploadReleaseAsset(
+        "${params.UPLOAD_ASSET_URL}",
+        
"kie-tools/packages/vscode-extension-dashbuilder-editor/dist/vscode_extension_dashbuilder_editor_${params.TAG}.vsix",
+        "STAGING__vscode_extension_dashbuilder_editor_${params.TAG}.vsix",
+        'application/zip',
+        "${pipelineVars.kieToolsBotGithubTokenCredentialsId}"
+    )
+}
+
+def uploadVSCodeExtensionServerlessWorkflowEditor() {
+    githubUtils.uploadReleaseAsset(
+        "${params.UPLOAD_ASSET_URL}",
+        
"kie-tools/packages/serverless-workflow-vscode-extension/dist/serverless_workflow_vscode_extension_${params.TAG}.vsix",
+        "STAGING__serverless_workflow_vscode_extension_${params.TAG}.vsix",
+        'application/zip',
+        "${pipelineVars.kieToolsBotGithubTokenCredentialsId}"
+    )
+}
+
+def uploadVSCodeExtensionPMMLEditor() {
+    githubUtils.uploadReleaseAsset(
+        "${params.UPLOAD_ASSET_URL}",
+        
"kie-tools/packages/pmml-vscode-extension/dist/pmml_vscode_extension_${params.TAG}.vsix",
+        "STAGING__pmml_vscode_extension_${params.TAG}.vsix",
+        'application/zip',
+        "${pipelineVars.kieToolsBotGithubTokenCredentialsId}"
+    )
+}
+
+def uploadVSCodeExtensionDMNEditor() {
+    githubUtils.uploadReleaseAsset(
+        "${params.UPLOAD_ASSET_URL}",
+        
"kie-tools/packages/dmn-vscode-extension/dist/dmn_vscode_extension_${params.TAG}.vsix",
+        "STAGING__dmn_vscode_extension_${params.TAG}.vsix",
+        'application/zip',
+        "${pipelineVars.kieToolsBotGithubTokenCredentialsId}"
+    )
+}
+
+def uploadVSCodeExtension() {
+    githubUtils.uploadReleaseAsset(
+        "${params.UPLOAD_ASSET_URL}",
+        
"kie-tools/packages/kie-editors-dev-vscode-extension/dist/kie_editors_dev_vscode_extension_${params.TAG}.vsix",
+        "STAGING__vscode_extension_dev_${params.TAG}.vsix",
+        'application/zip',
+        "${pipelineVars.kieToolsBotGithubTokenCredentialsId}"
+    )
+}
+
+def uploadServerlessLogicWebTools() {
+    githubUtils.uploadReleaseAsset(
+        "${params.UPLOAD_ASSET_URL}",
+        'kie-tools/packages/serverless-logic-web-tools/dist.zip',
+        "STAGING__serverless_logic_web_tools_${params.TAG}.zip",
+        'application/zip',
+        "${pipelineVars.kieToolsBotGithubTokenCredentialsId}"
+    )
+}
+
+def uploadOnlineEditor() {
+    githubUtils.uploadReleaseAsset(
+        "${params.UPLOAD_ASSET_URL}",
+        'kie-tools/packages/online-editor/dist.zip',
+        "STAGING__online_editor_${params.TAG}.zip",
+        'application/zip',
+        "${pipelineVars.kieToolsBotGithubTokenCredentialsId}"
+    )
 }
 
 def pushKieSandboxHelmChartToQuay() {
@@ -1064,15 +1116,6 @@ def pushServerlessLogicWebToolsBaseBuilderImageToQuay() {
     )
 }
 
-def buildKogitoTaskConsole() {
-    sh '''#!/bin/bash -el
-    export KIE_TOOLS_BUILD__runTests=true
-    export KIE_TOOLS_BUILD__buildContainerImages=true
-    echo "Build @kie-tools/kogito-task-console"
-    pnpm -F @kie-tools/kogito-task-console... --workspace-concurrency=1 
build:prod
-    '''.trim()
-}
-
 def pushKogitoTaskConsoleToQuay() {
     dockerUtils.pushImageToRegistry(
         
"${env.KOGITO_TASK_CONSOLE__registry}/${env.KOGITO_TASK_CONSOLE__account}",
@@ -1082,15 +1125,6 @@ def pushKogitoTaskConsoleToQuay() {
     )
 }
 
-def buildKogitoManagementConsole() {
-    sh '''#!/bin/bash -el
-    export KIE_TOOLS_BUILD__runTests=true
-    export KIE_TOOLS_BUILD__buildContainerImages=true
-    echo "Build @kie-tools/kogito-management-console"
-    pnpm -F @kie-tools/kogito-management-console... --workspace-concurrency=1 
build:prod
-    '''.trim()
-}
-
 def pushKogitoManagementConsoleToQuay() {
     dockerUtils.pushImageToRegistry(
         
"${env.KOGITO_MANAGEMENT_CONSOLE__registry}/${env.KOGITO_MANAGEMENT_CONSOLE__account}",
@@ -1100,6 +1134,34 @@ def pushKogitoManagementConsoleToQuay() {
     )
 }
 
+def pushKogitoSwfBuilderToQuay() {
+    dockerUtils.pushImageToRegistry(
+        
"${env.KOGITO_SWF_BUILDER_IMAGE__registry}/${env.KOGITO_SWF_BUILDER_IMAGE__account}",
+        "${env.KOGITO_SWF_BUILDER_IMAGE__name}",
+        "${env.KOGITO_SWF_BUILDER_IMAGE__buildTag}",
+        "${pipelineVars.quayKiegroupPushCredentialsId}"
+    )
+}
+
+def pushKogitoSwfDevModeToQuay() {
+    dockerUtils.pushImageToRegistry(
+        
"${env.KOGITO_SWF_DEVMODE_IMAGE__registry}/${env.KOGITO_SWF_DEVMODE_IMAGE__account}",
+        "${env.KOGITO_SWF_DEVMODE_IMAGE__name}",
+        "${env.KOGITO_SWF_DEVMODE_IMAGE__buildTag}",
+        "${pipelineVars.quayKiegroupPushCredentialsId}"
+    )
+}
+
+def buildImage(String packageName) {
+    sh """#!/bin/bash -el
+    export KIE_TOOLS_BUILD__runTests=true
+    export KIE_TOOLS_BUILD__buildContainerImages=true
+    docker system prune -af
+    echo "Build @kie-tools/${packageName}"
+    pnpm -F @kie-tools/${packageName}... --workspace-concurrency=1 build:prod
+    """.trim()
+}
+
 def loadLocalSharedScripts() {
     pipelineVars = load '.ci/jenkins/shared-scripts/pipelineVars.groovy'
     buildUtils = load '.ci/jenkins/shared-scripts/buildUtils.groovy'
diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.kogito-swf-builder 
b/.ci/jenkins/release-jobs/Jenkinsfile.kogito-swf-builder
new file mode 100644
index 00000000000..d18b2eda3d5
--- /dev/null
+++ b/.ci/jenkins/release-jobs/Jenkinsfile.kogito-swf-builder
@@ -0,0 +1,143 @@
+/*
+ * 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 'quay.io/kie-tools/kie-tools-ci-build:latest'
+            args '--shm-size=2g --privileged --group-add docker'
+        }
+    }
+
+    options {
+        timeout(time: 180, unit: 'MINUTES')
+    }
+
+    parameters {
+        booleanParam(description: 'Dry run', name: 'DRY_RUN', defaultValue: 
true)
+        string(description: 'Tag', name: 'TAG', defaultValue: '0.0.0')
+        string(description: 'Base Ref', name: 'BASE_REF')
+    }
+
+    environment {
+        KIE_TOOLS_BUILD__runLinters = 'false'
+        KIE_TOOLS_BUILD__runTests = 'false'
+        KIE_TOOLS_BUILD__runEndToEndTests = 'false'
+        KIE_TOOLS_BUILD__buildContainerImages = 'true'
+
+        KOGITO_SWF_BUILDER_IMAGE__registry = 'quay.io'
+        KOGITO_SWF_BUILDER_IMAGE__account = 'kiegroup'
+        KOGITO_SWF_BUILDER_IMAGE__name = 'kogito-swf-builder'
+        KOGITO_SWF_BUILDER_IMAGE__buildTag = "latest ${params.TAG}"
+
+        DOCKER_CONFIG = "${WORKSPACE}/.docker"
+
+        PNPM_FILTER_STRING = '-F @kie-tools/kogito-swf-builder...'
+    }
+
+    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'
+                }
+            }
+        }
+
+        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}"
+                        )
+                    }
+                }
+            }
+        }
+
+        stage('Setup PNPM') {
+            steps {
+                dir('kie-tools') {
+                    script {
+                        buildUtils.setupPnpm()
+                    }
+                }
+            }
+        }
+
+        stage('PNPM Bootstrap') {
+            steps {
+                dir('kie-tools') {
+                    script {
+                        buildUtils.pnpmBootstrap("${env.PNPM_FILTER_STRING}")
+                    }
+                }
+            }
+        }
+
+        stage('Build') {
+            steps {
+                dir('kie-tools') {
+                    script {
+                        buildUtils.pnpmBuild("${env.PNPM_FILTER_STRING}")
+                    }
+                }
+            }
+        }
+
+        stage('Push kogito-swf-builder to quay.io') {
+            when {
+                expression { !params.DRY_RUN }
+            }
+            steps {
+                script {
+                    dockerUtils.pushImageToRegistry(
+                        
"${env.KOGITO_SWF_BUILDER_IMAGE__registry}/${env.KOGITO_SWF_BUILDER_IMAGE__account}",
+                        "${env.KOGITO_SWF_BUILDER_IMAGE__name}",
+                        "${env.KOGITO_SWF_BUILDER_IMAGE__buildTag}",
+                        "${pipelineVars.quayKiegroupPushCredentialsId}"
+                    )
+                }
+            }
+        }
+    }
+
+    post {
+        always {
+            cleanWs(deleteDirs: true)
+        }
+    }
+}
diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.kogito-swf-devmode 
b/.ci/jenkins/release-jobs/Jenkinsfile.kogito-swf-devmode
new file mode 100644
index 00000000000..b6bbc431584
--- /dev/null
+++ b/.ci/jenkins/release-jobs/Jenkinsfile.kogito-swf-devmode
@@ -0,0 +1,143 @@
+/*
+ * 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 'quay.io/kie-tools/kie-tools-ci-build:latest'
+            args '--shm-size=2g --privileged --group-add docker'
+        }
+    }
+
+    options {
+        timeout(time: 180, unit: 'MINUTES')
+    }
+
+    parameters {
+        booleanParam(description: 'Dry run', name: 'DRY_RUN', defaultValue: 
true)
+        string(description: 'Tag', name: 'TAG', defaultValue: '0.0.0')
+        string(description: 'Base Ref', name: 'BASE_REF')
+    }
+
+    environment {
+        KIE_TOOLS_BUILD__runLinters = 'false'
+        KIE_TOOLS_BUILD__runTests = 'false'
+        KIE_TOOLS_BUILD__runEndToEndTests = 'false'
+        KIE_TOOLS_BUILD__buildContainerImages = 'true'
+
+        KOGITO_SWF_DEVMODE_IMAGE__registry = 'quay.io'
+        KOGITO_SWF_DEVMODE_IMAGE__account = 'kiegroup'
+        KOGITO_SWF_DEVMODE_IMAGE__name = 'kogito-swf-devmode'
+        KOGITO_SWF_DEVMODE_IMAGE__buildTag = "latest ${params.TAG}"
+
+        DOCKER_CONFIG = "${WORKSPACE}/.docker"
+
+        PNPM_FILTER_STRING = '-F @kie-tools/kogito-swf-devmode...'
+    }
+
+    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'
+                }
+            }
+        }
+
+        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}"
+                        )
+                    }
+                }
+            }
+        }
+
+        stage('Setup PNPM') {
+            steps {
+                dir('kie-tools') {
+                    script {
+                        buildUtils.setupPnpm()
+                    }
+                }
+            }
+        }
+
+        stage('PNPM Bootstrap') {
+            steps {
+                dir('kie-tools') {
+                    script {
+                        buildUtils.pnpmBootstrap("${env.PNPM_FILTER_STRING}")
+                    }
+                }
+            }
+        }
+
+        stage('Build') {
+            steps {
+                dir('kie-tools') {
+                    script {
+                        buildUtils.pnpmBuild("${env.PNPM_FILTER_STRING}")
+                    }
+                }
+            }
+        }
+
+        stage('Push kogito-swf-devmode to quay.io') {
+            when {
+                expression { !params.DRY_RUN }
+            }
+            steps {
+                script {
+                    dockerUtils.pushImageToRegistry(
+                        
"${env.KOGITO_SWF_DEVMODE_IMAGE__registry}/${env.KOGITO_SWF_DEVMODE_IMAGE__account}",
+                        "${env.KOGITO_SWF_DEVMODE_IMAGE__name}",
+                        "${env.KOGITO_SWF_DEVMODE_IMAGE__buildTag}",
+                        "${pipelineVars.quayKiegroupPushCredentialsId}"
+                    )
+                }
+            }
+        }
+    }
+
+    post {
+        always {
+            cleanWs(deleteDirs: true)
+        }
+    }
+}
diff --git a/.ci/jenkins/shared-scripts/pipelineVars.groovy 
b/.ci/jenkins/shared-scripts/pipelineVars.groovy
index bfbde6004a4..e3ed412710a 100644
--- a/.ci/jenkins/shared-scripts/pipelineVars.groovy
+++ b/.ci/jenkins/shared-scripts/pipelineVars.groovy
@@ -21,6 +21,7 @@ class PipelineVars implements Serializable {
     String githubRepositorySlug = 'apache/incubator-kie-tools';
 
     String quayPushCredentialsId = 'quay-io-kie-tools-token';
+    String quayKiegroupPushCredentialsId = 'quay_kiegroup_registry_token';
     String openshiftCredentialsId = 'openshift-kie-tools-token';
     String kieToolsBotGithubCredentialsId = 'kie-tools-bot-gh';
     String kieToolsBotGithubTokenCredentialsId = 'kie-tools-bot-gh-token';
diff --git a/.ci/kie-tools-ci-build.Dockerfile 
b/.ci/kie-tools-ci-build.Dockerfile
index dc68123d9d2..52036a7594a 100644
--- a/.ci/kie-tools-ci-build.Dockerfile
+++ b/.ci/kie-tools-ci-build.Dockerfile
@@ -1,5 +1,7 @@
 FROM cruizba/ubuntu-dind:latest
 
+SHELL ["/bin/bash", "-c"]
+
 RUN apt-get update && apt-get upgrade -y && apt-get install -y 
--no-install-recommends \
     sudo bash wget gpg locales uidmap apt-transport-https ca-certificates curl 
software-properties-common \
     && rm -rf /var/lib/apt/lists/* \
@@ -23,7 +25,15 @@ libxi6 \
 libnss3 \
 libgconf-2-4 \
 libpci-dev \
-openjdk-17-jdk \
+libglvnd0 \
+libbtrfs-dev \
+libgpgme-dev \
+libdevmapper-dev \
+python3 \
+python3-pip \
+python3-dev \
+python3-venv \
+python3-gssapi \
 git \
 jq \
 vim \
@@ -60,35 +70,39 @@ RUN groupadd docker && usermod -aG docker nonrootuser
 USER nonrootuser
 
 # NVM setup
-RUN wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh 
| bash && \
+RUN wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh 
| bash && \
     echo 'export NVM_DIR="${HOME}/.nvm"' | sudo tee /etc/profile.d/nvm.sh && \
     echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' | sudo tee -a 
/etc/profile.d/nvm.sh && \
     echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"' 
| sudo tee -a /etc/profile.d/nvm.sh && \
     echo "source /etc/profile.d/nvm.sh" >> $HOME/.bashrc
 
 # Node setup
-RUN bash -c 'source $HOME/.nvm/nvm.sh && \
-             nvm install 18.14.0'
+RUN source $HOME/.nvm/nvm.sh && \
+    nvm install 18.14.0 && \
+    sudo update-alternatives --install /usr/local/bin/node node $(which node) 
1 && \
+    sudo update-alternatives --install /usr/local/bin/npm npm $(which npm) 1
 
 # PNPM setup
-RUN bash -c 'source $HOME/.nvm/nvm.sh && \
-             npm install -g [email protected]'
+RUN source $HOME/.nvm/nvm.sh && \
+    npm install -g [email protected] && \
+    sudo update-alternatives --install /usr/local/bin/pnpm pnpm $(which pnpm) 1
 
 # Maven setup
-RUN wget 
https://archive.apache.org/dist/maven/maven-3/3.9.6/binaries/apache-maven-3.9.6-bin.tar.gz
 -P /tmp && \
-    sudo tar xzf /tmp/apache-maven-3.9.6-bin.tar.gz -C /opt && rm 
/tmp/apache-maven-3.9.6-bin.tar.gz && \
-    sudo ln -s /opt/apache-maven-3.9.6 /opt/maven && \
-    echo 'export M2_HOME=/opt/maven' | sudo tee -a /etc/profile.d/maven.sh && \
-    echo 'export MAVEN_HOME=${M2_HOME}' | sudo tee -a /etc/profile.d/maven.sh 
&& \
-    echo 'export PATH=${M2_HOME}/bin:${PATH}' | sudo tee -a 
/etc/profile.d/maven.sh && \
-    echo "source /etc/profile.d/maven.sh" >> $HOME/.bashrc
+RUN curl -s "https://get.sdkman.io"; | bash && \
+    source "$HOME/.sdkman/bin/sdkman-init.sh" && \
+    sdk install java 17.0.10-zulu && \
+    sudo update-alternatives --install /usr/local/bin/java java $(which java) 
1 && \
+    sdk install maven 3.9.6 && \
+    sudo update-alternatives --install /usr/local/bin/mvn mvn $(which mvn) 1 
&& \
+    sdk flush
 
 # Golang setup
 RUN wget https://go.dev/dl/go1.21.5.linux-amd64.tar.gz -P /tmp && \
     sudo tar xzf /tmp/go1.21.5.linux-amd64.tar.gz -C /opt && rm 
/tmp/go1.21.5.linux-amd64.tar.gz && \
     echo 'export GOPATH=${HOME}/go' | sudo tee /etc/profile.d/go.sh && \
     echo 'export PATH=${PATH}:/opt/go/bin:${GOPATH}/bin' | sudo tee -a 
/etc/profile.d/go.sh && \
-    echo "source /etc/profile.d/go.sh" >> $HOME/.bashrc
+    echo "source /etc/profile.d/go.sh" >> $HOME/.bashrc && \
+    sudo update-alternatives --install /usr/local/bin/go go /opt/go/bin/go 1
 
 # CodeQL setup
 RUN wget 
https://github.com/github/codeql-action/releases/latest/download/codeql-bundle-linux64.tar.gz
 -P /tmp && \
@@ -102,13 +116,26 @@ RUN wget 
https://mirror.openshift.com/pub/openshift-v4/clients/ocp/stable/opensh
     sudo tar -C /usr/bin/ -xvzf /tmp/openshift-client-linux.tar.gz oc && rm 
/tmp/openshift-client-linux.tar.gz
 
 # Helm CLI setup
-RUN wget https://get.helm.sh/helm-v3.13.3-linux-amd64.tar.gz -P /tmp && \
-    sudo tar -C /usr/bin/ -zxvf /tmp/helm-v3.13.3-linux-amd64.tar.gz 
linux-amd64/helm --strip-components 1 && rm /tmp/helm-v3.13.3-linux-amd64.tar.gz
+RUN wget https://get.helm.sh/helm-v3.14.3-linux-amd64.tar.gz -P /tmp && \
+    sudo tar -C /usr/bin/ -zxvf /tmp/helm-v3.14.3-linux-amd64.tar.gz 
linux-amd64/helm --strip-components 1 && rm /tmp/helm-v3.14.3-linux-amd64.tar.gz
+
+# Python setup
+RUN sudo update-alternatives --install /usr/local/bin/python python $(which 
python3) 1 && \
+    sudo update-alternatives --install /usr/local/bin/pip pip $(which pip3) 1
+
+# s2i (source-to-image) setup
+RUN go install github.com/openshift/source-to-image/cmd/[email protected]
 
 # Env vars
-ENV JAVA_HOME="/usr/lib/jvm/java-17-openjdk-amd64"
+ENV HOME="/home/nonrootuser"
+ENV JAVA_HOME="${HOME}/.sdkman/candidates/java/current/"
+ENV MAVEN_HOME="${HOME}/.sdkman/candidates/maven/current/"
+ENV NODE_HOME="${HOME}/.nvm/versions/node/v18.14.0"
 ENV DISPLAY=":99"
 ENV NODE_OPTIONS="--max_old_space_size=4096"
+ENV GOPATH="${HOME}/go"
+ENV GOROOT="/opt/go"
+ENV PATH="${PATH}:${GOROOT}/bin:${GOPATH}/bin"
 
 ENTRYPOINT [""]
 


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

Reply via email to