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 79149ac2a5 CI - Sync changes (#22)
79149ac2a5 is described below
commit 79149ac2a563fb72bb9dac4693338b427517dc37
Author: Rodrigo Antunes <[email protected]>
AuthorDate: Mon Nov 27 09:22:03 2023 -0300
CI - Sync changes (#22)
* CI - Disable workflows migrated to Jenkins (#20)
* CI - Disable workflows migrated to Jenkins
* Update CI Build workflow name
* Remove disallowed actions
* CI - Jenkins shared scripts (#21)
* CI - Jenkins shared scripts
* Update openshift get route utility
* CI - Daily dev publish Jenkins job (#10)
* CI - Daily dev publish Jenkins job
* Fix artifacts and build date
* Add env debug
* remove env debug
* Small code improvements
* remove unecessary code
* Start using the kie-tools-pipeline-lib utilities
* Fix identation
* Reflect library changes
* Use shared scripts
* Use shared scripts
* Update image tag
* Update Jenkinsfile name
* Add DOCKER_CONFIG env var
---
.ci/jenkins/Jenkinsfile.daily-dev-publish | 417 +++++++++++++++++++++
.ci/jenkins/shared-scripts/buildUtils.groovy | 110 ++++++
.ci/jenkins/shared-scripts/chromeStoreUtils.groovy | 52 +++
.ci/jenkins/shared-scripts/dockerUtils.groovy | 32 ++
.ci/jenkins/shared-scripts/githubUtils.groovy | 180 +++++++++
.ci/jenkins/shared-scripts/openShiftUtils.groovy | 77 ++++
.ci/jenkins/shared-scripts/pipelineVars.groovy | 20 +
.ci/jenkins/shared-scripts/zipUtils.groovy | 37 ++
.github/actions/checkout-pr/action.yml | 2 +-
.github/actions/setup-env/action.yml | 22 +-
.github/workflows/ci_build.yml | 8 +-
.github/workflows/ci_check_code_formatting.yml | 9 +-
.../ci_check_dependencies_consistency.yaml | 9 +-
.github/workflows/ci_codeql.yml | 10 +-
.../ci_sonar_analysis_stunner_editors.yml | 13 +-
.github/workflows/daily_dev_publish.yml | 10 +-
.github/workflows/jenkins-tests-PR.yml | 13 +-
.github/workflows/publish_jitexecutor_native.yml | 6 +-
.../workflows/release_build_extended_services.yml | 87 +++++
.github/workflows/release_dry_run.yml | 14 +-
...n.yml => release_dry_run_extended_services.yml} | 10 +-
.../release_publish_extended_services.yml | 47 +++
.../workflows/staging_build_extended_services.yml | 89 +++++
.github/workflows/staging_dry_run.yml | 14 +-
...n.yml => staging_dry_run_extended_services.yml} | 4 +-
.github/workflows/staging_publish.yml | 5 +-
.../staging_publish_extended_services.yml | 51 +++
27 files changed, 1266 insertions(+), 82 deletions(-)
diff --git a/.ci/jenkins/Jenkinsfile.daily-dev-publish
b/.ci/jenkins/Jenkinsfile.daily-dev-publish
new file mode 100644
index 0000000000..138d3daefc
--- /dev/null
+++ b/.ci/jenkins/Jenkinsfile.daily-dev-publish
@@ -0,0 +1,417 @@
+/*
+ * 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')
+ }
+
+ environment {
+ KIE_SANDBOX_EXTENDED_SERVICES_VERSION = '0.0.0'
+
+ KIE_TOOLS_BUILD__buildContainerImages = 'true'
+ KIE_TOOLS_BUILD__runLinters = 'false'
+ KIE_TOOLS_BUILD__runTests = 'false'
+ KIE_TOOLS_BUILD__runEndToEndTests = 'false'
+
+ 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 = 'daily-dev'
+
+ ONLINE_EDITOR__dmnDevDeploymentBaseImageRegistry = 'quay.io'
+ ONLINE_EDITOR__dmnDevDeploymentBaseImageAccount = 'kie-tools'
+ ONLINE_EDITOR__dmnDevDeploymentBaseImageName =
'dmn-dev-deployment-base-image'
+ ONLINE_EDITOR__dmnDevDeploymentBaseImageTag = 'daily-dev'
+ ONLINE_EDITOR__corsProxyUrl =
'https://daily-dev-cors-proxy-kie-sandbox.rhba-0ad6762cc85bcef5745bb684498c2436-0000.us-south.containers.appdomain.cloud'
+
+ EXTENDED_SERVICES__kieSandboxUrl =
'https://kiegroup.github.io/kogito-online/dev'
+
+ KIE_SANDBOX__imageRegistry = 'quay.io'
+ KIE_SANDBOX__imageAccount = 'kie-tools'
+ KIE_SANDBOX__imageName = 'kie-sandbox-image'
+ KIE_SANDBOX__imageBuildTags = 'daily-dev'
+
+ 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 = 'daily-dev'
+
+ CORS_PROXY_IMAGE__imageRegistry = 'quay.io'
+ CORS_PROXY_IMAGE__imageAccount = 'kie-tools'
+ CORS_PROXY_IMAGE__imageName = 'cors-proxy-image'
+ CORS_PROXY_IMAGE__imageBuildTags = 'daily-dev'
+
+ OPENSHIFT_NAMESPACE = 'kie-sandbox'
+ OPENSHIFT_PART_OF = 'daily-dev-kie-sandbox-app'
+ DEPLOY_TAG = 'daily-dev'
+
+ DASHBUILDER__viewerImageRegistry = 'quay.io'
+ DASHBUILDER__viewerImageAccount = 'kie-tools'
+ DASHBUILDER__viewerImageName = 'dashbuilder-viewer-image'
+ DASHBUILDER__viewerImageBuildTags = 'daily-dev'
+
+ SERVERLESS_LOGIC_WEB_TOOLS__dashbuilderViewerImageTag = 'daily-dev'
+ 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 = 'daily-dev'
+ SERVERLESS_LOGIC_WEB_TOOLS__swfBuilderImageBuildTags = 'daily-dev'
+ 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 = 'daily-dev'
+ SERVERLESS_LOGIC_WEB_TOOLS__baseBuilderImageBuildTags = 'daily-dev'
+ 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 = 'daily-dev'
+ SERVERLESS_LOGIC_WEB_TOOLS__swfDevModeImageBuildTags = 'daily-dev'
+ SERVERLESS_LOGIC_WEB_TOOLS__corsProxyUrl =
'https://daily-dev-cors-proxy-kie-sandbox.rhba-0ad6762cc85bcef5745bb684498c2436-0000.us-south.containers.appdomain.cloud'
+
+ BUILD_DATE = sh(script: "echo `date +'%Y-%m-%d %T'`", returnStdout:
true).trim()
+
+ 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'
+ }
+ }
+ }
+
+ 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') {
+ checkout scm
+ }
+ }
+ }
+
+ stage('Output version') {
+ steps {
+ dir('kie-tools') {
+ script {
+ env.VERSION = sh(returnStdout: true, script:
"#!/bin/bash -el \n node -e
\"console.log(require('./package.json').version);\"").trim()
+ }
+ }
+ }
+ }
+
+ stage('Setup PNPM') {
+ steps {
+ dir('kie-tools') {
+ script {
+ buildUtils.setupPnpm()
+ }
+ }
+ }
+ }
+
+ stage('PNPM Bootstrap') {
+ steps {
+ dir('kie-tools') {
+ script {
+ buildUtils.pnpmBootstrap()
+ }
+ }
+ }
+ }
+
+ stage('Build') {
+ steps {
+ dir('kie-tools') {
+ sh """#!/bin/bash -el
+ export WEBPACK__minimize=true
+ export WEBPACK__tsLoaderTranspileOnly=false
+ export
CHROME_EXTENSION__routerTargetOrigin=https://kiegroup.github.io
+ export
CHROME_EXTENSION__routerRelativePath=kogito-online/dev/editors/
+ export
SWF_CHROME_EXTENSION__routerTargetOrigin=https://kiegroup.github.io
+ export
SWF_CHROME_EXTENSION__routerRelativePath=kogito-online/dev/editors/
+ export
ONLINE_EDITOR__extendedServicesDownloadUrlLinux=https://github.com/kiegroup/kie-tools/releases/download/${env.KIE_SANDBOX_EXTENDED_SERVICES_VERSION}/kie_sandbox_extended_services_linux_${env.KIE_SANDBOX_EXTENDED_SERVICES_VERSION}.tar.gz
+ export
ONLINE_EDITOR__extendedServicesDownloadUrlMacOs=https://github.com/kiegroup/kie-tools/releases/download/${env.KIE_SANDBOX_EXTENDED_SERVICES_VERSION}/kie_sandbox_extended_services_macos_${env.KIE_SANDBOX_EXTENDED_SERVICES_VERSION}.dmg
+ export
ONLINE_EDITOR__extendedServicesDownloadUrlWindows=https://github.com/kiegroup/kie-tools/releases/download/${env.KIE_SANDBOX_EXTENDED_SERVICES_VERSION}/kie_sandbox_extended_services_windows_${env.KIE_SANDBOX_EXTENDED_SERVICES_VERSION}.exe
+ export
ONLINE_EDITOR__extendedServicesCompatibleVersion=${env.KIE_SANDBOX_EXTENDED_SERVICES_VERSION}
+ export ONLINE_EDITOR__buildInfo="${env.VERSION}
(daily-dev) @ ${env.GIT_COMMIT} (${env.BUILD_DATE})"
+ export
SERVERLESS_LOGIC_WEB_TOOLS__buildInfo="${env.VERSION} (daily-dev) @
${env.GIT_COMMIT} (${env.BUILD_DATE})"
+ pnpm -r --workspace-concurrency=1 build:prod
+ """.trim()
+ }
+ }
+ }
+
+ stage('Push dmn-dev-deployment-base-image to quay.io') {
+ 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('Push kie-sandbox-extended-services-image to quay.io') {
+ 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('Deploy kie-sandbox-extended-services-image to OpenShift') {
+ steps {
+ script {
+ appName = 'daily-dev-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('Push cors-proxy-image to quay.io') {
+ 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('Deploy cors-proxy-image to OpenShift') {
+ steps {
+ script {
+ appName = 'daily-dev-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('Push kie-sandbox-image to quay.io') {
+ steps {
+ script {
+ dockerUtils.pushImageToRegistry(
+
"${env.KIE_SANDBOX__imageRegistry}/${env.KIE_SANDBOX__imageAccount}",
+ "${env.KIE_SANDBOX__imageName}",
+ "${env.KIE_SANDBOX__imageBuildTags}",
+ "${pipelineVars.quayPushCredentialsId}"
+ )
+ }
+ }
+ }
+
+ stage('Prepare environment variables for OpenShift deployment') {
+ 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('Deploy kie-sandbox-image to OpenShift') {
+ steps {
+ script {
+ openShiftUtils.createOrUpdateApp(
+ "${env.OPENSHIFT_NAMESPACE}",
+ 'daily-dev-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('Push serverless-logic-web-tools-swf-builder-image to quay.io') {
+ 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('Push serverless-logic-web-tools-base-builder-image to quay.io')
{
+ 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('Push serverless-logic-web-tools-swf-dev-mode-image to quay.io')
{
+ 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('Push dashbuilder-viewer-image to quay.io') {
+ steps {
+ script {
+ dockerUtils.pushImageToRegistry(
+
"${env.DASHBUILDER__viewerImageRegistry}/${env.DASHBUILDER__viewerImageAccount}",
+ "${env.DASHBUILDER__viewerImageName}",
+ "${env.DASHBUILDER__viewerImageBuildTags}",
+ "${pipelineVars.quayPushCredentialsId}"
+ )
+ }
+ }
+ }
+
+ stage('Update kogito-online resources') {
+ steps {
+ dir('kogito-online') {
+ script {
+ githubUtils.checkoutRepo(
+ 'https://github.com/kiegroup/kogito-online.git',
+ 'gh-pages',
+ "${pipelineVars.kieToolsBotGithubCredentialsId}"
+ )
+
+ sh """#!/bin/bash -el
+ git config --global user.email '[email protected]'
+ git config --global user.name 'KIE Tools Bot
(kiegroup)'
+ git checkout gh-pages
+ rm -rf dev && mkdir -p dev/editors
+ cp -RL ../kie-tools/packages/stunner-editors/dist/dmn
dev/editors/
+ cp -RL ../kie-tools/packages/stunner-editors/dist/bpmn
dev/editors/
+ cp -RL
../kie-tools/packages/stunner-editors/dist/scesim dev/editors/
+ cp -r ../kie-tools/packages/online-editor/dist/* dev/
+ rm -rf dev/gwt-editors
+ ln -s editors dev/gwt-editors
+ git add . && git commit -m "KIE Tools Daily Dev Build
resources - ${env.BUILD_DATE}" || echo 'No changes.'
+ """.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.git gh-pages')
+ }
+ }
+ }
+ }
+ }
+
+ stage('Update serverless-logic-sandbox-deployment') {
+ steps {
+ dir('serverless-logic-sandbox-deployment') {
+ script {
+ githubUtils.checkoutRepo(
+
'https://github.com/kiegroup/serverless-logic-sandbox-deployment.git',
+ 'gh-pages',
+ "${pipelineVars.kieToolsBotGithubCredentialsId}"
+ )
+
+ sh """#!/bin/bash -el
+ git config --global user.email '[email protected]'
+ git config --global user.name 'KIE Tools Bot
(kiegroup)'
+ git checkout gh-pages
+ rm -rf dev && mkdir dev
+ cp -r
../kie-tools/packages/serverless-logic-web-tools/dist/* dev/
+ git add . && git commit -m "KIE Tools Daily Dev Build
resources - ${env.BUILD_DATE}" || echo 'No changes.'
+ """.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')
+ }
+ }
+ }
+ }
+ }
+ }
+
+ post {
+ always {
+ archiveArtifacts artifacts:
"kie-tools/packages/serverless-workflow-vscode-extension/dist/serverless_workflow_vscode_extension_${env.VERSION}.vsix,
kie-tools/packages/vscode-extension-dashbuilder-editor/dist/vscode_extension_dashbuilder_editor_${env.VERSION}.vsix,
kie-tools/packages/kie-editors-dev-vscode-extension/dist/kie_editors_dev_vscode_extension_${env.VERSION}.vsix,
kie-tools/packages/chrome-extension-pack-kogito-kie-editors/dist/chrome_extension_kogito_kie_editors_${e
[...]
+
+ cleanWs(deleteDirs: true, disableDeferredWipeout: true)
+ }
+ }
+}
diff --git a/.ci/jenkins/shared-scripts/buildUtils.groovy
b/.ci/jenkins/shared-scripts/buildUtils.groovy
new file mode 100644
index 0000000000..9a01314af9
--- /dev/null
+++ b/.ci/jenkins/shared-scripts/buildUtils.groovy
@@ -0,0 +1,110 @@
+/*
+ * 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.
+ */
+
+/**
+* Start Docker in Docker (DinD)
+*/
+def startDockerInDocker() {
+ sh '''#!/bin/bash -el
+ sudo entrypoint.sh
+ sudo service dbus start
+ '''.trim()
+}
+
+/**
+* Start Xvfb X server required for KIE-Tools E2E tests
+*/
+def startXvfb() {
+ sh '''#!/bin/bash -el
+ Xvfb :99 -screen 0 1920x1080x24 > /dev/null 2>&1 &
+ '''.trim()
+}
+
+/**
+* Start Fluxbox window manager required for KIE-Tools E2E tests
+*/
+def startFluxbox() {
+ sh '''#!/bin/bash -el
+ fluxbox -display :99 > /dev/null 2>&1 &
+ '''.trim()
+}
+
+/**
+* Setup PNPM parameters for building KIE-Tools
+*/
+def setupPnpm() {
+ sh """#!/bin/bash -el
+ pnpm config set network-timeout 1000000
+ pnpm -r exec 'bash' '-c' 'mkdir .mvn'
+ pnpm -r exec 'bash' '-c' 'echo -B > .mvn/maven.config'
+ pnpm -r exec 'bash' '-c' 'echo -ntp >> .mvn/maven.config'
+ pnpm -r exec 'bash' '-c' 'echo -Xmx2g > .mvn/jvm.config'
+ pnpm -F *-image exec sed -i
's/\\("build:prod.*".*\\)podman:build\\(.*\\)/\\1docker:build\\2/g' package.json
+ """.trim()
+}
+
+/**
+* PNPM Bootsrap
+*/
+def pnpmBootstrap(String filters = '') {
+ sh """#!/bin/bash -el
+ pnpm bootstrap ${filters}
+ """.trim()
+}
+
+/**
+* PNPM build all packages
+*/
+def pnpmBuildFull(Integer workspaceConcurrency = 1) {
+ sh """#!/bin/bash -el
+ pnpm -r --workspace-concurrency=${workspaceConcurrency} build:prod
+ """.trim()
+}
+
+/**
+* PNPM build a set of packages
+*/
+def pnpmBuild(String filters, Integer workspaceConcurrency = 1) {
+ sh """#!/bin/bash -el
+ pnpm ${filters} --workspace-concurrency=${workspaceConcurrency} build:prod
+ """.trim()
+}
+
+/**
+* Start KIE-Tools required services for build and test
+*/
+def startRequiredServices() {
+ startDockerInDocker()
+ startXvfb()
+ startFluxbox()
+}
+
+/**
+* @return String build datetime - format (%Y-%m-%d %T)
+*/
+def buildDateTime() {
+ return sh(script: "echo `date +'%Y-%m-%d %T'`", returnStdout: true).trim()
+}
+
+/**
+* @return String the Apache Jenkins agent nodes with higher capacity (builds22
to builds40)
+**/
+def apacheAgentLabels() {
+ return (22..40).collect{"builds$it"}.join(' || ')
+}
+
+return this;
diff --git a/.ci/jenkins/shared-scripts/chromeStoreUtils.groovy
b/.ci/jenkins/shared-scripts/chromeStoreUtils.groovy
new file mode 100644
index 0000000000..610df262af
--- /dev/null
+++ b/.ci/jenkins/shared-scripts/chromeStoreUtils.groovy
@@ -0,0 +1,52 @@
+/*
+ * 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.
+ */
+
+/**
+* Upload an extension to Chrome Store
+*
+* @return String status
+*/
+def uploadExtension(String chromeStoreCredentialsId, String
chromeStoreRefreshTokenCredentialsId, String file, String extensionId) {
+ withCredentials([usernamePassword(credentialsId: chromeStoreCredentialsId,
usernameVariable: 'CLIENT_ID', passwordVariable: 'CLIENT_SECRET')]) {
+ withCredentials([string(credentialsId:
"${pipelineVars.chromeStoreRefreshTokenCredentialsId}", variable:
'REFRESH_TOKEN')]) {
+ accessToken = sh(returnStdout: true, script: "curl -X POST -fsS
\"https://oauth2.googleapis.com/token\" -d
\"client_id=${CLIENT_ID}&client_secret=${CLIENT_SECRET}&refresh_token=${REFRESH_TOKEN}&grant_type=refresh_token\"
| jq -r '.access_token'").trim()
+ uploadResponse = sh(returnStdout: true, script: "curl -X PUT -sS
\"https://www.googleapis.com/upload/chromewebstore/v1.1/items/${extensionId}\"
-H \"Authorization: Bearer ${accessToken}\" -H \"x-goog-api-version:2\" -T
${file}").trim()
+
+ return sh(returnStdout: true, script: "echo \"${uploadResponse}\"
| jq -r '.uploadState'").trim()
+ }
+ }
+}
+
+/**
+* Publish an extension to Chrome Store
+*
+* @return String status
+*/
+def publishExtension(String chromeStoreCredentialsId, String
chromeStoreRefreshTokenCredentialsId, String extensionId) {
+ withCredentials([usernamePassword(credentialsId:
"${pipelineVars.chromeStoreCredentialsId}", usernameVariable: 'CLIENT_ID',
passwordVariable: 'CLIENT_SECRET')]) {
+ withCredentials([string(credentialsId:
"${pipelineVars.chromeStoreRefreshTokenCredentialsId}", variable:
'REFRESH_TOKEN')]) {
+ script {
+ accessToken = sh(returnStdout: true, script: "curl -X POST
-fsS \"https://oauth2.googleapis.com/token\" -d
\"client_id=${CLIENT_ID}&client_secret=${CLIENT_SECRET}&refresh_token=${REFRESH_TOKEN}&grant_type=refresh_token\"
| jq -r '.access_token'").trim()
+ publishResponse = sh(returnStdout: true, script: "curl -X POST
-sS
\"https://www.googleapis.com/chromewebstore/v1.1/items/${extensionId}/publish\"
-H \"Authorization: Bearer ${accessToken}\" -H \"x-goog-api-version:2\" -H
\"Content-Length:\"").trim()
+
+ return sh(returnStdout: true, script: "echo
\"${publishResponse}\" | jq -r '.status | .[0]'").trim()
+ }
+ }
+ }
+}
+
+return this;
diff --git a/.ci/jenkins/shared-scripts/dockerUtils.groovy
b/.ci/jenkins/shared-scripts/dockerUtils.groovy
new file mode 100644
index 0000000000..9f78c06dac
--- /dev/null
+++ b/.ci/jenkins/shared-scripts/dockerUtils.groovy
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+
+/**
+* Push an image to a given registry
+*/
+def pushImageToRegistry(String registry, String image, String tags, String
credentialsId) {
+ withCredentials([usernamePassword(credentialsId: credentialsId,
usernameVariable: 'REGISTRY_USER', passwordVariable: 'REGISTRY_PWD')]) {
+ sh "set +x && docker login -u $REGISTRY_USER -p $REGISTRY_PWD
$registry"
+ tagList = tags.split(' ')
+ for (tag in tagList) {
+ sh "docker push $registry/$image:$tag"
+ }
+ sh 'docker logout'
+ }
+}
+
+return this;
diff --git a/.ci/jenkins/shared-scripts/githubUtils.groovy
b/.ci/jenkins/shared-scripts/githubUtils.groovy
new file mode 100644
index 0000000000..b5378ab021
--- /dev/null
+++ b/.ci/jenkins/shared-scripts/githubUtils.groovy
@@ -0,0 +1,180 @@
+/*
+ * 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.
+ */
+
+/**
+* Create a Github release
+*
+* @return String with the release information
+*/
+def createRelease(String repository, String name, String tag, String commit,
Boolean draft, Boolean preRelease, String credentialsId) {
+ withCredentials([string(credentialsId: credentialsId, variable:
'GITHUB_TOKEN')]) {
+ response = sh returnStdout: true, script: """
+ set +x
+ curl -L \
+ -X POST \
+ -H "Accept: application/vnd.github+json" \
+ -H "Authorization: Bearer ${GITHUB_TOKEN}" \
+ -H "X-GitHub-Api-Version: 2022-11-28" \
+ https://api.github.com/repos/${repository}/releases \
+ -d '{"tag_name": "${tag}", "target_commitish": "${commit}", "name":
"${name}", "draft": ${draft}, "prerelease": ${preRelease}'
+ """.trim()
+
+ return response
+ }
+}
+
+/**
+* Fetch a Github Release by tag
+*
+* @return String with the release information
+*/
+def fetchRelease(String repository, String tag, String credentialsId) {
+ withCredentials([string(credentialsId: credentialsId, variable:
'GITHUB_TOKEN')]) {
+ response = sh returnStdout: true, script: """
+ set +x
+ curl -L \
+ -H "Accept: application/vnd.github+json" \
+ -H "Authorization: Bearer ${GITHUB_TOKEN}" \
+ -H "X-GitHub-Api-Version: 2022-11-28" \
+ https://api.github.com/repos/${repository}/releases/tags/${tag}
+ """.trim()
+
+ return response
+ }
+}
+
+/**
+* Upload an asset to a GitHub release
+*
+* @return String with the release asset information
+*/
+def uploadReleaseAsset(String uploadUrl, String assetPath, String assetName,
String assetContentType, String credentialsId) {
+ withCredentials([string(credentialsId: credentialsId, variable:
'GITHUB_TOKEN')]) {
+ response = sh returnStdout: true, script: """
+ set +x
+ curl -L \
+ -X POST \
+ -H "Accept: application/vnd.github+json" \
+ -H "Authorization: Bearer ${GITHUB_TOKEN}" \
+ -H "X-GitHub-Api-Version: 2022-11-28" \
+ -H "Content-Type: ${assetContentType}" \
+ "${uploadUrl}?name=${assetName}" \
+ --data-binary "@${assetPath}"
+ """.trim()
+
+ return response
+ }
+}
+
+/**
+* Set build status
+*/
+def commitStatus(String repository, String commit, String context, String
state, String jobUrl) {
+ withCredentials([string(credentialsId: credentialsId, variable:
'GITHUB_TOKEN')]) {
+ response = sh returnStdout: true, script: """
+ set +x
+ curl -L \
+ -X POST \
+ -H "Accept: application/vnd.github+json" \
+ -H "Authorization: Bearer ${GITHUB_TOKEN}" \
+ -H "X-GitHub-Api-Version: 2022-11-28" \
+ https://api.github.com/repos/${repository}/statuses/${commit} \
+ -d
'{"state":"${state}","target_url":"${jobUrl}","description":"${message}","context":"${context}"}'
+ """.trim()
+
+ return response
+ }
+}
+
+/**
+* Parse an release upload asset url to remove unecessary strings
+*/
+def parseReleaseAssetUploadUrl(String uploadUrl) {
+ return uploadUrl.replace('{?name,label}', '')
+}
+
+/**
+* Checkout a github repository using GitSCM class
+*/
+def checkoutRepo(String url, String branch, String credentialsId) {
+ checkout([$class: 'GitSCM',
+ branches: [[name: "${branch}"]],
+ doGenerateSubmoduleConfigurations: false,
+ extensions: [[$class: 'CleanCheckout']],
+ submoduleCfg: [],
+ userRemoteConfigs: [[credentialsId: credentialsId, url: "${url}"]]
+ ])
+}
+
+/**
+* Perform a squashed merge on a local repository
+*/
+def squashedMerge(String author, String branch, String url) {
+ sh """#!/bin/bash -el
+ git config --global user.email "[email protected]"
+ git config --global user.name "KIE Tools Bot (kiegroup)"
+ git remote add ${author} ${url}
+ git fetch ${author} ${branch}
+ git merge --squash ${author}/${branch}
+ git commit --no-edit
+ """.trim()
+}
+
+/**
+* Checkout a github repository and perform a squashed merge on a local
repository
+*/
+def checkoutRepoSquashedMerge(String author, String branch, String url, String
targetBranch, String targetUrl, String credentialsId) {
+ checkoutRepo(targetUrl, targetBranch, credentialsId)
+ if (author && branch && url) {
+ squashedMerge(author, branch, url)
+ } else {
+ echo 'Skip squashed merge, not a pull request'
+ }
+}
+
+/**
+* @return the Github repository slug (org/repo) from an URL
+*/
+def getRepoSlug(String url) {
+ tokens = url.tokenize('/')
+ org = tokens[tokens.size()-4]
+ repo = tokens[tokens.size()-3]
+
+ return "${org}/${repo}"
+}
+
+/**
+* @return the files changed in the last commit
+*/
+def getChangesetLastCommit() {
+ changeset = sh returnStdout: true, script: '''
+ git diff --name-only HEAD HEAD~1
+ '''.trim()
+
+ return changeset
+}
+
+/**
+* @return if a given file is in the changeset of the last commit
+*/
+def fileIsInChangeset(String file) {
+ changeset = getChangesetLastCommit()
+
+ return changeset.contains(file)
+}
+
+return this;
diff --git a/.ci/jenkins/shared-scripts/openShiftUtils.groovy
b/.ci/jenkins/shared-scripts/openShiftUtils.groovy
new file mode 100644
index 0000000000..729c4d7671
--- /dev/null
+++ b/.ci/jenkins/shared-scripts/openShiftUtils.groovy
@@ -0,0 +1,77 @@
+/*
+ * 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.
+ */
+
+/**
+* Create or update an existing application in a Openshift cluster
+*/
+def createOrUpdateApp(String project, String appName, String imageTag, String
imageUrl, String partOf, String deploymentIcon, String credentialsId, String
deploymentEnvVarsPath='./deployment.env') {
+ withCredentials([usernamePassword(credentialsId: credentialsId,
usernameVariable: 'OS_SERVER', passwordVariable: 'OS_TOKEN')]) {
+ sh 'set +x && oc login --token=$OS_TOKEN --server=$OS_SERVER
--insecure-skip-tls-verify'
+ sh """#!/bin/bash -el
+ oc project ${project}
+
+ if [ ! -f ${deploymentEnvVarsPath} ]; then
+ echo "ENV file does not exist"
+ touch ${deploymentEnvVarsPath}
+ fi
+
+ if ! oc get deploy ${appName} > /dev/null 2>&1; then
+ echo "Create the app '${appName}'"
+
+ oc create imagestream ${appName}
+ oc import-image ${appName}:${imageTag} --from=${imageUrl} --confirm
+ oc tag ${appName}:${imageTag} ${appName}:latest
+
+ oc label imagestreams/${appName} app=${appName}
+ oc label imagestreams/${appName}
app.kubernetes.io/component=${appName}
+ oc label imagestreams/${appName}
app.kubernetes.io/instance=${appName}
+ oc label imagestreams/${appName} app.kubernetes.io/part-of=${partOf}
+
+ oc new-app ${appName}:latest --name=${appName}
--env-file=${deploymentEnvVarsPath}
+ oc create route edge --service=${appName}
+
+ oc label services/${appName} app.kubernetes.io/part-of=${partOf}
+ oc label routes/${appName} app.kubernetes.io/part-of=${partOf}
+ oc label deployments/${appName} app.kubernetes.io/part-of=${partOf}
+ oc label deployments/${appName}
app.openshift.io/runtime=${deploymentIcon}
+ else
+ echo "App '${appName}' already exists. Update the ImageStream
instead."
+ oc tag -d ${appName}:latest
+ oc import-image ${appName}:${imageTag} --from=${imageUrl} --confirm
+ oc tag ${appName}:${imageTag} ${appName}:latest
+ cat ${deploymentEnvVarsPath} | oc set env deploy/${appName} -
+ fi
+ """.trim()
+ sh 'oc logout'
+ }
+}
+
+/**
+* @return String route to the OpenShift application
+*/
+def getAppRoute(String project, String appName, String credentialsId) {
+ withCredentials([usernamePassword(credentialsId: credentialsId,
usernameVariable: 'OS_SERVER', passwordVariable: 'OS_TOKEN')]) {
+ sh 'set +x && oc login --token=$OS_TOKEN --server=$OS_SERVER
--insecure-skip-tls-verify'
+ sh "oc project ${project}"
+ route = sh(returnStdout: true, script: "oc get route ${appName} -o
jsonpath='{.spec.host}'").trim()
+ sh 'oc logout'
+
+ return "https://${route}"
+ }
+}
+
+return this;
diff --git a/.ci/jenkins/shared-scripts/pipelineVars.groovy
b/.ci/jenkins/shared-scripts/pipelineVars.groovy
new file mode 100644
index 0000000000..c278e882aa
--- /dev/null
+++ b/.ci/jenkins/shared-scripts/pipelineVars.groovy
@@ -0,0 +1,20 @@
+class PipelineVars implements Serializable {
+
+ String githubRepositoryOrg = 'apache';
+ String githubRepositoryName =
'incubator-kie-tools-temporary-rnd-do-not-use';
+ String githubRepositorySlug =
'apache/incubator-kie-tools-temporary-rnd-do-not-use';
+
+ String quayPushCredentialsId = 'quay-io-kie-tools-token';
+ String openshiftCredentialsId = 'openshift-kie-tools-token';
+ String kieToolsBotGithubCredentialsId = 'kie-tools-bot-gh';
+ String kieToolsBotGithubTokenCredentialsId = 'kie-tools-bot-gh-token';
+ String kieToolsGithubCodeQLTokenCredentialsId =
'kie-tools-gh-codeql-token';
+ String chromeStoreCredentialsId = 'kie-tools-chome-store';
+ String chromeStoreRefreshTokenCredentialsId =
'kie-tools-chome-store-refresh-token';
+ String npmTokenCredentialsId = 'kie-tools-npm-token';
+
+ String defaultArtifactsTempDir = 'artifacts-tmp';
+
+}
+
+return new PipelineVars();
diff --git a/.ci/jenkins/shared-scripts/zipUtils.groovy
b/.ci/jenkins/shared-scripts/zipUtils.groovy
new file mode 100644
index 0000000000..1521ce5312
--- /dev/null
+++ b/.ci/jenkins/shared-scripts/zipUtils.groovy
@@ -0,0 +1,37 @@
+/*
+ * 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.
+ */
+
+/**
+* Compress a build artifact to a zip file
+*/
+def zipArtifact(String filePath, String patterns) {
+ sh """#!/bin/bash -el
+ output_empty_zip () { echo UEsFBgAAAAAAAAAAAAAAAAAAAAAAAA== | base64 -d; }
+ zip -r ${filePath} ${patterns} || output_empty_zip > ${filePath}
+ """.trim()
+}
+
+/**
+* Unzip an build artifact
+*/
+def unzipArtifact(String filePath, String targetDir) {
+ sh """#!/bin/bash -el
+ unzip ${filePath} -d ${targetDir}
+ """.trim()
+}
+
+return this;
diff --git a/.github/actions/checkout-pr/action.yml
b/.github/actions/checkout-pr/action.yml
index ae9136c5e4..5bda551c14 100644
--- a/.github/actions/checkout-pr/action.yml
+++ b/.github/actions/checkout-pr/action.yml
@@ -45,7 +45,7 @@ runs:
user=$(node -e "console.log('${{
github.event.pull_request.head.label }}'.match(/(.+)\:(.+)$/)[1])")
echo "Merge changes from $user/${{ github.head_ref }}"
- git remote add $user https://github.com/$user/kie-tools.git
+ git remote add $user
https://github.com/$user/incubator-kie-tools-temporary-rnd-do-not-use.git
git fetch $user ${{ github.head_ref }}
echo "Before merging..."
diff --git a/.github/actions/setup-env/action.yml
b/.github/actions/setup-env/action.yml
index 85503c81fe..a55fa05fd7 100644
--- a/.github/actions/setup-env/action.yml
+++ b/.github/actions/setup-env/action.yml
@@ -10,22 +10,6 @@ inputs:
runs:
using: "composite"
steps:
- # This cleans up the GitHub action images, removing unnecessary packages
such as Android Studio and DOTNet libraries.
- # This can provide up to 7GB of free space for the rest of the build.
- - name: "Clear storage usage from unnecessary packages"
- uses: jlumbroso/free-disk-space@76866dbe54312617f00798d1762df7f43def6e5c
- if: runner.os == 'Linux'
- with:
- # this might remove tools that are actually needed,
- # if set to "true" but frees about 6 GB
- tool-cache: false
- # other packages
- android: true
- dotnet: true
- haskell: true
- large-packages: false
- swap-storage: false
-
- name: "Print storage usage (before setup)"
shell: bash
run: |
@@ -41,7 +25,7 @@ runs:
mkdir tmp
- name: "Setup pnpm"
- uses: pnpm/action-setup@c3b53f6a16e57305370b4ae5a540c2077a1d50dd
+ uses: pnpm/action-setup@v2
with:
version: 8.7.0
@@ -51,7 +35,7 @@ runs:
node-version: 18.14.0
- name: "Setup JDK 11"
- uses: actions/setup-java@de1bb2b0c5634f0fc4438d7aa9944e68f9bf86cc
+ uses: actions/setup-java@v3
with:
java-version: 11
distribution: "zulu"
@@ -62,7 +46,7 @@ runs:
go-version: "1.21.1"
- name: "Set up Maven"
- uses: stCarolas/setup-maven@07fbbe97d97ef44336b7382563d66743297e442f
#v4.5
+ uses: stCarolas/[email protected]
with:
maven-version: 3.8.6
diff --git a/.github/workflows/ci_build.yml b/.github/workflows/ci_build.yml
index 33f65a21f7..6bbd52ba25 100644
--- a/.github/workflows/ci_build.yml
+++ b/.github/workflows/ci_build.yml
@@ -1,4 +1,4 @@
-name: "CI :: Build"
+name: "CI :: Build (Windows and MacOS)"
on:
push:
@@ -21,7 +21,7 @@ jobs:
strategy:
fail-fast: false
matrix:
- os: [ubuntu-latest, macos-latest, windows-latest]
+ os: [macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- name: "Support longpaths"
@@ -71,10 +71,6 @@ jobs:
echo "Done"
- - name: "Start telemetry service (`main` only)"
- if: steps.setup_build_mode.outputs.mode != 'none' &&
!github.event.pull_request
- uses:
runforesight/workflow-telemetry-action@6705383eabd01833acfe8412ec697384830e1455
#v1.8.7
-
- name: "Setup environment"
if: steps.setup_build_mode.outputs.mode != 'none'
uses: ./.github/actions/setup-env
diff --git a/.github/workflows/ci_check_code_formatting.yml
b/.github/workflows/ci_check_code_formatting.yml
index 6ab373da22..3a8f604444 100644
--- a/.github/workflows/ci_check_code_formatting.yml
+++ b/.github/workflows/ci_check_code_formatting.yml
@@ -1,10 +1,11 @@
name: "CI :: Code formatting"
on:
- push:
- branches: [main]
- pull_request:
- branches: ["**"]
+ workflow_dispatch:
+ # push:
+ # branches: [main]
+ # pull_request:
+ # branches: ["**"]
concurrency:
group: ${{ github.event.pull_request &&
format('check-code-formatting-pr-{0}', github.event.pull_request.number) ||
format('check-code-formatting-push-main-{0}', github.sha) }}
diff --git a/.github/workflows/ci_check_dependencies_consistency.yaml
b/.github/workflows/ci_check_dependencies_consistency.yaml
index 2105e1ea2a..7110803e5a 100644
--- a/.github/workflows/ci_check_dependencies_consistency.yaml
+++ b/.github/workflows/ci_check_dependencies_consistency.yaml
@@ -1,10 +1,11 @@
name: "CI :: Dependencies consistency"
on:
- push:
- branches: [main]
- pull_request:
- branches: ["**"]
+ workflow_dispatch:
+ # push:
+ # branches: [main]
+ # pull_request:
+ # branches: ["**"]
concurrency:
group: ${{ github.event.pull_request &&
format('check-dependencies-consistency-pr-{0}',
github.event.pull_request.number) ||
format('check-dependencies-consistency-push-main-{0}', github.sha) }}
diff --git a/.github/workflows/ci_codeql.yml b/.github/workflows/ci_codeql.yml
index 36584f7474..ebd69b7174 100644
--- a/.github/workflows/ci_codeql.yml
+++ b/.github/workflows/ci_codeql.yml
@@ -12,11 +12,11 @@
name: "CI :: CodeQL"
on:
- push:
- branches: [main]
- pull_request:
- # The branches below must be a subset of the branches above
- branches: [main]
+ # push:
+ # branches: [main]
+ # pull_request:
+ # # The branches below must be a subset of the branches above
+ # branches: [main]
schedule:
- cron: "31 15 * * 0"
diff --git a/.github/workflows/ci_sonar_analysis_stunner_editors.yml
b/.github/workflows/ci_sonar_analysis_stunner_editors.yml
index 9f90939b5a..f9f05444fa 100644
--- a/.github/workflows/ci_sonar_analysis_stunner_editors.yml
+++ b/.github/workflows/ci_sonar_analysis_stunner_editors.yml
@@ -1,11 +1,12 @@
name: "CI :: Sonar :: stunner-editors"
on:
- push:
- branches:
- - main
- paths:
- - "packages/stunner-editors/**"
- - ".github/workflows/ci_sonar_analysis_stunner_editors.yml"
+ workflow_dispatch:
+ # push:
+ # branches:
+ # - main
+ # paths:
+ # - "packages/stunner-editors/**"
+ # - ".github/workflows/ci_sonar_analysis_stunner_editors.yml"
jobs:
check:
diff --git a/.github/workflows/daily_dev_publish.yml
b/.github/workflows/daily_dev_publish.yml
index 7b489c676b..1c184d8e0e 100644
--- a/.github/workflows/daily_dev_publish.yml
+++ b/.github/workflows/daily_dev_publish.yml
@@ -1,12 +1,12 @@
name: "Daily dev :: Publish"
on:
- schedule:
- - cron: "0 2 * * *" # 2am UTC everyday
+ # schedule:
+ # - cron: "0 2 * * *" # 2am UTC everyday
workflow_dispatch:
- pull_request:
- paths:
- - ".github/workflows/daily_dev_publish.yml"
+ # pull_request:
+ # paths:
+ # - ".github/workflows/daily_dev_publish.yml"
concurrency:
group: ${{ github.event.pull_request && format('daily-dev-publish-pr-{0}',
github.event.pull_request.number) || format('daily-dev-publish-ref-{0}',
github.ref_name) }}
diff --git a/.github/workflows/jenkins-tests-PR.yml
b/.github/workflows/jenkins-tests-PR.yml
index bea36579da..b667a5d4c6 100644
--- a/.github/workflows/jenkins-tests-PR.yml
+++ b/.github/workflows/jenkins-tests-PR.yml
@@ -2,12 +2,13 @@
# For more information see:
https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
name: Jenkins Tests
on:
- pull_request:
- branches:
- - "main"
- paths:
- - ".ci/jenkins/**"
- - ".github/workflows/jenkins-tests-PR.yml"
+ workflow_dispatch:
+ # pull_request:
+ # branches:
+ # - "main"
+ # paths:
+ # - ".ci/jenkins/**"
+ # - ".github/workflows/jenkins-tests-PR.yml"
jobs:
dsl-tests:
diff --git a/.github/workflows/publish_jitexecutor_native.yml
b/.github/workflows/publish_jitexecutor_native.yml
index 9cf7482ecd..0dd09f4108 100644
--- a/.github/workflows/publish_jitexecutor_native.yml
+++ b/.github/workflows/publish_jitexecutor_native.yml
@@ -34,13 +34,13 @@ jobs:
ref: ${{ github.event.inputs.kogito_runtime_version }}
- name: "Set up Maven"
- uses: stCarolas/setup-maven@07fbbe97d97ef44336b7382563d66743297e442f
#v4.5
+ uses: stCarolas/[email protected]
with:
maven-version: 3.8.6
- name: "Set up JDK 11"
if: runner.os != 'Windows'
- uses: actions/setup-java@de1bb2b0c5634f0fc4438d7aa9944e68f9bf86cc
+ uses: actions/setup-java@v3
with:
java-version: "11"
distribution: "zulu"
@@ -78,7 +78,7 @@ jobs:
- name: "Setup MSCV"
if: runner.os == 'Windows'
- uses: ilammy/msvc-dev-cmd@cec98b9d092141f74527d0afa6feb2af698cfe89
#v1.12.1
+ uses: ilammy/msvc-dev-cmd@v1
- name: "Setup MSBUILD"
if: runner.os == 'Windows'
diff --git a/.github/workflows/release_build_extended_services.yml
b/.github/workflows/release_build_extended_services.yml
new file mode 100644
index 0000000000..1818f7af30
--- /dev/null
+++ b/.github/workflows/release_build_extended_services.yml
@@ -0,0 +1,87 @@
+name: "Release :: Build (Extended Services)"
+
+on:
+ workflow_call:
+ inputs:
+ dry_run:
+ type: boolean
+ required: true
+ base_ref:
+ type: string
+ required: true
+ tag:
+ type: string
+ required: false
+ default: "0.0.0"
+ upload_asset_url:
+ type: string
+ required: false
+ default: ""
+ secrets:
+ gh_token:
+ required: false
+
+env:
+ KIE_TOOLS_BUILD__runLinters: "false"
+ KIE_TOOLS_BUILD__runTests: "false"
+ KIE_TOOLS_BUILD__runEndToEndTests: "false"
+ KIE_TOOLS_BUILD__buildContainerImages: "true"
+
+jobs:
+ extended_services:
+ env:
+ EXTENDED_SERVICES__kieSandboxUrl:
"https://kiegroup.github.io/kogito-online"
+
+ runs-on: ${{ matrix.os }}
+ strategy:
+ matrix:
+ os: [macos-latest, windows-latest]
+ steps:
+ - name: "Support longpaths (Windows only)"
+ if: runner.os == 'Windows'
+ run: git config --system core.longpaths true
+
+ - name: "Checkout @ GitHub default"
+ uses: actions/checkout@v3
+
+ - name: "Checkout @ Simulated squashed-merge if PR"
+ uses: ./.github/actions/checkout-pr
+ with:
+ ref: ${{ inputs.base_ref }}
+
+ - name: "Setup environment"
+ id: setup_env
+ uses: ./.github/actions/setup-env
+
+ - name: "Bootstrap"
+ id: bootstrap
+ uses: ./.github/actions/bootstrap
+ with:
+ pnpm_filter_string: -F @kie-tools/extended-services...
+
+ - name: "Build"
+ shell: bash
+ run: |
+ pnpm ${{ steps.bootstrap.outputs.pnpm_filter_string }} build:prod
+
+ - name: "Upload Extended Services for macOS (macOS only)"
+ if: ${{ runner.os == 'macOS' && !inputs.dry_run }}
+ uses: actions/[email protected]
+ env:
+ GITHUB_TOKEN: ${{ secrets.gh_token }}
+ with:
+ upload_url: ${{ inputs.upload_asset_url }}
+ asset_path: ./packages/extended-services/dist/darwin/Kogito.dmg
+ asset_name: kie_sandbox_extended_services_macos_${{ inputs.tag }}.dmg
+ asset_content_type: application/octet-stream
+
+ - name: "Upload Extended Services for Windows (Windows only)"
+ if: ${{ runner.os == 'Windows' && !inputs.dry_run }}
+ uses: actions/[email protected]
+ env:
+ GITHUB_TOKEN: ${{ secrets.gh_token }}
+ with:
+ upload_url: ${{ inputs.upload_asset_url }}
+ asset_path:
"./packages/extended-services/dist/win32/kie_sandbox_extended_services.exe"
+ asset_name: "kie_sandbox_extended_services_windows_${{ inputs.tag
}}.exe"
+ asset_content_type: application/octet-stream
diff --git a/.github/workflows/release_dry_run.yml
b/.github/workflows/release_dry_run.yml
index 612b4425b4..2ad86dbe0a 100644
--- a/.github/workflows/release_dry_run.yml
+++ b/.github/workflows/release_dry_run.yml
@@ -2,13 +2,13 @@ name: "Release :: Dry Run"
on:
workflow_dispatch:
- schedule:
- - cron: "0 4 * * *" # 4am UTC everyday
- pull_request:
- branches: ["**"]
- paths:
- - ".github/workflows/release*"
- - ".github/actions/**"
+ # schedule:
+ # - cron: "0 4 * * *" # 4am UTC everyday
+ # pull_request:
+ # branches: ["**"]
+ # paths:
+ # - ".github/workflows/release*"
+ # - ".github/actions/**"
concurrency:
group: ${{ github.event.pull_request && format('release-dry-run-pr-{0}',
github.event.pull_request.number) || format('release-dry-run-ref-{0}',
github.ref_name) }}
diff --git a/.github/workflows/staging_dry_run.yml
b/.github/workflows/release_dry_run_extended_services.yml
similarity index 50%
copy from .github/workflows/staging_dry_run.yml
copy to .github/workflows/release_dry_run_extended_services.yml
index 240534b9bd..1f681d830c 100644
--- a/.github/workflows/staging_dry_run.yml
+++ b/.github/workflows/release_dry_run_extended_services.yml
@@ -1,22 +1,22 @@
-name: "Staging :: Dry Run"
+name: "Release :: Dry Run (Extended Services)"
on:
workflow_dispatch:
schedule:
- - cron: "0 3 * * *" # 3am UTC everyday
+ - cron: "0 4 * * *" # 4am UTC everyday
pull_request:
branches: ["**"]
paths:
- - ".github/workflows/staging*"
+ - ".github/workflows/release*"
- ".github/actions/**"
concurrency:
- group: ${{ github.event.pull_request && format('staging-dry-run-pr-{0}',
github.event.pull_request.number) || format('staging-dry-run-ref-{0}',
github.ref_name) }}
+ group: ${{ github.event.pull_request && format('release-dry-run-pr-{0}',
github.event.pull_request.number) || format('release-dry-run-ref-{0}',
github.ref_name) }}
cancel-in-progress: true
jobs:
dry_run:
- uses: ./.github/workflows/staging_build.yml
+ uses: ./.github/workflows/release_build_extended_services.yml
with:
dry_run: true
base_ref: ${{ github.event.pull_request && github.base_ref || github.ref
}}
diff --git a/.github/workflows/release_publish_extended_services.yml
b/.github/workflows/release_publish_extended_services.yml
new file mode 100644
index 0000000000..0dfe102d3a
--- /dev/null
+++ b/.github/workflows/release_publish_extended_services.yml
@@ -0,0 +1,47 @@
+name: "Release :: Publish (Extended Services)"
+
+on:
+ workflow_dispatch:
+ inputs:
+ tag:
+ type: string
+ required: true
+ description: "Tag associated with the release"
+
+jobs:
+ prepare:
+ runs-on: ubuntu-latest
+ outputs:
+ upload_asset_url: ${{
fromJSON(steps.fetch_release_for_tag.outputs.data).upload_url }}
+ release_ref: ${{
fromJSON(steps.fetch_release_for_tag.outputs.data).target_commitish }}
+ steps:
+ - name: "Fetch release for ${{ github.event.inputs.tag }}"
+ uses: octokit/[email protected]
+ id: fetch_release_for_tag
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ route: GET /repos/{repo}/releases/tags/{tag}
+ repo: ${{ github.repository }}
+ tag: ${{ github.event.inputs.tag }}
+
+ - name: "Checkout"
+ uses: actions/checkout@v3
+ with:
+ ref: ${{
fromJSON(steps.fetch_release_for_tag.outputs.data).target_commitish }}
+
+ - name: "Check `tag` against `(package.json).version`"
+ shell: bash
+ run: |
+ [ "${{ github.event.inputs.tag }}" == "$(node -p
"require('./package.json').version")" ]
+
+ build_and_publish:
+ needs: [prepare]
+ uses: ./.github/workflows/release_build_extended_services.yml
+ with:
+ dry_run: false
+ base_ref: ${{ needs.prepare.outputs.release_ref }}
+ tag: ${{ github.event.inputs.tag }}
+ upload_asset_url: ${{ needs.prepare.outputs.upload_asset_url }}
+ secrets:
+ gh_token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/staging_build_extended_services.yml
b/.github/workflows/staging_build_extended_services.yml
new file mode 100644
index 0000000000..77e748d85c
--- /dev/null
+++ b/.github/workflows/staging_build_extended_services.yml
@@ -0,0 +1,89 @@
+name: "Staging :: Build (Extended Services)"
+
+on:
+ workflow_call:
+ inputs:
+ dry_run:
+ type: boolean
+ required: true
+ base_ref:
+ type: string
+ required: true
+ tag:
+ type: string
+ required: false
+ default: "0.0.0"
+ upload_asset_url:
+ type: string
+ required: false
+ default: ""
+ secrets:
+ gh_token:
+ required: false
+
+env:
+ TMPDIR: "${{ github.workspace }}/kie-tools/tmp"
+
+jobs:
+ build:
+ runs-on: ${{ matrix.os }}
+
+ strategy:
+ matrix:
+ os: [macos-latest, windows-latest]
+ steps:
+ - name: "Support longpaths (Windows only)"
+ if: runner.os == 'Windows'
+ run: git config --system core.longpaths true
+
+ - name: "Checkout @ GitHub default"
+ uses: actions/checkout@v3
+ with:
+ path: kie-tools
+
+ - name: "Checkout @ Simulated squashed-merge if PR"
+ uses: ./kie-tools/.github/actions/checkout-pr
+ with:
+ ref: ${{ inputs.base_ref }}
+ path: kie-tools
+
+ - name: "Setup environment"
+ uses: ./kie-tools/.github/actions/setup-env
+ with:
+ working_dir: kie-tools
+
+ - name: "Bootstrap"
+ id: bootstrap
+ uses: ./kie-tools/.github/actions/bootstrap
+ with:
+ working_dir: kie-tools
+ pnpm_filter_string: -F @kie-tools/extended-services...
+
+ - name: "Build Extended Services"
+ working-directory: ${{ github.workspace }}/kie-tools
+ env:
+ EXTENDED_SERVICES__kieSandboxUrl:
"https://kiegroup.github.io/kogito-online-staging/${{ inputs.tag }}-prerelease"
+ run: >-
+ pnpm ${{ steps.bootstrap.outputs.pnpm_filter_string }} build:prod
+
+ - name: "STAGING: Upload Extended Services for macOS (macOS only)"
+ if: ${{ runner.os == 'macOS' && !inputs.dry_run }}
+ uses: actions/[email protected]
+ env:
+ GITHUB_TOKEN: ${{ secrets.gh_token }}
+ with:
+ upload_url: ${{ inputs.upload_asset_url }}
+ asset_path: ${{ github.workspace
}}/kie-tools/packages/extended-services/dist/darwin/Kogito.dmg
+ asset_name: STAGING__kie_sandbox_extended_services_macos_${{
inputs.tag }}.dmg
+ asset_content_type: application/octet-stream
+
+ - name: "STAGING: Upload Extended Services for Windows (Windows only)"
+ if: ${{ runner.os == 'Windows' && !inputs.dry_run }}
+ uses: actions/[email protected]
+ env:
+ GITHUB_TOKEN: ${{ secrets.gh_token }}
+ with:
+ upload_url: ${{ inputs.upload_asset_url }}
+ asset_path: "${{ github.workspace
}}/kie-tools/packages/extended-services/dist/win32/kie_sandbox_extended_services.exe"
+ asset_name: "STAGING__kie_sandbox_extended_services_windows_${{
inputs.tag }}.exe"
+ asset_content_type: application/octet-stream
diff --git a/.github/workflows/staging_dry_run.yml
b/.github/workflows/staging_dry_run.yml
index 240534b9bd..7b5ba4da0d 100644
--- a/.github/workflows/staging_dry_run.yml
+++ b/.github/workflows/staging_dry_run.yml
@@ -2,13 +2,13 @@ name: "Staging :: Dry Run"
on:
workflow_dispatch:
- schedule:
- - cron: "0 3 * * *" # 3am UTC everyday
- pull_request:
- branches: ["**"]
- paths:
- - ".github/workflows/staging*"
- - ".github/actions/**"
+ # schedule:
+ # - cron: "0 3 * * *" # 3am UTC everyday
+ # pull_request:
+ # branches: ["**"]
+ # paths:
+ # - ".github/workflows/staging*"
+ # - ".github/actions/**"
concurrency:
group: ${{ github.event.pull_request && format('staging-dry-run-pr-{0}',
github.event.pull_request.number) || format('staging-dry-run-ref-{0}',
github.ref_name) }}
diff --git a/.github/workflows/staging_dry_run.yml
b/.github/workflows/staging_dry_run_extended_services.yml
similarity index 82%
copy from .github/workflows/staging_dry_run.yml
copy to .github/workflows/staging_dry_run_extended_services.yml
index 240534b9bd..6b04f976e6 100644
--- a/.github/workflows/staging_dry_run.yml
+++ b/.github/workflows/staging_dry_run_extended_services.yml
@@ -1,4 +1,4 @@
-name: "Staging :: Dry Run"
+name: "Staging :: Dry Run (Extended Services)"
on:
workflow_dispatch:
@@ -16,7 +16,7 @@ concurrency:
jobs:
dry_run:
- uses: ./.github/workflows/staging_build.yml
+ uses: ./.github/workflows/staging_build_extended_services.yml
with:
dry_run: true
base_ref: ${{ github.event.pull_request && github.base_ref || github.ref
}}
diff --git a/.github/workflows/staging_publish.yml
b/.github/workflows/staging_publish.yml
index 985a75e9cf..0336620102 100644
--- a/.github/workflows/staging_publish.yml
+++ b/.github/workflows/staging_publish.yml
@@ -1,8 +1,9 @@
name: "Staging :: Publish"
on:
- push:
- branches: ["**-prerelease"]
+ workflow_dispatch:
+ # push:
+ # branches: ["**-prerelease"]
concurrency:
group: staging-publish
diff --git a/.github/workflows/staging_publish_extended_services.yml
b/.github/workflows/staging_publish_extended_services.yml
new file mode 100644
index 0000000000..a644bf8db0
--- /dev/null
+++ b/.github/workflows/staging_publish_extended_services.yml
@@ -0,0 +1,51 @@
+name: "Staging :: Publish (Extended Services)"
+
+on:
+ workflow_dispatch:
+ inputs:
+ tag:
+ type: string
+ required: true
+ description: "Tag associated with the pre-release"
+
+concurrency:
+ group: staging-publish
+ cancel-in-progress: true
+
+jobs:
+ prepare:
+ runs-on: ubuntu-latest
+ outputs:
+ upload_asset_url: ${{
fromJSON(steps.fetch_release_for_tag.outputs.data).upload_url }}
+ release_ref: ${{
fromJSON(steps.fetch_release_for_tag.outputs.data).target_commitish }}
+ steps:
+ - name: "Fetch pre-release for ${{ github.event.inputs.tag }}"
+ uses: octokit/[email protected]
+ id: fetch_release_for_tag
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ route: GET /repos/{repo}/releases/tags/{tag}
+ repo: ${{ github.repository }}
+ tag: ${{ github.event.inputs.tag }}
+
+ - name: "Checkout"
+ uses: actions/checkout@v3
+ with:
+ ref: ${{
fromJSON(steps.fetch_release_for_tag.outputs.data).target_commitish }}
+
+ - name: "Check `tag` against `(package.json).version`"
+ shell: bash
+ run: |
+ [ "${{ github.event.inputs.tag }}" == "$(node -p
"require('./package.json').version")" ]
+
+ build_and_publish:
+ needs: [prepare]
+ uses: ./.github/workflows/staging_build_extended_services.yml
+ with:
+ dry_run: false
+ base_ref: ${{ needs.prepare.outputs.release_ref }}
+ tag: ${{ github.event.inputs.tag }}
+ upload_asset_url: ${{ needs.prepare.outputs.upload_asset_url }}
+ secrets:
+ gh_token: ${{ secrets.GITHUB_TOKEN }}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]