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","standalone_editors_cdn":"false","extended_services":"false","serverless_logic_web_tools":"false","serverless_logic_web_tools_swf_builder_image":"false","serverless_logic_web_tools_base_builder_image":"false","serverless_logic_web_tools_swf_dev_mode_image":"false","dashbuilder_viewer_image":"false","kn_plugin_workflow":"false","kie_sandbox_helm_chart":"true", "kogito-task-console":"false", "kogito-management-console":"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","standalone_editors_cdn":"false","extended_services":"false","serverless_logic_web_tools":"false","serverless_logic_web_tools_swf_builder_image":"false","serverless_logic_web_tools_base_builder_image":"false","serverless_logic_web_tools_swf_dev_mode_image":"false","dashbuilder_viewer_image":"false","kn_plugin_workflow":"false","kie_sandbox_helm_chart":"false","kogito_task_console":"false","kogito_management_console":"false","kogito_swf_builder":"false","kogito_swf_devmode":"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","extended_services":"true","serverless_logic_web_tools":"true","serverless_logic_web_tools_swf_builder_image":"true","serverless_logic_web_tools_base_builder_image":"true","serverless_logic_web_tools_swf_dev_mode_image":"true","dashbuilder_viewer_image":"true","kn_plugin_workflow":"true","kie_sandbox_helm_chart":"true", "kogito-task-console":"true", "kogito-management-console":"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","extended_services":"true","serverless_logic_web_tools":"true","serverless_logic_web_tools_swf_builder_image":"true","serverless_logic_web_tools_base_builder_image":"true","serverless_logic_web_tools_swf_dev_mode_image":"true","dashbuilder_viewer_image":"true","kn_plugin_workflow":"true","kie_sandbox_helm_chart":"true","kogito_task_console":"true","kogito_management_console":"true","kogito_swf_builder":"true","kogito_swf_devmode":"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_editors_cdn":"true","extended_services":"true","serverless_logic_web_tools":"true","serverless_logic_web_tools_swf_builder_image":"true","serverless_logic_web_tools_base_builder_image":"true","serverless_logic_web_tools_swf_dev_mode_image":"true","dashbuilder_viewer_image":"true","kn_plugin_workflow":"true","kie_sandbox_helm_chart":"true", "kogito-task-console":"true", "kogito-management-console":"true"}') + 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_editors_cdn":"true","extended_services":"true","serverless_logic_web_tools":"true","serverless_logic_web_tools_swf_builder_image":"true","serverless_logic_web_tools_base_builder_image":"true","serverless_logic_web_tools_swf_dev_mode_image":"true","dashbuilder_viewer_image":"true","kn_plugin_workflow":"true","kie_sandbox_helm_chart":"true","kogito_task_console":"true","kogito_management_console":"true","kogito_swf_builder":"true","kogito_swf_devmode":"true"}') } 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 pnpm@8.7.0' +RUN source $HOME/.nvm/nvm.sh && \ + npm install -g pnpm@8.7.0 && \ + 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/s2i@v1.3.9 # 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 [""]