This is an automated email from the ASF dual-hosted git repository.
rantunes pushed a commit to branch main
in repository
https://gitbox.apache.org/repos/asf/incubator-kie-tools-temporary-rnd-do-not-use.git
The following commit(s) were added to refs/heads/main by this push:
new b98ed19b79 CI - Staging build and publish Jenkins jobs (#13)
b98ed19b79 is described below
commit b98ed19b79053106de1678413fdd0f74564e969a
Author: Rodrigo Antunes <[email protected]>
AuthorDate: Wed Nov 29 12:58:03 2023 -0300
CI - Staging build and publish Jenkins jobs (#13)
* CI - Staging build and publish Jenkins jobs
* CI - Add squashed merge
* Fix upload asset url
* Add missing asset upload
* Add missing asset upload
* Reflect library changes
* Update staging publish job to use lib utilities
* Fix base ref for dry run job
* Use shared scripts
* Use shared scripts
* Rename Jenkins job files
* Fix jobs names
* Fix job name
---
.ci/jenkins/Jenkinsfile.staging-build | 886 ++++++++++++++++++++++++++++++++
.ci/jenkins/Jenkinsfile.staging-dry-run | 44 ++
.ci/jenkins/Jenkinsfile.staging-publish | 123 +++++
3 files changed, 1053 insertions(+)
diff --git a/.ci/jenkins/Jenkinsfile.staging-build
b/.ci/jenkins/Jenkinsfile.staging-build
new file mode 100644
index 0000000000..1f9be8cb41
--- /dev/null
+++ b/.ci/jenkins/Jenkinsfile.staging-build
@@ -0,0 +1,886 @@
+/*
+ * 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: 240, unit: 'MINUTES')
+ }
+
+ parameters {
+ booleanParam(description: 'Dry run', name: 'DRY_RUN', defaultValue:
true)
+ string(description: 'Base Ref', name: 'BASE_REF')
+ string(description: 'Tag', name: 'TAG', defaultValue: '0.0.0')
+ string(description: 'Commit SHA', name: 'COMMIT_SHA', defaultValue:
'main')
+ string(description: 'Download asset url', name: 'DOWNLOAD_ASSET_URL',
defaultValue: '')
+ string(description: 'Upload asset url', name: 'UPLOAD_ASSET_URL',
defaultValue: '')
+ }
+
+ environment {
+ OPENSHIFT_NAMESPACE = 'kie-sandbox'
+ OPENSHIFT_PART_OF = 'staging-kie-sandbox-app'
+
+ DMN_DEV_DEPLOYMENT_BASE_IMAGE__registry = 'quay.io'
+ DMN_DEV_DEPLOYMENT_BASE_IMAGE__account = 'kie-tools'
+ DMN_DEV_DEPLOYMENT_BASE_IMAGE__name = 'dmn-dev-deployment-base-image'
+ DMN_DEV_DEPLOYMENT_BASE_IMAGE__buildTags = "${params.TAG}-prerelease"
+ ONLINE_EDITOR__dmnDevDeploymentBaseImageRegistry = 'quay.io'
+ ONLINE_EDITOR__dmnDevDeploymentBaseImageAccount = 'kie-tools'
+ ONLINE_EDITOR__dmnDevDeploymentBaseImageName =
'dmn-dev-deployment-base-image'
+ ONLINE_EDITOR__dmnDevDeploymentBaseImageTag =
"${params.TAG}-prerelease"
+
+ KIE_SANDBOX__imageRegistry = 'quay.io'
+ KIE_SANDBOX__imageAccount = 'kie-tools'
+ KIE_SANDBOX__imageName = 'kie-sandbox-image'
+ KIE_SANDBOX__imageBuildTags = "${params.TAG}-prerelease"
+
+ KIE_SANDBOX_EXTENDED_SERVICES__imageRegistry = 'quay.io'
+ KIE_SANDBOX_EXTENDED_SERVICES__imageAccount = 'kie-tools'
+ KIE_SANDBOX_EXTENDED_SERVICES__imageName =
'kie-sandbox-extended-services-image'
+ KIE_SANDBOX_EXTENDED_SERVICES__imageBuildTags =
"${params.TAG}-prerelease"
+
+ CORS_PROXY_IMAGE__imageRegistry = 'quay.io'
+ CORS_PROXY_IMAGE__imageAccount = 'kie-tools'
+ CORS_PROXY_IMAGE__imageName = 'cors-proxy-image'
+ CORS_PROXY_IMAGE__imageBuildTags = "${params.TAG}-prerelease"
+
+ DEPLOY_TAG = "${params.TAG}-prerelease"
+
+ DASHBUILDER__viewerImageRegistry = 'quay.io'
+ DASHBUILDER__viewerImageAccount = 'kie-tools'
+ DASHBUILDER__viewerImageName = 'dashbuilder-viewer-image'
+ DASHBUILDER__viewerImageBuildTags = "${params.TAG}-prerelease"
+ SERVERLESS_LOGIC_WEB_TOOLS__dashbuilderViewerImageTag =
"${params.TAG}-prerelease"
+ SERVERLESS_LOGIC_WEB_TOOLS__swfBuilderImageRegistry = 'quay.io'
+ SERVERLESS_LOGIC_WEB_TOOLS__swfBuilderImageAccount = 'kie-tools'
+ SERVERLESS_LOGIC_WEB_TOOLS__swfBuilderImageName =
'serverless-logic-web-tools-swf-builder-image'
+ SERVERLESS_LOGIC_WEB_TOOLS__swfBuilderImageTag =
"${params.TAG}-prerelease"
+ SERVERLESS_LOGIC_WEB_TOOLS__swfBuilderImageBuildTags =
"${params.TAG}-prerelease"
+ SERVERLESS_LOGIC_WEB_TOOLS__baseBuilderImageRegistry = 'quay.io'
+ SERVERLESS_LOGIC_WEB_TOOLS__baseBuilderImageAccount = 'kie-tools'
+ SERVERLESS_LOGIC_WEB_TOOLS__baseBuilderImageName =
'serverless-logic-web-tools-base-builder-image'
+ SERVERLESS_LOGIC_WEB_TOOLS__baseBuilderImageTag =
"${params.TAG}-prerelease"
+ SERVERLESS_LOGIC_WEB_TOOLS__baseBuilderImageBuildTags =
"${params.TAG}-prerelease"
+ SERVERLESS_LOGIC_WEB_TOOLS__swfDevModeImageRegistry = 'quay.io'
+ SERVERLESS_LOGIC_WEB_TOOLS__swfDevModeImageAccount = 'kie-tools'
+ SERVERLESS_LOGIC_WEB_TOOLS__swfDevModeImageName =
'serverless-logic-web-tools-swf-dev-mode-image'
+ SERVERLESS_LOGIC_WEB_TOOLS__swfDevModeImageTag =
"${params.TAG}-prerelease"
+ SERVERLESS_LOGIC_WEB_TOOLS__swfDevModeImageBuildTags =
"${params.TAG}-prerelease"
+
+ DOCKER_CONFIG = "${WORKSPACE}/.docker"
+ }
+
+ 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'
+ openShiftUtils = load
'.ci/jenkins/shared-scripts/openShiftUtils.groovy'
+ dockerUtils = load
'.ci/jenkins/shared-scripts/dockerUtils.groovy'
+ zipUtils = load
'.ci/jenkins/shared-scripts/zipUtils.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('Checkout kogito-online-staging') {
+ when {
+ expression { !params.DRY_RUN }
+ }
+ steps {
+ dir('kogito-online-staging') {
+ script {
+ githubUtils.checkoutRepo(
+
'https://github.com/kiegroup/kogito-online-staging.git',
+ 'main',
+ "${pipelineVars.kieToolsBotGithubCredentialsId}"
+ )
+ }
+ }
+ }
+ }
+
+ stage('Checkout serverless-logic-sandbox-deployment') {
+ when {
+ expression { !params.DRY_RUN }
+ }
+ steps {
+ dir('serverless-logic-sandbox-deployment') {
+ script {
+ githubUtils.checkoutRepo(
+
'https://github.com/kiegroup/serverless-logic-sandbox-deployment.git',
+ 'gh-pages',
+ "${pipelineVars.kieToolsBotGithubCredentialsId}"
+ )
+ }
+ }
+ }
+ }
+
+ stage('Setup PNPM') {
+ steps {
+ dir('kie-tools') {
+ script {
+ buildUtils.setupPnpm()
+ }
+ }
+ }
+ }
+
+ stage('PNPM Bootstrap') {
+ steps {
+ dir('kie-tools') {
+ script {
+ buildUtils.pnpmBootstrap()
+ }
+ }
+ }
+ }
+
+ stage('Build (without some images)') {
+ steps {
+ dir('kie-tools') {
+ sh """#!/bin/bash -el
+ export KIE_TOOLS_BUILD__runEndToEndTests=false
+ export KIE_TOOLS_BUILD__runTests=false
+ export KIE_TOOLS_BUILD__runLinters=false
+ export KIE_TOOLS_BUILD__buildContainerImages=true
+ export WEBPACK__minimize=true
+ export WEBPACK__tsLoaderTranspileOnly=false
+ export
CHROME_EXTENSION__routerTargetOrigin=https://kiegroup.github.io
+ export
CHROME_EXTENSION__routerRelativePath=kogito-online-staging/${params.TAG}-prerelease/chrome-extension
+ export
CHROME_EXTENSION__onlineEditorUrl=https://kiegroup.github.io/kogito-online-staging/${params.TAG}-prerelease
+ export CHROME_EXTENSION__manifestFile=manifest.prod.json
+ export
SWF_CHROME_EXTENSION__routerTargetOrigin=https://kiegroup.github.io
+ export
SWF_CHROME_EXTENSION__routerRelativePath=kogito-online-staging/${params.TAG}-prerelease/swf-chrome-extension
+ export
SWF_CHROME_EXTENSION__manifestFile=manifest.prod.json
+ export ONLINE_EDITOR__buildInfo="${params.TAG} (staging) @
${params.COMMIT_SHA}"
+ export
ONLINE_EDITOR__extendedServicesDownloadUrlLinux=${params.DOWNLOAD_ASSET_URL}/STAGING__kie_sandbox_extended_services_linux_${params.TAG}.tar.gz
+ export
ONLINE_EDITOR__extendedServicesDownloadUrlMacOs=${params.DOWNLOAD_ASSET_URL}/STAGING__kie_sandbox_extended_services_macos_${params.TAG}.dmg
+ export
ONLINE_EDITOR__extendedServicesDownloadUrlWindows=${params.DOWNLOAD_ASSET_URL}/STAGING__kie_sandbox_extended_services_windows_${params.TAG}.exe
+ export
ONLINE_EDITOR__extendedServicesCompatibleVersion=${params.TAG}
+ export ONLINE_EDITOR__gtmId=""
+ export
ONLINE_EDITOR__corsProxyUrl=https://staging-cors-proxy-kie-sandbox.rhba-0ad6762cc85bcef5745bb684498c2436-0000.us-south.containers.appdomain.cloud
+ export
EXTENDED_SERVICES__kieSandboxUrl=https://kiegroup.github.io/kogito-online-staging/${params.TAG}-prerelease
+ export
SERVERLESS_LOGIC_WEB_TOOLS__version=${params.TAG}-prerelease
+ export
SERVERLESS_LOGIC_WEB_TOOLS__samplesRepositoryRef=${params.TAG}
+ export
SERVERLESS_LOGIC_WEB_TOOLS__buildInfo="${params.TAG} (staging) @
${params.COMMIT_SHA}"
+ export
SERVERLESS_LOGIC_WEB_TOOLS__corsProxyUrl=https://staging-cors-proxy-kie-sandbox.rhba-0ad6762cc85bcef5745bb684498c2436-0000.us-south.containers.appdomain.cloud
+
+ pnpm
-F='!@kie-tools/serverless-logic-web-tools-swf-dev-mode-image' \
+ -F='!@kie-tools/dmn-dev-deployment-base-image' \
+
-F='!@kie-tools/serverless-logic-web-tools-base-builder-image' \
+ -F='!@kie-tools/dashbuilder-viewer-image' \
+ -r --workspace-concurrency=1 build:prod
+ """.trim()
+ }
+ }
+ }
+
+ stage('STAGING: Push serverless-logic-web-tools-swf-builder-image to
quay.io') {
+ when {
+ expression { !params.DRY_RUN }
+ }
+ steps {
+ script {
+ dockerUtils.pushImageToRegistry(
+
"${env.SERVERLESS_LOGIC_WEB_TOOLS__swfBuilderImageRegistry}/${env.SERVERLESS_LOGIC_WEB_TOOLS__swfBuilderImageAccount}",
+
"${env.SERVERLESS_LOGIC_WEB_TOOLS__swfBuilderImageName}",
+
"${env.SERVERLESS_LOGIC_WEB_TOOLS__swfBuilderImageBuildTags}",
+ "${pipelineVars.quayPushCredentialsId}"
+ )
+ }
+ }
+ }
+
+ stage('STAGING: Deploy Online Editor to kogito-online-staging') {
+ when {
+ expression { !params.DRY_RUN }
+ }
+ steps {
+ dir('kogito-online-staging') {
+ script {
+ DEPLOYMENT_DIR = "${params.TAG}-prerelease"
+
+ sh """#!/bin/bash -el
+ echo "Switch to main branch"
+ git checkout main
+
+ echo "Reset deployment dir"
+ rm -rf ${DEPLOYMENT_DIR}
+
+ echo "Copy Online Editor resources to the deployment
dir"
+ cp -r
${WORKSPACE}/kie-tools/packages/online-editor/dist ${DEPLOYMENT_DIR}
+
+ echo "Create dir for deploying KIE Editors Chrome
Extension resources"
+ mkdir ${DEPLOYMENT_DIR}/chrome-extension
+
+ echo "Create dir for deploying SWF Editor Chrome
Extension resources"
+ mkdir ${DEPLOYMENT_DIR}/swf-chrome-extension
+
+ echo "Copy KIE Editors Chrome Extension resources to
the deployment directory"
+ cp -r
${WORKSPACE}/kie-tools/packages/chrome-extension-pack-kogito-kie-editors/dist/{bpmn,dmn,scesim,fonts,*-envelope.*}
${DEPLOYMENT_DIR}/chrome-extension
+
+ echo "Copy SWF Editor Chrome Extension resources to
the deployment directory"
+ cp -r
${WORKSPACE}/kie-tools/packages/chrome-extension-serverless-workflow-editor/dist/{fonts,diagram,*-envelope.*,*.bundle.js,*.worker.js}
${DEPLOYMENT_DIR}/swf-chrome-extension
+
+ echo "Remove gwt-editors from the Online Editor
deployment"
+ rm -rf ${DEPLOYMENT_DIR}/gwt-editors
+
+ echo "Make the Online Editor use the resources
deployed by the Chrome Extension (to save space)"
+ ln -s chrome-extension ${DEPLOYMENT_DIR}/gwt-editors
+
+ echo "Commit changes and push"
+ git add ${params.TAG}-prerelease
+ git commit -m "Deploy ${params.TAG}-prerelease
(staging)"
+ """.trim()
+
+ withCredentials([usernamePassword(credentialsId:
"${pipelineVars.kieToolsBotGithubCredentialsId}", usernameVariable: 'GH_USER',
passwordVariable: 'GH_PASSWORD')]) {
+ sh('set +x && git push
https://$GH_USER:[email protected]/kiegroup/kogito-online-staging.git
main')
+ }
+ }
+ }
+ }
+ }
+
+ stage('STAGING: Deploy Serverless Logic Web Tools to
serverless-logic-sandbox-deployment') {
+ when {
+ expression { !params.DRY_RUN }
+ }
+ steps {
+ dir('serverless-logic-sandbox-deployment') {
+ script {
+ DEPLOYMENT_DIR = "staging/${params.TAG}-prerelease"
+
+ sh """#!/bin/bash -el
+ echo "Switch to gh-pages branch"
+ git checkout gh-pages
+
+ echo "Reset deployment dir"
+ rm -rf ${DEPLOYMENT_DIR}
+
+ echo "Copy Serverless Logic Web Tools resources to the
deployment dir"
+ cp -r
${WORKSPACE}/kie-tools/packages/serverless-logic-web-tools/dist
${DEPLOYMENT_DIR}
+
+ echo "Commit changes and push"
+ git add ${DEPLOYMENT_DIR}
+ git commit -m "Deploy ${params.TAG}-prerelease
(staging)"
+ """.trim()
+
+ withCredentials([usernamePassword(credentialsId:
"${pipelineVars.kieToolsBotGithubCredentialsId}", usernameVariable: 'GH_USER',
passwordVariable: 'GH_PASSWORD')]) {
+ sh('set +x && git push
https://$GH_USER:[email protected]/kiegroup/serverless-logic-sandbox-deployment.git
gh-pages')
+ }
+ }
+ }
+ }
+ }
+
+ stage('STAGING: Compress Online Editor (Ubuntu only)') {
+ steps {
+ dir('kie-tools/packages/online-editor') {
+ script {
+ zipUtils.zipArtifact('dist.zip', 'dist/*')
+ }
+ }
+ }
+ }
+
+ stage('STAGING: Compress Serverless Logic Web Tools (Ubuntu only)') {
+ steps {
+ dir('kie-tools/packages/serverless-logic-web-tools') {
+ script {
+ zipUtils.zipArtifact('dist.zip', 'dist/*')
+ }
+ }
+ }
+ }
+
+ stage('STAGING: Upload Online Editor') {
+ when {
+ expression { !params.DRY_RUN }
+ }
+ 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}"
+ )
+ }
+ }
+ }
+
+ stage('STAGING: Upload Serverless Logic Web Tools') {
+ when {
+ expression { !params.DRY_RUN }
+ }
+ 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}"
+ )
+ }
+ }
+ }
+
+ stage('STAGING: Upload VS Code Extension (dev)') {
+ when {
+ expression { !params.DRY_RUN }
+ }
+ 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}"
+ )
+ }
+ }
+ }
+
+ stage('STAGING: Upload VS Code Extension - BPMN Editor (prod)') {
+ when {
+ expression { !params.DRY_RUN }
+ }
+ 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}"
+ )
+ }
+ }
+ }
+
+ stage('STAGING: Upload VS Code Extension - DMN Editor (prod)') {
+ when {
+ expression { !params.DRY_RUN }
+ }
+ 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}"
+ )
+ }
+ }
+ }
+
+ stage('STAGING: Upload VS Code Extension - PMML Editor (prod)') {
+ when {
+ expression { !params.DRY_RUN }
+ }
+ 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}"
+ )
+ }
+ }
+ }
+
+ stage('STAGING: Upload VS Code Extension - Serverless Workflow Editor
- KIE (prod)') {
+ when {
+ expression { !params.DRY_RUN }
+ }
+ 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}"
+ )
+ }
+ }
+ }
+
+ stage('STAGING: Upload VS Code Extension - Dashbuilder Editor (prod)')
{
+ when {
+ expression { !params.DRY_RUN }
+ }
+ 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}"
+ )
+ }
+ }
+ }
+
+ stage('STAGING: Upload VS Code Extension - Kogito Bundle (prod)') {
+ when {
+ expression { !params.DRY_RUN }
+ }
+ 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}"
+ )
+ }
+ }
+ }
+
+ stage('STAGING: Upload VS Code Extension - KIE Business Automation
Bundle (prod)') {
+ when {
+ expression { !params.DRY_RUN }
+ }
+ 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}"
+ )
+ }
+ }
+ }
+
+ stage('STAGING: Upload Chrome Extension for KIE Editors') {
+ when {
+ expression { !params.DRY_RUN }
+ }
+ 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}"
+ )
+ }
+ }
+ }
+
+ stage('STAGING: Upload Chrome Extension for Serverless Workflow
Editor') {
+ when {
+ expression { !params.DRY_RUN }
+ }
+ 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}"
+ )
+ }
+ }
+ }
+
+ stage('STAGING: Upload Extended Services for Linux') {
+ when {
+ expression { !params.DRY_RUN }
+ }
+ 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}"
+ )
+ }
+ }
+ }
+
+ // STAGING: Upload Extended Services for macOS (macOS only)
+ // STAGING: Upload Extended Services for Windows (Windows only)
+
+ stage('STAGING: Upload Knative CLI Workflow Plugin for Linux') {
+ when {
+ expression { !params.DRY_RUN }
+ }
+ 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}"
+ )
+ }
+ }
+ }
+
+ stage('STAGING: Upload Knative CLI Workflow Plugin for macOS') {
+ when {
+ expression { !params.DRY_RUN }
+ }
+ 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}"
+ )
+ }
+ }
+ }
+
+ stage('STAGING: Upload Knative CLI Workflow Plugin for macOS M1') {
+ when {
+ expression { !params.DRY_RUN }
+ }
+ 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}"
+ )
+ }
+ }
+ }
+
+ stage('STAGING: Upload Knative CLI Workflow Plugin for Windows') {
+ when {
+ expression { !params.DRY_RUN }
+ }
+ 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}"
+ )
+ }
+ }
+ }
+
+ stage('STAGING: Push kie-sandbox-extended-services-image to quay.io') {
+ when {
+ expression { !params.DRY_RUN }
+ }
+ steps {
+ script {
+ dockerUtils.pushImageToRegistry(
+
"${env.KIE_SANDBOX_EXTENDED_SERVICES__imageRegistry}/${env.KIE_SANDBOX_EXTENDED_SERVICES__imageAccount}",
+ "${env.KIE_SANDBOX_EXTENDED_SERVICES__imageName}",
+ "${env.KIE_SANDBOX_EXTENDED_SERVICES__imageBuildTags}",
+ "${pipelineVars.quayPushCredentialsId}"
+ )
+ }
+ }
+ }
+
+ stage('STAGING: Deploy kie-sandbox-extended-services-image to
OpenShift') {
+ when {
+ expression { !params.DRY_RUN }
+ }
+ steps {
+ script {
+ appName = 'staging-kie-sandbox-extended-services'
+ openShiftUtils.createOrUpdateApp(
+ "${env.OPENSHIFT_NAMESPACE}",
+ "${appName}",
+ "${env.DEPLOY_TAG}",
+
"${env.KIE_SANDBOX_EXTENDED_SERVICES__imageRegistry}/${env.KIE_SANDBOX_EXTENDED_SERVICES__imageAccount}/${env.KIE_SANDBOX_EXTENDED_SERVICES__imageName}:${env.DEPLOY_TAG}",
+ "${env.OPENSHIFT_PART_OF}",
+ 'golang',
+ "${pipelineVars.openshiftCredentialsId}"
+ )
+ env.KIE_SANDBOX_EXTENDED_SERVICES_URL =
openShiftUtils.getAppRoute("${env.OPENSHIFT_NAMESPACE}", "${appName}",
"${pipelineVars.openshiftCredentialsId}")
+ }
+ }
+ }
+
+ stage('STAGING: Push cors-proxy-image to quay.io') {
+ when {
+ expression { !params.DRY_RUN }
+ }
+ steps {
+ script {
+ dockerUtils.pushImageToRegistry(
+
"${env.CORS_PROXY_IMAGE__imageRegistry}/${env.CORS_PROXY_IMAGE__imageAccount}",
+ "${env.CORS_PROXY_IMAGE__imageName}",
+ "${env.CORS_PROXY_IMAGE__imageBuildTags}",
+ "${pipelineVars.quayPushCredentialsId}"
+ )
+ }
+ }
+ }
+
+ stage('STAGING: Deploy cors-proxy-image to OpenShift') {
+ when {
+ expression { !params.DRY_RUN }
+ }
+ steps {
+ script {
+ appName = 'staging-cors-proxy'
+ openShiftUtils.createOrUpdateApp(
+ "${env.OPENSHIFT_NAMESPACE}",
+ "${appName}",
+ "${env.DEPLOY_TAG}",
+
"${env.CORS_PROXY_IMAGE__imageRegistry}/${env.CORS_PROXY_IMAGE__imageAccount}/${env.CORS_PROXY_IMAGE__imageName}:${env.DEPLOY_TAG}",
+ "${env.OPENSHIFT_PART_OF}",
+ 'nodejs',
+ "${pipelineVars.openshiftCredentialsId}"
+ )
+ env.KIE_SANDBOX_CORS_PROXY_URL =
openShiftUtils.getAppRoute("${env.OPENSHIFT_NAMESPACE}", "${appName}",
"${pipelineVars.openshiftCredentialsId}")
+ }
+ }
+ }
+
+ stage('STAGING: Push kie-sandbox-image to quay.io') {
+ when {
+ expression { !params.DRY_RUN }
+ }
+ steps {
+ script {
+ dockerUtils.pushImageToRegistry(
+
"${env.KIE_SANDBOX__imageRegistry}/${env.KIE_SANDBOX__imageAccount}",
+ "${env.KIE_SANDBOX__imageName}",
+ "${env.KIE_SANDBOX__imageBuildTags}",
+ "${pipelineVars.quayPushCredentialsId}"
+ )
+ }
+ }
+ }
+
+ stage('STAGING: Prepare environment variables for OpenShift
deployment') {
+ when {
+ expression { !params.DRY_RUN }
+ }
+ steps {
+ sh """#!/bin/bash -el
+ echo
"KIE_SANDBOX_EXTENDED_SERVICES_URL=${env.KIE_SANDBOX_EXTENDED_SERVICES_URL}" >>
deployment.env
+ echo
"KIE_SANDBOX_CORS_PROXY_URL=${env.KIE_SANDBOX_CORS_PROXY_URL}" >> deployment.env
+ """.trim()
+ }
+ }
+
+ stage('STAGING: Deploy kie-sandbox-image to OpenShift') {
+ when {
+ expression { !params.DRY_RUN }
+ }
+ steps {
+ script {
+ openShiftUtils.createOrUpdateApp(
+ "${env.OPENSHIFT_NAMESPACE}",
+ 'staging-kie-sandbox',
+ "${env.DEPLOY_TAG}",
+
"${env.KIE_SANDBOX__imageRegistry}/${env.KIE_SANDBOX__imageAccount}/${env.KIE_SANDBOX__imageName}:${env.DEPLOY_TAG}",
+ "${env.OPENSHIFT_PART_OF}",
+ 'js',
+ "${pipelineVars.openshiftCredentialsId}",
+ './deployment.env'
+ )
+ }
+ }
+ }
+
+ stage('Build (serverless-logic-web-tools-swf-dev-mode-image)') {
+ steps {
+ dir('kie-tools') {
+ 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()
+ }
+ }
+ }
+
+ stage('STAGING: Push serverless-logic-web-tools-swf-dev-mode-image to
quay.io') {
+ when {
+ expression { !params.DRY_RUN }
+ }
+ steps {
+ script {
+ dockerUtils.pushImageToRegistry(
+
"${env.SERVERLESS_LOGIC_WEB_TOOLS__swfDevModeImageRegistry}/${env.SERVERLESS_LOGIC_WEB_TOOLS__swfDevModeImageAccount}",
+
"${env.SERVERLESS_LOGIC_WEB_TOOLS__swfDevModeImageName}",
+
"${env.SERVERLESS_LOGIC_WEB_TOOLS__swfDevModeImageBuildTags}",
+ "${pipelineVars.quayPushCredentialsId}"
+ )
+ }
+ }
+ }
+
+ stage('Build (dmn-dev-deployment-base-image)') {
+ steps {
+ dir('kie-tools') {
+ sh '''#!/bin/bash -el
+ export KIE_TOOLS_BUILD__runTests=true
+ export KIE_TOOLS_BUILD__buildContainerImages=true
+ docker system prune -af
+ echo "Build @kie-tools/dmn-dev-deployment-base-image"
+ pnpm -F @kie-tools/dmn-dev-deployment-base-image...
--workspace-concurrency=1 build:prod
+ '''.trim()
+ }
+ }
+ }
+
+ stage('STAGING: Push dmn-dev-deployment-base-image to quay.io') {
+ when {
+ expression { !params.DRY_RUN }
+ }
+ steps {
+ script {
+ dockerUtils.pushImageToRegistry(
+
"${env.DMN_DEV_DEPLOYMENT_BASE_IMAGE__registry}/${env.DMN_DEV_DEPLOYMENT_BASE_IMAGE__account}",
+ "${env.DMN_DEV_DEPLOYMENT_BASE_IMAGE__name}",
+ "${env.DMN_DEV_DEPLOYMENT_BASE_IMAGE__buildTags}",
+ "${pipelineVars.quayPushCredentialsId}"
+ )
+ }
+ }
+ }
+
+ stage('Build (serverless-logic-web-tools-base-builder-image)') {
+ steps {
+ dir('kie-tools') {
+ 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()
+ }
+ }
+ }
+
+ stage('STAGING: Push serverless-logic-web-tools-base-builder-image to
quay.io') {
+ when {
+ expression { !params.DRY_RUN }
+ }
+ steps {
+ script {
+ dockerUtils.pushImageToRegistry(
+
"${env.SERVERLESS_LOGIC_WEB_TOOLS__baseBuilderImageRegistry}/${env.SERVERLESS_LOGIC_WEB_TOOLS__baseBuilderImageAccount}",
+
"${env.SERVERLESS_LOGIC_WEB_TOOLS__baseBuilderImageName}",
+
"${env.SERVERLESS_LOGIC_WEB_TOOLS__baseBuilderImageBuildTags}",
+ "${pipelineVars.quayPushCredentialsId}"
+ )
+ }
+ }
+ }
+
+ stage('Build (dashbuilder-viewer-image)') {
+ steps {
+ dir('kie-tools') {
+ 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()
+ }
+ }
+ }
+
+ stage('STAGING: Push dashbuilder-viewer-image to quay.io') {
+ when {
+ expression { !params.DRY_RUN }
+ }
+ steps {
+ script {
+ dockerUtils.pushImageToRegistry(
+
"${env.DASHBUILDER__viewerImageRegistry}/${env.DASHBUILDER__viewerImageAccount}",
+ "${env.DASHBUILDER__viewerImageName}",
+ "${env.DASHBUILDER__viewerImageBuildTags}",
+ "${pipelineVars.quayPushCredentialsId}"
+ )
+ }
+ }
+ }
+ }
+
+ post {
+ always {
+ cleanWs(deleteDirs: true)
+ }
+ }
+}
diff --git a/.ci/jenkins/Jenkinsfile.staging-dry-run
b/.ci/jenkins/Jenkinsfile.staging-dry-run
new file mode 100644
index 0000000000..dc8d3caaa5
--- /dev/null
+++ b/.ci/jenkins/Jenkinsfile.staging-dry-run
@@ -0,0 +1,44 @@
+/*
+ * 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'
+ }
+ }
+
+ options {
+ timeout(time: 240, unit: 'MINUTES')
+ }
+
+ stages {
+ stage('Staging Build (dry run)') {
+ steps {
+ build job: 'KIE/kie-tools/kie-tools-staging-build',
parameters: [
+ booleanParam(name: 'DRY_RUN', value: true),
+ string(name: 'BASE_REF', value: 'main')
+ ]
+ }
+ }
+ }
+
+ post {
+ always {
+ cleanWs(deleteDirs: true)
+ }
+ }
+}
diff --git a/.ci/jenkins/Jenkinsfile.staging-publish
b/.ci/jenkins/Jenkinsfile.staging-publish
new file mode 100644
index 0000000000..fe5e9c3aa3
--- /dev/null
+++ b/.ci/jenkins/Jenkinsfile.staging-publish
@@ -0,0 +1,123 @@
+/*
+ * 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'
+ }
+ }
+
+ options {
+ timeout(time: 240, unit: 'MINUTES')
+ }
+
+ stages {
+ stage('Load local shared scripts') {
+ steps {
+ script {
+ pipelineVars = load
'.ci/jenkins/shared-scripts/pipelineVars.groovy'
+ githubUtils = load
'.ci/jenkins/shared-scripts/githubUtils.groovy'
+ }
+ }
+ }
+
+ stage('Clean workspace before build') {
+ steps {
+ cleanWs(deleteDirs: true, disableDeferredWipeout: true)
+ }
+ }
+
+ stage('Checkout kie-tools') {
+ steps {
+ dir('kie-tools') {
+ checkout scm
+ }
+ }
+ }
+
+ stage('Parse `tag`') {
+ steps {
+ dir('kie-tools') {
+ script {
+ env.TAG = sh(returnStdout: true, script: "#!/bin/bash
-el \n node -p \"'\${GIT_BRANCH}'.match(/(.+)-prerelease/)[1]\"").trim()
+ env.PACKAGE_VERSION = sh(returnStdout: true, script:
"#!/bin/bash -el \n node -p \"require('./package.json').version\"").trim()
+ env.COMMIT_SHA = sh(returnStdout: true, script: 'git
rev-parse HEAD').trim()
+ }
+ }
+ }
+ }
+
+ stage('Check `tag` against `package.json.version`') {
+ steps {
+ dir('kie-tools') {
+ sh """#!/bin/bash -el
+ [[ "${env.TAG}" == "${env.PACKAGE_VERSION}" ]]
+ """.trim()
+ }
+ }
+ }
+
+ stage('Create Release (draft)') {
+ steps {
+ script {
+ response = githubUtils.createRelease(
+ "${pipelineVars.githubRepositorySlug}",
+ "${env.TAG} @ (alpha)",
+ "${env.TAG}",
+ "${env.COMMIT_SHA}",
+ true,
+ true,
+ "${pipelineVars.kieToolsBotGithubTokenCredentialsId}"
+ )
+
+ respJSON = readJSON text: response
+
+ env.RELEASE_ID = respJSON.id
+ env.RELEASE_HTML_URL = respJSON.html_url
+ env.RELEASE_UPLOAD_ASSET_URL =
githubUtils.parseReleaseAssetUploadUrl(respJSON.upload_url)
+ }
+ }
+ }
+
+ stage('Generate download URL for Release assets') {
+ steps {
+ script {
+ env.RELEASE_DOWNLOAD_ASSET_URL = sh(returnStdout: true,
script: "echo ${env.RELEASE_HTML_URL} | sed \"s#/tag/#/download/#\"").trim()
+ }
+ }
+ }
+
+ stage('Staging Build and Publish') {
+ steps {
+ build job: 'KIE/kie-tools/kie-tools-staging-build',
parameters: [
+ booleanParam(name: 'DRY_RUN', value: false),
+ string(name: 'BASE_REF', value: "${GIT_BRANCH}"),
+ string(name: 'TAG', value: "${env.TAG}"),
+ string(name: 'COMMIT_SHA', value: "${env.COMMIT_SHA}"),
+ string(name: 'DOWNLOAD_ASSET_URL', value:
"${env.RELEASE_DOWNLOAD_ASSET_URL}"),
+ string(name: 'UPLOAD_ASSET_URL', value:
"${env.RELEASE_UPLOAD_ASSET_URL}")
+ ]
+ }
+ }
+ }
+
+ post {
+ always {
+ cleanWs(deleteDirs: true)
+ }
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]