From 4ac28b482492b899d482fa33d2d3a87c95a511cd Mon Sep 17 00:00:00 2001 From: Tiago Bento <1584568+tiagobento@users.noreply.github.com> Date: Tue, 7 May 2024 11:03:29 -0400 Subject: [PATCH 01/10] NO-ISSUE: More direct build instructions on `README.md` and version bumps (#2297) --- .ci/kie-tools-ci-build.Dockerfile | 8 +- .github/actions/setup-env/action.yml | 16 ++-- .github/workflows/ci_build.yml | 6 +- README.md | 104 ++++++++++++++++++-------- devbox.json | 4 +- devbox.lock | 56 +++++++------- packages/kn-plugin-workflow/README.md | 4 +- repo/build-dependencies-versions.json | 4 +- 8 files changed, 121 insertions(+), 81 deletions(-) diff --git a/.ci/kie-tools-ci-build.Dockerfile b/.ci/kie-tools-ci-build.Dockerfile index 52036a7594a..5b64563ba33 100644 --- a/.ci/kie-tools-ci-build.Dockerfile +++ b/.ci/kie-tools-ci-build.Dockerfile @@ -78,7 +78,7 @@ RUN wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | # Node setup RUN source $HOME/.nvm/nvm.sh && \ - nvm install 18.14.0 && \ + nvm install 18.20.2 && \ sudo update-alternatives --install /usr/local/bin/node node $(which node) 1 && \ sudo update-alternatives --install /usr/local/bin/npm npm $(which npm) 1 @@ -97,8 +97,8 @@ RUN curl -s "https://get.sdkman.io" | bash && \ sdk flush # Golang setup -RUN wget https://go.dev/dl/go1.21.5.linux-amd64.tar.gz -P /tmp && \ - sudo tar xzf /tmp/go1.21.5.linux-amd64.tar.gz -C /opt && rm /tmp/go1.21.5.linux-amd64.tar.gz && \ +RUN wget https://go.dev/dl/go1.21.9.linux-amd64.tar.gz -P /tmp && \ + sudo tar xzf /tmp/go1.21.9.linux-amd64.tar.gz -C /opt && rm /tmp/go1.21.9.linux-amd64.tar.gz && \ echo 'export GOPATH=${HOME}/go' | sudo tee /etc/profile.d/go.sh && \ echo 'export PATH=${PATH}:/opt/go/bin:${GOPATH}/bin' | sudo tee -a /etc/profile.d/go.sh && \ echo "source /etc/profile.d/go.sh" >> $HOME/.bashrc && \ @@ -130,7 +130,7 @@ RUN go install github.com/openshift/source-to-image/cmd/s2i@v1.3.9 ENV HOME="/home/nonrootuser" ENV JAVA_HOME="${HOME}/.sdkman/candidates/java/current/" ENV MAVEN_HOME="${HOME}/.sdkman/candidates/maven/current/" -ENV NODE_HOME="${HOME}/.nvm/versions/node/v18.14.0" +ENV NODE_HOME="${HOME}/.nvm/versions/node/v18.20.2" ENV DISPLAY=":99" ENV NODE_OPTIONS="--max_old_space_size=4096" ENV GOPATH="${HOME}/go" diff --git a/.github/actions/setup-env/action.yml b/.github/actions/setup-env/action.yml index 4a945c04f2f..3ba0220bc05 100644 --- a/.github/actions/setup-env/action.yml +++ b/.github/actions/setup-env/action.yml @@ -43,28 +43,28 @@ runs: mkdir tmp - name: "Setup pnpm" - uses: pnpm/action-setup@v2 + uses: pnpm/action-setup@v3 with: version: 8.7.0 - name: "Setup Node" - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: - node-version: 18.14.0 + node-version: 18.20.2 - name: "Setup JDK 17" - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: java-version: 17 distribution: "zulu" - - name: "Set up GOLANG 1.21.5" - uses: actions/setup-go@v3 + - name: "Set up GOLANG 1.21.9" + uses: actions/setup-go@v5 with: - go-version: "1.21.5" + go-version: "1.21.9" - name: "Set up Maven" - uses: stCarolas/setup-maven@v4.5 + uses: stCarolas/setup-maven@v5 with: maven-version: 3.9.6 diff --git a/.github/workflows/ci_build.yml b/.github/workflows/ci_build.yml index 212d5fae118..36750513e50 100644 --- a/.github/workflows/ci_build.yml +++ b/.github/workflows/ci_build.yml @@ -39,14 +39,14 @@ jobs: ref: ${{ github.base_ref }} - name: "Setup pnpm" - uses: pnpm/action-setup@v2 + uses: pnpm/action-setup@v3 with: version: 8.7.0 - name: "Setup Node" - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: - node-version: 18.14.0 + node-version: 18.20.2 - name: "Setup CI patterns" id: ci_patterns diff --git a/README.md b/README.md index a6664f227db..e7d54c75da8 100644 --- a/README.md +++ b/README.md @@ -20,45 +20,85 @@ This repository contains tooling applications and libraries for KIE projects. ## Build from source -> **💡 Nix development environment**: A _devbox_ configuration is provided to automatically setup all the tools above, read more in [here](./NIX_DEV_ENV.md). +#### Step 0: Install the necessary tools -To start building the Apache KIE Tools project, you're going to need: +> **💡 RECOMMENDED** +> +> **Nix development environment**: A _devbox_ configuration is provided to automatically setup all the tools below. Read more in [here](./NIX_DEV_ENV.md). + +To build and test all packages of the Apache KIE Tools project, you're going to need: - Node `18` _(To install, follow these instructions: https://nodejs.org/en/download/package-manager/)_ -- pnpm `8.7.0` _(To install, follow these instructions: https://pnpm.io/installation)_ +- pnpm `8.7.0` _(To install, follow these instructions: https://pnpm.io/installation#using-npm)_ - Maven `3.9.6` - Java `17` -- Go `1.21.5` _(To install, follow these instructions: https://go.dev/doc/install)_ +- Go `1.21.9` _(To install, follow these instructions: https://go.dev/doc/install)_ +- Python `3.12` _(To install, follow these instructions: https://www.python.org/downloads/)_ - Helm `3.13.3` _(To install, follow these instructions: https://helm.sh/docs/intro/install/)_ +- Make + +> **ℹ️ NOTE** +> +> If you plan on building container images, make sure you have a working Docker setup. Setting `KIE_TOOLS_BUILD__buildContainerImages=true` will also be necessary. + +#### Step 1: Bootstrap + +Bootstrapping installs the necessary dependencies for each package. + +- `pnpm bootstrap` --> Will bootstrap all packages +- `pnpm bootstrap [pnpm-filter]` --> Will bootstrap packages filtered by [`pnpm` filter](https://pnpm.io/filtering) +- > E.g., + > + > `pnpm bootstrap -F dmn-editor...` bootstraps the `dmn-editor` package and its dependencies. + +> **ℹ️ NOTE** +> +> If you plan on running Playwright tests, set the `PLAYWRIGHT_BASE__installDeps` environment variable to `true` before running the command above. +> +> `PLAYWRIGHT_BASE__installDeps=true pnpm bootstrap`. +> +> This will install all Playwright dependencies (such as browsers engines and OS-specific libraries). + +#### Step 2: Build + +- Dev + + - `pnpm -r build:dev` + - Will build all packages for development. Skipping linters, tests, minifiers etc. + - `pnpm [pnpm-filter] build:dev` + - Will build packages filtered by [`pnpm` filter](https://pnpm.io/filtering) + - > E.g., + > + > `pnpm -F dmn-editor... build:dev` builds the `dmn-editor` package and its dependencies. + +- Prod + + - `pnpm -r build:prod` + - Will build all packages for production. Optimizers will run, binaries will be produced for multiple architectures etc. + - `pnpm [pnpm-filter] build:prod` + - Will build packages filtered by [`pnpm` filter](https://pnpm.io/filtering) + - > E.g., + > + > `pnpm -F dmn-editor... build:prod` builds the `dmn-editor` package and its dependencies. + +- Changed + - `pnpm -F '...[HEAD]' build:dev`; or + - `pnpm -F '...[HEAD]' build:prod` + - Will build changed and affected packages based on your local changes. Useful for verifying that you didn't break anything. + +> **ℹ️ NOTE** +> +> The Apache KIE Tools build is parameterized by several Environment Variables. For an extensive list of these variables, please see the list printed by the `bootstrap` step. +> +> - To enable the examples build: `export KIE_TOOLS_BUILD__buildExamples=true` +> - To enable container images build: `export KIE_TOOLS_BUILD__buildContainerImages=true` +> - To enable E2E tests: `export KIE_TOOLS_BUILD__runEndToEndTests=true` + +> **ℹ️ NOTE** +> +> Final artifacts will be in `{packages,examples}/*/dist` directories. -> **ℹ️ NOTE:** Some packages will require that `make` is available as well. - -After installing the tools above, you'll need to download the dependencies and link the packages locally. Simply run: - -- `pnpm bootstrap` - - > **ℹ️ NOTE:** If you plan on running Playwright tests, set the `PLAYWRIGHT_BASE__installDeps` environment variable to `true` before running the command above: `PLAYWRIGHT_BASE__installDeps=true pnpm bootstrap`. This will install all Playwright dependencies (such as browsers engines and OS specific libraries). - -To install only the dependencies that are relevant to the package called `[pkg-name]`. - -- `pnpm bootstrap -F [pkg-name]...` - - > **ℹ️ NOTE:** Here, `...` is actually **necessary**! They're part of a [`pnpm` filter](https://pnpm.io/filtering#--filter-package_name-1). - -After dependencies are installed, you'll be able to build. To do so, you'll have two choices - `dev`, or `prod`. - -Note that it is recommended that you specify which package you want to build, so replace `[pkg-name]` with the name of the desired package on one of the commands below: - -- `pnpm -F [pkg-name]... build:dev` - This is fast, but not as strict. It skips tests, linters, and some type checks. Be prepared for the CI to fail on your PRs. -- `pnpm -F [pkg-name]... build:prod` - The default command to build production-ready packages. Use that to make sure your changes are correct. - -> **ℹ️ NOTE:** Here, `...` is actually **necessary**! They're part of a [`pnpm` filter](https://pnpm.io/filtering#--filter-package_name-1). - -> **ℹ️ NOTE:** If you want to build _everything_, run `pnpm -r build:dev` or `pnpm -r build:prod`. It's going to take a while, though :) - -> **ℹ️ NOTE:** The Apache KIE Tools build is parameterized by several Environment Variables. For an extensive list of these variables, please see the list printed by the `bootstrap` script. - -> **ℹ️ NOTE:** Final artifacts will be on `{packages,examples}/*/dist` directories. +--- ## Applications diff --git a/devbox.json b/devbox.json index f2127023860..a61dbeed3c0 100644 --- a/devbox.json +++ b/devbox.json @@ -2,11 +2,11 @@ "$schema": "https://raw.githubusercontent.com/jetpack-io/devbox/0.10.4/.schema/devbox.schema.json", "packages": { "temurin-bin-17": "17.0.9", - "nodejs": "18.19.1", + "nodejs": "18.20.2", "maven": "3.9.6", "kubernetes-helm": "3.13.3", "gnumake": "4.4.1", - "go": "1.21.8", + "go": "1.21.9", "python": "3.12.2" }, "env": { diff --git a/devbox.lock b/devbox.lock index 687c17f6d29..090ca034213 100644 --- a/devbox.lock +++ b/devbox.lock @@ -93,51 +93,51 @@ } } }, - "go@1.21.8": { - "last_modified": "2024-03-22T11:26:23Z", - "resolved": "github:NixOS/nixpkgs/a3ed7406349a9335cb4c2a71369b697cecd9d351#go_1_21", + "go@1.21.9": { + "last_modified": "2024-04-19T17:36:04-04:00", + "resolved": "github:NixOS/nixpkgs/92d295f588631b0db2da509f381b4fb1e74173c5#go_1_21", "source": "devbox-search", - "version": "1.21.8", + "version": "1.21.9", "systems": { "aarch64-darwin": { "outputs": [ { "name": "out", - "path": "/nix/store/zla9agv9h4w5byazjx2vhwnsqnk96cb5-go-1.21.8", + "path": "/nix/store/hnqasgvlimar5j7k0kpbbbxbkn8zn1sj-go-1.21.9", "default": true } ], - "store_path": "/nix/store/zla9agv9h4w5byazjx2vhwnsqnk96cb5-go-1.21.8" + "store_path": "/nix/store/hnqasgvlimar5j7k0kpbbbxbkn8zn1sj-go-1.21.9" }, "aarch64-linux": { "outputs": [ { "name": "out", - "path": "/nix/store/4mjpm4gxn04drnr2l83js185v66fw6nz-go-1.21.8", + "path": "/nix/store/1j8kg9v5zck8j2vnxng7qg9fd7kmmahm-go-1.21.9", "default": true } ], - "store_path": "/nix/store/4mjpm4gxn04drnr2l83js185v66fw6nz-go-1.21.8" + "store_path": "/nix/store/1j8kg9v5zck8j2vnxng7qg9fd7kmmahm-go-1.21.9" }, "x86_64-darwin": { "outputs": [ { "name": "out", - "path": "/nix/store/isc1mgnbrfiqi3blr8glixdq1nmlap0h-go-1.21.8", + "path": "/nix/store/hy3h296ckqcdrm4bq8gxwrrpgfi84lxm-go-1.21.9", "default": true } ], - "store_path": "/nix/store/isc1mgnbrfiqi3blr8glixdq1nmlap0h-go-1.21.8" + "store_path": "/nix/store/hy3h296ckqcdrm4bq8gxwrrpgfi84lxm-go-1.21.9" }, "x86_64-linux": { "outputs": [ { "name": "out", - "path": "/nix/store/afv3zwqxyw062vg2j220658jq0g1yadv-go-1.21.8", + "path": "/nix/store/r9qdln83ffwmhjrl20byxxxav645mb5b-go-1.21.9", "default": true } ], - "store_path": "/nix/store/afv3zwqxyw062vg2j220658jq0g1yadv-go-1.21.8" + "store_path": "/nix/store/r9qdln83ffwmhjrl20byxxxav645mb5b-go-1.21.9" } } }, @@ -237,68 +237,68 @@ } } }, - "nodejs@18.19.1": { - "last_modified": "2024-03-29T03:06:03Z", + "nodejs@18.20.2": { + "last_modified": "2024-04-19T17:36:04-04:00", "plugin_version": "0.0.2", - "resolved": "github:NixOS/nixpkgs/9b09bde6e3fc9493b6a8b2a5702ac87c66505c64#nodejs_18", + "resolved": "github:NixOS/nixpkgs/92d295f588631b0db2da509f381b4fb1e74173c5#nodejs_18", "source": "devbox-search", - "version": "18.19.1", + "version": "18.20.2", "systems": { "aarch64-darwin": { "outputs": [ { "name": "out", - "path": "/nix/store/r5iax8ijz3fb2318mvk1lqhmgd3ywra0-nodejs-18.19.1", + "path": "/nix/store/c4cy6ivwvyccxb5cgvmibb48cz5kgbxh-nodejs-18.20.2", "default": true }, { "name": "libv8", - "path": "/nix/store/5da4myd75fd2lng1c5y7vgsjx5d0fzps-nodejs-18.19.1-libv8" + "path": "/nix/store/sl20inmjg0p9nbsqcbvrrynbxr0d4z4j-nodejs-18.20.2-libv8" } ], - "store_path": "/nix/store/r5iax8ijz3fb2318mvk1lqhmgd3ywra0-nodejs-18.19.1" + "store_path": "/nix/store/c4cy6ivwvyccxb5cgvmibb48cz5kgbxh-nodejs-18.20.2" }, "aarch64-linux": { "outputs": [ { "name": "out", - "path": "/nix/store/c77aqmmdz2xrnwx8r00830vrikpvxsgs-nodejs-18.19.1", + "path": "/nix/store/02sxkyivycayrw2qbf0vbln1vv2l75wg-nodejs-18.20.2", "default": true }, { "name": "libv8", - "path": "/nix/store/kbsp3mrmr31fs0qvscik29ls4ph97wvy-nodejs-18.19.1-libv8" + "path": "/nix/store/sl5gvfjjm6f0b818vnggkpadr1mcyfs3-nodejs-18.20.2-libv8" } ], - "store_path": "/nix/store/c77aqmmdz2xrnwx8r00830vrikpvxsgs-nodejs-18.19.1" + "store_path": "/nix/store/02sxkyivycayrw2qbf0vbln1vv2l75wg-nodejs-18.20.2" }, "x86_64-darwin": { "outputs": [ { "name": "out", - "path": "/nix/store/d797z1ds0cp8djhd4r6g7lw660npalv4-nodejs-18.19.1", + "path": "/nix/store/8j5ld9b8gciy0dfpnjbi98w76v05kia6-nodejs-18.20.2", "default": true }, { "name": "libv8", - "path": "/nix/store/1m4bp8f0frjjrfgrply18hssy1ddpxjp-nodejs-18.19.1-libv8" + "path": "/nix/store/bza5hfp4mb002mp12g33v5arcpyg223s-nodejs-18.20.2-libv8" } ], - "store_path": "/nix/store/d797z1ds0cp8djhd4r6g7lw660npalv4-nodejs-18.19.1" + "store_path": "/nix/store/8j5ld9b8gciy0dfpnjbi98w76v05kia6-nodejs-18.20.2" }, "x86_64-linux": { "outputs": [ { "name": "out", - "path": "/nix/store/s01jxkf9lr2ajlqxk86065rs77mm96am-nodejs-18.19.1", + "path": "/nix/store/c9wp3qkbfkpx2vylglrmd4w0jwvm216z-nodejs-18.20.2", "default": true }, { "name": "libv8", - "path": "/nix/store/82932mmpy9jyry0f1yn8s31l0vnd9xa2-nodejs-18.19.1-libv8" + "path": "/nix/store/1il1i3j9qch6hg6f7pp1753z95lappzv-nodejs-18.20.2-libv8" } ], - "store_path": "/nix/store/s01jxkf9lr2ajlqxk86065rs77mm96am-nodejs-18.19.1" + "store_path": "/nix/store/c9wp3qkbfkpx2vylglrmd4w0jwvm216z-nodejs-18.20.2" } } }, diff --git a/packages/kn-plugin-workflow/README.md b/packages/kn-plugin-workflow/README.md index 71ce9484dbd..8f1f13bc547 100644 --- a/packages/kn-plugin-workflow/README.md +++ b/packages/kn-plugin-workflow/README.md @@ -10,9 +10,9 @@ All the commands in this section should be performed in the monorepo root. ### Prerequisites -- Node `>= 18.14.0` _(To install, follow these instructions: https://nodejs.org/en/download/package-manager/)_ +- Node `>= 18.20.2` _(To install, follow these instructions: https://nodejs.org/en/download/package-manager/)_ - pnpm `8.7.0` _(To install, follow these instructions: https://pnpm.io/installation)_ -- Go `1.21.5` _(To install, follow these instructions: https://go.dev/doc/install)_ +- Go `1.21.9` _(To install, follow these instructions: https://go.dev/doc/install)_ #### Prerequisites for running end-to-end tests diff --git a/repo/build-dependencies-versions.json b/repo/build-dependencies-versions.json index 769d74e00c7..051012eed5b 100644 --- a/repo/build-dependencies-versions.json +++ b/repo/build-dependencies-versions.json @@ -1,8 +1,8 @@ { - "go": "1.21.5", + "go": "1.21.9", "java": "17", "maven": "3.9.6", - "node": "18.14.0", + "node": "18.20.2", "pnpm": "8.7.0", "python3": "3.12.2", "pip3": "24.0" From 65b2d529ebfff47b21f3f7ac2e288d8640ca1bf2 Mon Sep 17 00:00:00 2001 From: Rodrigo Antunes Date: Tue, 7 May 2024 18:28:46 -0300 Subject: [PATCH 02/10] NO-ISSUE: Run release Jenkins jobs in parallel (#2303) --- .ci/jenkins/Jenkinsfile.release-build | 965 +++++++++--------- .ci/jenkins/Jenkinsfile.release-publish | 2 +- .ci/jenkins/Jenkinsfile.staging-build | 8 +- .../Jenkinsfile.kn-plugin-workflow | 104 +- .../release-jobs/Jenkinsfile.npm-packages | 62 +- .../Jenkinsfile.vscode-extensions-dev | 50 +- .../Jenkinsfile.vscode-extensions-prod | 188 ++-- 7 files changed, 725 insertions(+), 654 deletions(-) diff --git a/.ci/jenkins/Jenkinsfile.release-build b/.ci/jenkins/Jenkinsfile.release-build index f3b75ffe3af..d9ac51b07e2 100644 --- a/.ci/jenkins/Jenkinsfile.release-build +++ b/.ci/jenkins/Jenkinsfile.release-build @@ -33,7 +33,7 @@ pipeline { 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: 'Release Version', name: 'RELEASE_VERSION', defaultValue: '0.0.0') string(description: 'Upload asset url', name: 'UPLOAD_ASSET_URL', defaultValue: '') string(description: 'Runners', name: 'RUNNERS', defaultValue: '{"dev_deployment_base_image":"false","dev_deployment_kogito_quakus_blank_app_image":"false","dev_deployment_dmn_form_webapp_image":"false","dev_deployment_upload_service":"false","kie_sandbox_image":"false","kie_sandbox_extended_services_image":"false","cors_proxy_image":"false","online_editor":"false", "chrome_extensions":"false","vscode_extensions_dev":"false","vscode_extensions_prod":"false","npm_packages":"false","standalone_editors_cdn":"false","extended_services":"false","serverless_logic_web_tools":"false","serverless_logic_web_tools_swf_builder_image":"false","serverless_logic_web_tools_base_builder_image":"false","serverless_logic_web_tools_swf_dev_mode_image":"false","dashbuilder_viewer_image":"false","kn_plugin_workflow":"false","kie_sandbox_helm_chart":"false","kogito_task_console":"false","kogito_management_console":"false","kogito_swf_builder":"false","kogito_swf_devmode":"false","kogito_serverless_operator":"false"}') } @@ -127,520 +127,531 @@ pipeline { echo "dashbuilder_viewer_image: ${env.DASHBUILDER_VIEWER_IMAGE}" echo "kn_plugin_workflow: ${env.KN_PLUGIN_WORKFLOW}" echo "kie_sandbox_helm_chart: ${env.KIE_SANDBOX_HELM_CHART}" - echo "kogito_task_console": ${env.KOGITO_TASK_CONSOLE}" - echo "kogito_management_console": ${env.KOGITO_MANAGEMENT_CONSOLE}" - echo "kogito_swf_builder": ${env.KOGITO_SWF_BUILDER}" - echo "kogito_swf_devmode": ${env.KOGITO_SWF_DEVMODE}" - echo "kogito_serverless_operator": ${env.KOGITO_SERVERLESS_OPERATOR}" + echo "kogito_task_console: ${env.KOGITO_TASK_CONSOLE}" + echo "kogito_management_console: ${env.KOGITO_MANAGEMENT_CONSOLE}" + echo "kogito_swf_builder: ${env.KOGITO_SWF_BUILDER}" + echo "kogito_swf_devmode: ${env.KOGITO_SWF_DEVMODE}" + echo "kogito_serverless_operator: ${env.KOGITO_SERVERLESS_OPERATOR}" """.trim() } } - stage('Dev Deployment Base Image') { - when { - expression { env.DEV_DEPLOYMENT_BASE_IMAGE == 'true' } - } - steps { - script { - env.DEV_DEPLOYMENT_BASE_IMAGE_JOB_RESULT = build( - wait: true, - job: 'KIE/kie-tools/kie-tools-release-jobs/dev-deployment-base-image', - parameters: [ - booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), - string(name: 'BASE_REF', value: "${params.BASE_REF}"), - string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}") - ] - ).result - } - } - } - - stage('Dev Deployment DMN Form Webapp Image') { - when { - expression { env.DEV_DEPLOYMENT_DMN_FORM_WEBAPP_IMAGE == 'true' } - } - steps { - script { - env.DEV_DEPLOYMENT_DMN_FORM_WEBAPP_IMAGE_JOB_RESULT = build( - wait: true, - job: 'KIE/kie-tools/kie-tools-release-jobs/dev-deployment-dmn-form-webapp-image', - parameters: [ - booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), - string(name: 'BASE_REF', value: "${params.BASE_REF}"), - string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}") - ] - ).result - } - } - } - - stage('Dev Deployment Kogito Quarkus Blank App Image') { - when { - expression { env.DEV_DEPLOYMENT_KOGITO_QUARKUS_BLANK_APP_IMAGE == 'true' } - } - steps { - script { - env.DEV_DEPLOYMENT_KOGITO_QUARKUS_BLANK_APP_IMAGE_JOB_RESULT = build( - wait: true, - job: 'KIE/kie-tools/kie-tools-release-jobs/dev-deployment-kogito-quarkus-blank-app-image', - parameters: [ - booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), - string(name: 'BASE_REF', value: "${params.BASE_REF}"), - string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}") - ] - ).result - } - } - } - - stage('Dev Deployment Upload Service') { - when { - expression { env.DEV_DEPLOYMENT_UPLOAD_SERVICE == 'true' } - } - steps { - script { - env.DEV_DEPLOYMENT_UPLOAD_SERVICE_JOB_RESULT = build( - wait: true, - job: 'KIE/kie-tools/kie-tools-release-jobs/dev-deployment-upload-service', - parameters: [ - booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), - string(name: 'BASE_REF', value: "${params.BASE_REF}"), - string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}"), - string(name: 'UPLOAD_ASSET_URL', value: "${params.UPLOAD_ASSET_URL}") - ] - ).result - } - } - } - - stage('KIE Sandbox Extended Services Image') { - when { - expression { env.KIE_SANDBOX_EXTENDED_SERVICES_IMAGE == 'true' } - } - steps { - script { - env.KIE_SANDBOX_EXTENDED_SERVICES_IMAGE_JOB_RESULT = build( - wait: true, - job: 'KIE/kie-tools/kie-tools-release-jobs/kie-sandbox-extended-services', - parameters: [ - booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), - string(name: 'BASE_REF', value: "${params.BASE_REF}"), - string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}") - ] - ).result - - env.KIE_SANDBOX_EXTENDED_SERVICES_URL = openShiftUtils.getAppRoute("${env.OPENSHIFT_NAMESPACE}", 'kie-sandbox-extended-services', "${pipelineVars.openshiftCredentialsId}") - } - } - } - - stage('CORS Proxy Image') { - when { - expression { env.CORS_PROXY_IMAGE == 'true' } - } - steps { - script { - env.CORS_PROXY_IMAGE_JOB_RESULT = build( - wait: true, - job: 'KIE/kie-tools/kie-tools-release-jobs/cors-proxy', - parameters: [ - booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), - string(name: 'BASE_REF', value: "${params.BASE_REF}"), - string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}") - ] - ).result - - env.KIE_SANDBOX_CORS_PROXY_URL = openShiftUtils.getAppRoute("${env.OPENSHIFT_NAMESPACE}", 'cors-proxy', "${pipelineVars.openshiftCredentialsId}") - } - } - } - - stage('KIE Sandbox Image') { - when { - expression { env.KIE_SANDBOX_IMAGE == 'true' } - } - steps { - script { - env.KIE_SANDBOX_IMAGE_JOB_RESULT = build( - wait: true, - job: 'KIE/kie-tools/kie-tools-release-jobs/kie-sandbox', - parameters: [ - booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), - string(name: 'BASE_REF', value: "${params.BASE_REF}"), - string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}"), - string(name: 'KIE_SANDBOX_EXTENDED_SERVICES_URL', value: "${env.KIE_SANDBOX_EXTENDED_SERVICES_URL}"), - string(name: 'KIE_SANDBOX_CORS_PROXY_URL', value: "${env.KIE_SANDBOX_CORS_PROXY_URL}") - ] - ).result - - env.KIE_SANDBOX_URL = openShiftUtils.getAppRoute("${env.OPENSHIFT_NAMESPACE}", 'kie-sandbox', "${pipelineVars.openshiftCredentialsId}") - } - } - } - - // TODO: Verify Windows + MacOS builds - stage('Extendend Services') { - when { - expression { env.EXTENDED_SERVICES == 'true' } - } - steps { - script { - env.EXTENDED_SERVICES_JOB_RESULT = build( - wait: true, - job: 'KIE/kie-tools/kie-tools-release-jobs/extended-services', - parameters: [ - booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), - string(name: 'BASE_REF', value: "${params.BASE_REF}"), - string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}"), - string(name: 'UPLOAD_ASSET_URL', value: "${params.UPLOAD_ASSET_URL}") - ] - ).result - } - } - } - - stage('Online Editor') { - when { - expression { env.ONLINE_EDITOR == 'true' && (env.EXTENDED_SERVICES_JOB_RESULT == 'SUCCESS' || env.EXTENDED_SERVICES_JOB_RESULT == 'SKIPPED') && (env.DEV_DEPLOYMENT_BASE_IMAGE_JOB_RESULT == 'SUCCESS' || env.DEV_DEPLOYMENT_BASE_IMAGE_JOB_RESULT == 'SKIPPED') && (env.DEV_DEPLOYMENT_DMN_FORM_WEBAPP_IMAGE_JOB_RESULT == 'SUCCESS' || env.DEV_DEPLOYMENT_DMN_FORM_WEBAPP_IMAGE_JOB_RESULT == 'SKIPPED') } - } - steps { - script { - env.ONLINE_EDITOR_JOB_RESULT = build( - wait: true, - job: 'KIE/kie-tools/kie-tools-release-jobs/online-editor', - parameters: [ - booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), - string(name: 'BASE_REF', value: "${params.BASE_REF}"), - string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}") - ] - ).result + stage('Parallel - Builds') { + parallel { + stage('Dev Deployment Kogito Quarkus Blank App Image') { + when { + expression { env.DEV_DEPLOYMENT_KOGITO_QUARKUS_BLANK_APP_IMAGE == 'true' } + } + steps { + script { + env.DEV_DEPLOYMENT_KOGITO_QUARKUS_BLANK_APP_IMAGE_JOB_RESULT = build( + wait: true, + job: 'KIE/kie-tools/kie-tools-release-jobs/dev-deployment-kogito-quarkus-blank-app-image', + parameters: [ + booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), + string(name: 'BASE_REF', value: "${params.BASE_REF}"), + string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}") + ] + ).result + } + } } - } - } - stage('Chrome Extensions') { - when { - expression { env.CHROME_EXTENSIONS == 'true' && (env.EXTENDED_SERVICES_JOB_RESULT == 'SUCCESS' || env.EXTENDED_SERVICES_JOB_RESULT == 'SKIPPED') && (env.DEV_DEPLOYMENT_BASE_IMAGE_JOB_RESULT == 'SUCCESS' || env.DEV_DEPLOYMENT_BASE_IMAGE_JOB_RESULT == 'SKIPPED') && (env.DEV_DEPLOYMENT_DMN_FORM_WEBAPP_IMAGE_JOB_RESULT == 'SUCCESS' || env.DEV_DEPLOYMENT_DMN_FORM_WEBAPP_IMAGE_JOB_RESULT == 'SKIPPED') && (env.ONLINE_EDITOR_JOB_RESULT == 'SUCCESS' || env.ONLINE_EDITOR_JOB_RESULT == 'SKIPPED') } - } - steps { - script { - env.CHROME_EXTENSIONS_JOB_RESULT = build( - wait: true, - job: 'KIE/kie-tools/kie-tools-release-jobs/chrome-extensions', - parameters: [ - booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), - string(name: 'BASE_REF', value: "${params.BASE_REF}"), - string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}"), - string(name: 'UPLOAD_ASSET_URL', value: "${params.UPLOAD_ASSET_URL}") - ] - ).result + stage('Dev Deployment Upload Service') { + when { + expression { env.DEV_DEPLOYMENT_UPLOAD_SERVICE == 'true' } + } + steps { + script { + env.DEV_DEPLOYMENT_UPLOAD_SERVICE_JOB_RESULT = build( + wait: true, + job: 'KIE/kie-tools/kie-tools-release-jobs/dev-deployment-upload-service', + parameters: [ + booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), + string(name: 'BASE_REF', value: "${params.BASE_REF}"), + string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}"), + string(name: 'UPLOAD_ASSET_URL', value: "${params.UPLOAD_ASSET_URL}") + ] + ).result + } + } } - } - } - stage('VSCode Extensions Dev') { - when { - expression { env.VSCODE_EXTENSIONS_DEV == 'true' } - } - steps { - script { - env.VSCODE_EXTENSIONS_DEV_JOB_RESULT = build( - wait: true, - job: 'KIE/kie-tools/kie-tools-release-jobs/vscode-extensions-dev', - parameters: [ - booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), - string(name: 'BASE_REF', value: "${params.BASE_REF}"), - string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}"), - string(name: 'UPLOAD_ASSET_URL', value: "${params.UPLOAD_ASSET_URL}") - ] - ).result + stage('VSCode Extensions Dev') { + when { + expression { env.VSCODE_EXTENSIONS_DEV == 'true' } + } + steps { + script { + env.VSCODE_EXTENSIONS_DEV_JOB_RESULT = build( + wait: true, + job: 'KIE/kie-tools/kie-tools-release-jobs/vscode-extensions-dev', + parameters: [ + booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), + string(name: 'BASE_REF', value: "${params.BASE_REF}"), + string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}"), + string(name: 'UPLOAD_ASSET_URL', value: "${params.UPLOAD_ASSET_URL}") + ] + ).result + } + } } - } - } - stage('VSCode Extensions Prod') { - when { - expression { env.VSCODE_EXTENSIONS_PROD == 'true' } - } - steps { - script { - env.CHROME_EXTENSIONS_JOB_RESULT = build( - wait: true, - job: 'KIE/kie-tools/kie-tools-release-jobs/vscode-extensions-prod', - parameters: [ - booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), - string(name: 'BASE_REF', value: "${params.BASE_REF}"), - string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}"), - string(name: 'UPLOAD_ASSET_URL', value: "${params.UPLOAD_ASSET_URL}") - ] - ).result + stage('VSCode Extensions Prod') { + when { + expression { env.VSCODE_EXTENSIONS_PROD == 'true' } + } + steps { + script { + env.CHROME_EXTENSIONS_JOB_RESULT = build( + wait: true, + job: 'KIE/kie-tools/kie-tools-release-jobs/vscode-extensions-prod', + parameters: [ + booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), + string(name: 'BASE_REF', value: "${params.BASE_REF}"), + string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}"), + string(name: 'UPLOAD_ASSET_URL', value: "${params.UPLOAD_ASSET_URL}") + ] + ).result + } + } } - } - } - stage('NPM Packages') { - when { - expression { env.NPM_PACKAGES == 'true' } - } - steps { - script { - env.NPM_PACKAGES_JOB_RESULT = build( - wait: true, - job: 'KIE/kie-tools/kie-tools-release-jobs/npm-packages', - parameters: [ - booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), - string(name: 'BASE_REF', value: "${params.BASE_REF}"), - string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}") - ] - ).result + stage('NPM Packages') { + when { + expression { env.NPM_PACKAGES == 'true' } + } + steps { + script { + env.NPM_PACKAGES_JOB_RESULT = build( + wait: true, + job: 'KIE/kie-tools/kie-tools-release-jobs/npm-packages', + parameters: [ + booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), + string(name: 'BASE_REF', value: "${params.BASE_REF}"), + string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}") + ] + ).result + } + } } - } - } - stage('Standalone Editors CDN') { - when { - expression { env.STANDALONE_EDITORS_CDN == 'true' && (env.EXTENDED_SERVICES_JOB_RESULT == 'SUCCESS' || env.EXTENDED_SERVICES_JOB_RESULT == 'SKIPPED') && (env.DEV_DEPLOYMENT_BASE_IMAGE_JOB_RESULT == 'SUCCESS' || env.DEV_DEPLOYMENT_BASE_IMAGE_JOB_RESULT == 'SKIPPED') && (env.DEV_DEPLOYMENT_DMN_FORM_WEBAPP_IMAGE_JOB_RESULT == 'SUCCESS' || env.DEV_DEPLOYMENT_DMN_FORM_WEBAPP_IMAGE_JOB_RESULT == 'SKIPPED') && (env.ONLINE_EDITOR_JOB_RESULT == 'SUCCESS' || env.ONLINE_EDITOR_JOB_RESULT == 'SKIPPED') && (env.CHROME_EXTENSIONS_JOB_RESULT == 'SUCCESS' || env.CHROME_EXTENSIONS_JOB_RESULT == 'SKIPPED') } - } - steps { - script { - env.STANDALONE_EDITORS_CDN_JOB_RESULT = build( - wait: true, - job: 'KIE/kie-tools/kie-tools-release-jobs/standalone-editors-cdn', - parameters: [ - booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), - string(name: 'BASE_REF', value: "${params.BASE_REF}"), - string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}") - ] - ).result + stage('Kn Plugin Workflow') { + when { + expression { env.KN_PLUGIN_WORKFLOW == 'true' } + } + steps { + script { + env.KN_PLUGIN_WORKFLOW_JOB_RESULT = build( + wait: true, + job: 'KIE/kie-tools/kie-tools-release-jobs/kn-plugin-workflow', + parameters: [ + booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), + string(name: 'BASE_REF', value: "${params.BASE_REF}"), + string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}"), + string(name: 'UPLOAD_ASSET_URL', value: "${params.UPLOAD_ASSET_URL}") + ] + ).result + } + } } - } - } - stage('Kn Plugin Workflow') { - when { - expression { env.KN_PLUGIN_WORKFLOW == 'true' } - } - steps { - script { - env.KN_PLUGIN_WORKFLOW_JOB_RESULT = build( - wait: true, - job: 'KIE/kie-tools/kie-tools-release-jobs/kn-plugin-workflow', - parameters: [ - booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), - string(name: 'BASE_REF', value: "${params.BASE_REF}"), - string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}"), - string(name: 'UPLOAD_ASSET_URL', value: "${params.UPLOAD_ASSET_URL}") - ] - ).result + stage('Serverless Logic Web Tools Swf Builder Image') { + when { + expression { env.SERVERLESS_LOGIC_WEB_TOOLS_SWF_BUILDER_IMAGE == 'true' } + } + steps { + script { + env.SERVERLESS_LOGIC_WEB_TOOLS_SWF_BUILDER_IMAGE_JOB_RESULT = build( + wait: true, + job: 'KIE/kie-tools/kie-tools-release-jobs/serverless-logic-web-tools-swf-builder-image', + parameters: [ + booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), + string(name: 'BASE_REF', value: "${params.BASE_REF}"), + string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}") + ] + ).result + } + } } - } - } - stage('Serverless Logic Web Tools Swf Builder Image') { - when { - expression { env.SERVERLESS_LOGIC_WEB_TOOLS_SWF_BUILDER_IMAGE == 'true' } - } - steps { - script { - env.SERVERLESS_LOGIC_WEB_TOOLS_SWF_BUILDER_IMAGE_JOB_RESULT = build( - wait: true, - job: 'KIE/kie-tools/kie-tools-release-jobs/serverless-logic-web-tools-swf-builder-image', - parameters: [ - booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), - string(name: 'BASE_REF', value: "${params.BASE_REF}"), - string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}") - ] - ).result + stage('Serverless Logic Web Tools Swf Dev Mode Image') { + when { + expression { env.SERVERLESS_LOGIC_WEB_TOOLS_SWF_DEV_MODE_IMAGE == 'true' } + } + steps { + script { + env.SERVERLESS_LOGIC_WEB_TOOLS_SWF_DEV_MODE_IMAGE_JOB_RESULT = build( + wait: true, + job: 'KIE/kie-tools/kie-tools-release-jobs/serverless-logic-web-tools-swf-dev-mode-image', + parameters: [ + booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), + string(name: 'BASE_REF', value: "${params.BASE_REF}"), + string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}") + ] + ).result + } + } } - } - } - stage('Serverless Logic Web Tools Swf Dev Mode Image') { - when { - expression { env.SERVERLESS_LOGIC_WEB_TOOLS_SWF_DEV_MODE_IMAGE == 'true' } - } - steps { - script { - env.SERVERLESS_LOGIC_WEB_TOOLS_SWF_DEV_MODE_IMAGE_JOB_RESULT = build( - wait: true, - job: 'KIE/kie-tools/kie-tools-release-jobs/serverless-logic-web-tools-swf-dev-mode-image', - parameters: [ - booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), - string(name: 'BASE_REF', value: "${params.BASE_REF}"), - string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}") - ] - ).result + stage('Serverless Logic Web Tools Base Builder Image') { + when { + expression { env.SERVERLESS_LOGIC_WEB_TOOLS_BASE_BUILDER_IMAGE == 'true' } + } + steps { + script { + env.SERVERLESS_LOGIC_WEB_TOOLS_BASE_BUILDER_IMAGE_JOB_RESULT = build( + wait: true, + job: 'KIE/kie-tools/kie-tools-release-jobs/serverless-logic-web-tools-base-builder-image', + parameters: [ + booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), + string(name: 'BASE_REF', value: "${params.BASE_REF}"), + string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}") + ] + ).result + } + } } - } - } - stage('Serverless Logic Web Tools Base Builder Image') { - when { - expression { env.SERVERLESS_LOGIC_WEB_TOOLS_BASE_BUILDER_IMAGE == 'true' } - } - steps { - script { - env.SERVERLESS_LOGIC_WEB_TOOLS_BASE_BUILDER_IMAGE_JOB_RESULT = build( - wait: true, - job: 'KIE/kie-tools/kie-tools-release-jobs/serverless-logic-web-tools-base-builder-image', - parameters: [ - booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), - string(name: 'BASE_REF', value: "${params.BASE_REF}"), - string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}") - ] - ).result + stage('Dashbuilder Viewer Image') { + when { + expression { env.DASHBUILDER_VIEWER_IMAGE == 'true' } + } + steps { + script { + env.DASHBUILDER_VIEWER_IMAGE_JOB_RESULT = build( + wait: true, + job: 'KIE/kie-tools/kie-tools-release-jobs/dashbuilder-viewer-image', + parameters: [ + booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), + string(name: 'BASE_REF', value: "${params.BASE_REF}"), + string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}") + ] + ).result + } + } } - } - } - stage('Dashbuilder Viewer Image') { - when { - expression { env.DASHBUILDER_VIEWER_IMAGE == 'true' } - } - steps { - script { - env.DASHBUILDER_VIEWER_IMAGE_JOB_RESULT = build( - wait: true, - job: 'KIE/kie-tools/kie-tools-release-jobs/dashbuilder-viewer-image', - parameters: [ - booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), - string(name: 'BASE_REF', value: "${params.BASE_REF}"), - string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}") - ] - ).result + stage('Serverless Logic Web Tools') { + when { + expression { env.SERVERLESS_LOGIC_WEB_TOOLS == 'true' } + } + steps { + script { + env.SERVERLESS_LOGIC_WEB_TOOLS_JOB_RESULT = build( + wait: true, + job: 'KIE/kie-tools/kie-tools-release-jobs/serverless-logic-web-tools', + parameters: [ + booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), + string(name: 'BASE_REF', value: "${params.BASE_REF}"), + string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}") + ] + ).result + } + } } - } - } - stage('Serverless Logic Web Tools') { - when { - expression { env.SERVERLESS_LOGIC_WEB_TOOLS == 'true') } - } - steps { - script { - env.SERVERLESS_LOGIC_WEB_TOOLS_JOB_RESULT = build( - wait: true, - job: 'KIE/kie-tools/kie-tools-release-jobs/serverless-logic-web-tools', - parameters: [ - booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), - string(name: 'BASE_REF', value: "${params.BASE_REF}"), - string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}") - ] - ).result + stage('Kogito Task Console Image') { + when { + expression { env.KOGITO_TASK_CONSOLE == 'true' } + } + steps { + script { + env.KOGITO_TASK_CONSOLE_JOB_RESULT = build( + wait: true, + job: 'KIE/kie-tools/kie-tools-release-jobs/kogito-task-console', + parameters: [ + booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), + string(name: 'BASE_REF', value: "${params.BASE_REF}"), + string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}") + ] + ).result + } + } } - } - } - stage('KIE Sandbox Helm Chart') { - when { - expression { env.KIE_SANDBOX_HELM_CHART == 'true' } - } - steps { - script { - env.KIE_SANDBOX_HELM_CHART_JOB_RESULT = build( - wait: true, - job: 'KIE/kie-tools/kie-tools-release-jobs/kie-sandbox-helm-chart', - parameters: [ - booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), - string(name: 'BASE_REF', value: "${params.BASE_REF}"), - string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}") - ] - ).result + stage('Kogito Management Console Image') { + when { + expression { env.KOGITO_MANAGEMENT_CONSOLE == 'true' } + } + steps { + script { + env.KOGITO_MANAGEMENT_CONSOLE_JOB_RESULT = build( + wait: true, + job: 'KIE/kie-tools/kie-tools-release-jobs/kogito-management-console', + parameters: [ + booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), + string(name: 'BASE_REF', value: "${params.BASE_REF}"), + string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}") + ] + ).result + } + } } - } - } - stage('Kogito Task Console Image') { - when { - expression { env.KOGITO_TASK_CONSOLE == 'true' } - } - steps { - script { - env.KOGITO_TASK_CONSOLE_JOB_RESULT = build( - wait: true, - job: 'KIE/kie-tools/kie-tools-release-jobs/kogito-task-console', - parameters: [ - booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), - string(name: 'BASE_REF', value: "${params.BASE_REF}"), - string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}") - ] - ).result + stage('Kogito SWF Builder Image') { + when { + expression { env.KOGITO_SWF_BUILDER == 'true' } + } + steps { + script { + env.KOGITO_SWF_BUILDER_JOB_RESULT = build( + wait: true, + job: 'KIE/kie-tools/kie-tools-release-jobs/kogito-swf-builder', + parameters: [ + booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), + string(name: 'BASE_REF', value: "${params.BASE_REF}"), + string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}") + ] + ).result + } + } } - } - } - stage('Kogito Management Console Image') { - when { - expression { env.KOGITO_MANAGEMENT_CONSOLE == 'true' } - } - steps { - script { - env.KOGITO_MANAGEMENT_CONSOLE_JOB_RESULT = build( - wait: true, - job: 'KIE/kie-tools/kie-tools-release-jobs/kogito-management-console', - parameters: [ - booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), - string(name: 'BASE_REF', value: "${params.BASE_REF}"), - string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}") - ] - ).result + stage('Kogito SWF Devmode Image') { + when { + expression { env.KOGITO_SWF_DEVMODE == 'true' } + } + steps { + script { + env.KOGITO_SWF_DEVMODE_JOB_RESULT = build( + wait: true, + job: 'KIE/kie-tools/kie-tools-release-jobs/kogito-swf-devmode', + parameters: [ + booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), + string(name: 'BASE_REF', value: "${params.BASE_REF}"), + string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}") + ] + ).result + } + } } - } - } - stage('Kogito SWF Builder Image') { - when { - expression { env.KOGITO_SWF_BUILDER == 'true' } - } - steps { - script { - env.KOGITO_SWF_BUILDER_JOB_RESULT = build( - wait: true, - job: 'KIE/kie-tools/kie-tools-release-jobs/kogito-swf-builder', - parameters: [ - booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), - string(name: 'BASE_REF', value: "${params.BASE_REF}"), - string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}") - ] - ).result + stage('Kogito Serverless Operator Image') { + when { + expression { env.KOGITO_SERVERLESS_OPERATOR == 'true' } + } + steps { + script { + env.KOGITO_SERVERLESS_OPERATOR_JOB_RESULT = build( + wait: true, + job: 'KIE/kie-tools/kie-tools-release-jobs/kogito-serverless-operator', + parameters: [ + booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), + string(name: 'BASE_REF', value: "${params.BASE_REF}"), + string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}") + ] + ).result + } + } } - } - } - stage('Kogito SWF Devmode Image') { - when { - expression { env.KOGITO_SWF_DEVMODE == 'true' } - } - steps { - script { - env.KOGITO_SWF_DEVMODE_JOB_RESULT = build( - wait: true, - job: 'KIE/kie-tools/kie-tools-release-jobs/kogito-swf-devmode', - parameters: [ - booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), - string(name: 'BASE_REF', value: "${params.BASE_REF}"), - string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}") - ] - ).result + stage('Dependant build #1') { + stages { + stage('Dev Deployment Base Image') { + when { + expression { env.DEV_DEPLOYMENT_BASE_IMAGE == 'true' } + } + steps { + script { + env.DEV_DEPLOYMENT_BASE_IMAGE_JOB_RESULT = build( + wait: true, + job: 'KIE/kie-tools/kie-tools-release-jobs/dev-deployment-base-image', + parameters: [ + booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), + string(name: 'BASE_REF', value: "${params.BASE_REF}"), + string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}") + ] + ).result + } + } + } + + stage('Dev Deployment DMN Form Webapp Image') { + when { + expression { env.DEV_DEPLOYMENT_DMN_FORM_WEBAPP_IMAGE == 'true' } + } + steps { + script { + env.DEV_DEPLOYMENT_DMN_FORM_WEBAPP_IMAGE_JOB_RESULT = build( + wait: true, + job: 'KIE/kie-tools/kie-tools-release-jobs/dev-deployment-dmn-form-webapp-image', + parameters: [ + booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), + string(name: 'BASE_REF', value: "${params.BASE_REF}"), + string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}") + ] + ).result + } + } + } + + stage('Extendend Services') { + when { + expression { env.EXTENDED_SERVICES == 'true' } + } + steps { + script { + env.EXTENDED_SERVICES_JOB_RESULT = build( + wait: true, + job: 'KIE/kie-tools/kie-tools-release-jobs/extended-services', + parameters: [ + booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), + string(name: 'BASE_REF', value: "${params.BASE_REF}"), + string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}"), + string(name: 'UPLOAD_ASSET_URL', value: "${params.UPLOAD_ASSET_URL}") + ] + ).result + } + } + } + + stage('Online Editor') { + when { + expression { env.ONLINE_EDITOR == 'true' && (env.EXTENDED_SERVICES_JOB_RESULT == 'SUCCESS' || env.EXTENDED_SERVICES_JOB_RESULT == 'SKIPPED') && (env.DEV_DEPLOYMENT_BASE_IMAGE_JOB_RESULT == 'SUCCESS' || env.DEV_DEPLOYMENT_BASE_IMAGE_JOB_RESULT == 'SKIPPED') && (env.DEV_DEPLOYMENT_DMN_FORM_WEBAPP_IMAGE_JOB_RESULT == 'SUCCESS' || env.DEV_DEPLOYMENT_DMN_FORM_WEBAPP_IMAGE_JOB_RESULT == 'SKIPPED') } + } + steps { + script { + env.ONLINE_EDITOR_JOB_RESULT = build( + wait: true, + job: 'KIE/kie-tools/kie-tools-release-jobs/online-editor', + parameters: [ + booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), + string(name: 'BASE_REF', value: "${params.BASE_REF}"), + string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}") + ] + ).result + } + } + } + + stage('Chrome Extensions') { + when { + expression { env.CHROME_EXTENSIONS == 'true' && (env.EXTENDED_SERVICES_JOB_RESULT == 'SUCCESS' || env.EXTENDED_SERVICES_JOB_RESULT == 'SKIPPED') && (env.DEV_DEPLOYMENT_BASE_IMAGE_JOB_RESULT == 'SUCCESS' || env.DEV_DEPLOYMENT_BASE_IMAGE_JOB_RESULT == 'SKIPPED') && (env.DEV_DEPLOYMENT_DMN_FORM_WEBAPP_IMAGE_JOB_RESULT == 'SUCCESS' || env.DEV_DEPLOYMENT_DMN_FORM_WEBAPP_IMAGE_JOB_RESULT == 'SKIPPED') && (env.ONLINE_EDITOR_JOB_RESULT == 'SUCCESS' || env.ONLINE_EDITOR_JOB_RESULT == 'SKIPPED') } + } + steps { + script { + env.CHROME_EXTENSIONS_JOB_RESULT = build( + wait: true, + job: 'KIE/kie-tools/kie-tools-release-jobs/chrome-extensions', + parameters: [ + booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), + string(name: 'BASE_REF', value: "${params.BASE_REF}"), + string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}"), + string(name: 'UPLOAD_ASSET_URL', value: "${params.UPLOAD_ASSET_URL}") + ] + ).result + } + } + } + + stage('Standalone Editors CDN') { + when { + expression { env.STANDALONE_EDITORS_CDN == 'true' && (env.EXTENDED_SERVICES_JOB_RESULT == 'SUCCESS' || env.EXTENDED_SERVICES_JOB_RESULT == 'SKIPPED') && (env.DEV_DEPLOYMENT_BASE_IMAGE_JOB_RESULT == 'SUCCESS' || env.DEV_DEPLOYMENT_BASE_IMAGE_JOB_RESULT == 'SKIPPED') && (env.DEV_DEPLOYMENT_DMN_FORM_WEBAPP_IMAGE_JOB_RESULT == 'SUCCESS' || env.DEV_DEPLOYMENT_DMN_FORM_WEBAPP_IMAGE_JOB_RESULT == 'SKIPPED') && (env.ONLINE_EDITOR_JOB_RESULT == 'SUCCESS' || env.ONLINE_EDITOR_JOB_RESULT == 'SKIPPED') && (env.CHROME_EXTENSIONS_JOB_RESULT == 'SUCCESS' || env.CHROME_EXTENSIONS_JOB_RESULT == 'SKIPPED') } + } + steps { + script { + env.STANDALONE_EDITORS_CDN_JOB_RESULT = build( + wait: true, + job: 'KIE/kie-tools/kie-tools-release-jobs/standalone-editors-cdn', + parameters: [ + booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), + string(name: 'BASE_REF', value: "${params.BASE_REF}"), + string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}") + ] + ).result + } + } + } + } } - } - } - stage('Kogito Serverless Operator Image') { - when { - expression { env.KOGITO_SERVERLESS_OPERATOR == 'true' } - } - steps { - script { - env.KOGITO_SERVERLESS_OPERATOR_JOB_RESULT = build( - wait: true, - job: 'KIE/kie-tools/kie-tools-release-jobs/kogito-serverless-operator', - parameters: [ - booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), - string(name: 'BASE_REF', value: "${params.BASE_REF}"), - string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}") - ] - ).result + stage('Dependant build #2') { + stages { + stage('KIE Sandbox Extended Services Image') { + when { + expression { env.KIE_SANDBOX_EXTENDED_SERVICES_IMAGE == 'true' } + } + steps { + script { + env.KIE_SANDBOX_EXTENDED_SERVICES_IMAGE_JOB_RESULT = build( + wait: true, + job: 'KIE/kie-tools/kie-tools-release-jobs/kie-sandbox-extended-services', + parameters: [ + booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), + string(name: 'BASE_REF', value: "${params.BASE_REF}"), + string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}") + ] + ).result + + env.KIE_SANDBOX_EXTENDED_SERVICES_URL = openShiftUtils.getAppRoute("${env.OPENSHIFT_NAMESPACE}", 'kie-sandbox-extended-services', "${pipelineVars.openshiftCredentialsId}") + } + } + } + + stage('CORS Proxy Image') { + when { + expression { env.CORS_PROXY_IMAGE == 'true' } + } + steps { + script { + env.CORS_PROXY_IMAGE_JOB_RESULT = build( + wait: true, + job: 'KIE/kie-tools/kie-tools-release-jobs/cors-proxy', + parameters: [ + booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), + string(name: 'BASE_REF', value: "${params.BASE_REF}"), + string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}") + ] + ).result + + env.KIE_SANDBOX_CORS_PROXY_URL = openShiftUtils.getAppRoute("${env.OPENSHIFT_NAMESPACE}", 'cors-proxy', "${pipelineVars.openshiftCredentialsId}") + } + } + } + + stage('KIE Sandbox Image') { + when { + expression { env.KIE_SANDBOX_IMAGE == 'true' && (env.KIE_SANDBOX_EXTENDED_SERVICES_IMAGE_JOB_RESULT == 'SUCCESS' || env.KIE_SANDBOX_EXTENDED_SERVICES_IMAGE_JOB_RESULT == 'SKIPPED') && (env.CORS_PROXY_IMAGE_JOB_RESULT == 'SUCCESS' || env.CORS_PROXY_IMAGE_JOB_RESULT == 'SKIPPED') } + } + steps { + script { + env.KIE_SANDBOX_IMAGE_JOB_RESULT = build( + wait: true, + job: 'KIE/kie-tools/kie-tools-release-jobs/kie-sandbox', + parameters: [ + booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), + string(name: 'BASE_REF', value: "${params.BASE_REF}"), + string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}"), + string(name: 'KIE_SANDBOX_EXTENDED_SERVICES_URL', value: "${env.KIE_SANDBOX_EXTENDED_SERVICES_URL}"), + string(name: 'KIE_SANDBOX_CORS_PROXY_URL', value: "${env.KIE_SANDBOX_CORS_PROXY_URL}") + ] + ).result + + env.KIE_SANDBOX_URL = openShiftUtils.getAppRoute("${env.OPENSHIFT_NAMESPACE}", 'kie-sandbox', "${pipelineVars.openshiftCredentialsId}") + } + } + } + + stage('KIE Sandbox Helm Chart') { + when { + expression { env.KIE_SANDBOX_HELM_CHART == 'true' } + } + steps { + script { + env.KIE_SANDBOX_HELM_CHART_JOB_RESULT = build( + wait: true, + job: 'KIE/kie-tools/kie-tools-release-jobs/kie-sandbox-helm-chart', + parameters: [ + booleanParam(name: 'DRY_RUN', value: "${params.DRY_RUN}"), + string(name: 'BASE_REF', value: "${params.BASE_REF}"), + string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}") + ] + ).result + } + } + } + } } } } diff --git a/.ci/jenkins/Jenkinsfile.release-publish b/.ci/jenkins/Jenkinsfile.release-publish index c2e1f438d2e..e7ec43fca15 100644 --- a/.ci/jenkins/Jenkinsfile.release-publish +++ b/.ci/jenkins/Jenkinsfile.release-publish @@ -30,7 +30,7 @@ pipeline { } parameters { - string(description: 'Tag', name: 'TAG', defaultValue: '0.0.0') + string(description: 'Release Version', name: 'RELEASE_VERSION', defaultValue: '0.0.0') string(description: 'Runners', name: 'RUNNERS', defaultValue: '{"dev_deployment_base_image":"true","dev_deployment_kogito_quakus_blank_app_image":"true","dev_deployment_dmn_form_webapp_image":"true","dev_deployment_upload_service":"true","kie_sandbox_image":"true","kie_sandbox_extended_services_image":"true","cors_proxy_image":"true","online_editor":"true","chrome_extensions":"true","vscode_extensions_dev":"true","vscode_extensions_prod":"true","npm_packages":"true","standalone_editors_cdn":"true","extended_services":"true","serverless_logic_web_tools":"true","serverless_logic_web_tools_swf_builder_image":"true","serverless_logic_web_tools_base_builder_image":"true","serverless_logic_web_tools_swf_dev_mode_image":"true","dashbuilder_viewer_image":"true","kn_plugin_workflow":"true","kie_sandbox_helm_chart":"true","kogito_task_console":"true","kogito_management_console":"true","kogito_swf_builder":"true","kogito_serverless_operator":"true"}') } diff --git a/.ci/jenkins/Jenkinsfile.staging-build b/.ci/jenkins/Jenkinsfile.staging-build index 0410a2dae38..2f7447d6a55 100644 --- a/.ci/jenkins/Jenkinsfile.staging-build +++ b/.ci/jenkins/Jenkinsfile.staging-build @@ -881,8 +881,8 @@ def pushKieSandboxHelmChartToQuay() { ) } -def deployOnlineEditor(String tag, String credentialsId) { - DEPLOYMENT_DIR = "${tag}-prerelease" +def deployOnlineEditor(String releaseVersion, String credentialsId) { + DEPLOYMENT_DIR = "${releaseVersion}-staging" sh """#!/bin/bash -el git config user.email asf-ci-kie@jenkins.kie.apache.org @@ -916,8 +916,8 @@ def deployOnlineEditor(String tag, String credentialsId) { ln -s chrome-extension ${DEPLOYMENT_DIR}/gwt-editors echo "Commit changes and push" - git add ${tag}-prerelease - git commit -m "Deploy ${tag}-prerelease (staging)" + git add ${releaseVersion}-staging + git commit -m "Deploy ${releaseVersion}-staging" """.trim() githubUtils.pushObject('origin', 'main', "${credentialsId}") diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.kn-plugin-workflow b/.ci/jenkins/release-jobs/Jenkinsfile.kn-plugin-workflow index 1ec5006438f..4909128e72a 100644 --- a/.ci/jenkins/release-jobs/Jenkinsfile.kn-plugin-workflow +++ b/.ci/jenkins/release-jobs/Jenkinsfile.kn-plugin-workflow @@ -69,36 +69,44 @@ pipeline { stage('Checkout kie-tools') { steps { - script { - githubUtils.checkoutRepo( - "http://github.com/${pipelineVars.githubRepositorySlug}.git", - "${params.BASE_REF}", - "${pipelineVars.kieToolsBotGithubCredentialsId}" - ) + dir('kie-tools') { + script { + githubUtils.checkoutRepo( + "http://github.com/${pipelineVars.githubRepositorySlug}.git", + "${params.BASE_REF}", + "${pipelineVars.kieToolsBotGithubCredentialsId}" + ) + } } } } stage('Setup PNPM') { steps { - script { - buildUtils.setupPnpm() + dir('kie-tools') { + script { + buildUtils.setupPnpm() + } } } } stage('PNPM Bootstrap') { steps { - script { - buildUtils.pnpmBootstrap("${env.PNPM_FILTER_STRING}") + dir('kie-tools') { + script { + buildUtils.pnpmBootstrap("${env.PNPM_FILTER_STRING}") + } } } } stage('Build') { steps { - script { - buildUtils.pnpmBuild("${env.PNPM_FILTER_STRING}") + dir('kie-tools') { + script { + buildUtils.pnpmBuild("${env.PNPM_FILTER_STRING}") + } } } } @@ -108,14 +116,16 @@ pipeline { expression { !params.DRY_RUN } } steps { - script { - githubUtils.uploadReleaseAsset( - "${params.UPLOAD_ASSET_URL}", - 'packages/kn-plugin-workflow/dist/kn-workflow-linux-amd64', - "kn-workflow-linux-amd64-${params.RELEASE_VERSION}", - 'application/octet-stream', - "${pipelineVars.kieToolsBotGithubTokenCredentialsId}" - ) + dir('kie-tools') { + script { + githubUtils.uploadReleaseAsset( + "${params.UPLOAD_ASSET_URL}", + 'packages/kn-plugin-workflow/dist/kn-workflow-linux-amd64', + "kn-workflow-linux-amd64-${params.RELEASE_VERSION}", + 'application/octet-stream', + "${pipelineVars.kieToolsBotGithubTokenCredentialsId}" + ) + } } } } @@ -125,14 +135,16 @@ pipeline { expression { !params.DRY_RUN } } steps { - script { - githubUtils.uploadReleaseAsset( - "${params.UPLOAD_ASSET_URL}", - 'packages/kn-plugin-workflow/dist/kn-workflow-darwin-amd64', - "kn-workflow-darwin-amd64-${params.RELEASE_VERSION}", - 'application/octet-stream', - "${pipelineVars.kieToolsBotGithubTokenCredentialsId}" - ) + dir('kie-tools') { + script { + githubUtils.uploadReleaseAsset( + "${params.UPLOAD_ASSET_URL}", + 'packages/kn-plugin-workflow/dist/kn-workflow-darwin-amd64', + "kn-workflow-darwin-amd64-${params.RELEASE_VERSION}", + 'application/octet-stream', + "${pipelineVars.kieToolsBotGithubTokenCredentialsId}" + ) + } } } } @@ -142,14 +154,16 @@ pipeline { expression { !params.DRY_RUN } } steps { - script { - githubUtils.uploadReleaseAsset( - "${params.UPLOAD_ASSET_URL}", - 'packages/kn-plugin-workflow/dist/kn-workflow-darwin-arm64', - "kn-workflow-darwin-arm64-${params.RELEASE_VERSION}", - 'application/octet-stream', - "${pipelineVars.kieToolsBotGithubTokenCredentialsId}" - ) + dir('kie-tools') { + script { + githubUtils.uploadReleaseAsset( + "${params.UPLOAD_ASSET_URL}", + 'packages/kn-plugin-workflow/dist/kn-workflow-darwin-arm64', + "kn-workflow-darwin-arm64-${params.RELEASE_VERSION}", + 'application/octet-stream', + "${pipelineVars.kieToolsBotGithubTokenCredentialsId}" + ) + } } } } @@ -159,14 +173,16 @@ pipeline { expression { !params.DRY_RUN } } steps { - script { - githubUtils.uploadReleaseAsset( - "${params.UPLOAD_ASSET_URL}", - 'packages/kn-plugin-workflow/dist/kn-workflow-windows-amd64.exe', - "kn-workflow-windows-amd64-${params.RELEASE_VERSION}.exe", - 'application/octet-stream', - "${pipelineVars.kieToolsBotGithubTokenCredentialsId}" - ) + dir('kie-tools') { + script { + githubUtils.uploadReleaseAsset( + "${params.UPLOAD_ASSET_URL}", + 'packages/kn-plugin-workflow/dist/kn-workflow-windows-amd64.exe', + "kn-workflow-windows-amd64-${params.RELEASE_VERSION}.exe", + 'application/octet-stream', + "${pipelineVars.kieToolsBotGithubTokenCredentialsId}" + ) + } } } } diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.npm-packages b/.ci/jenkins/release-jobs/Jenkinsfile.npm-packages index 3a7253c129c..9e64a142a47 100644 --- a/.ci/jenkins/release-jobs/Jenkinsfile.npm-packages +++ b/.ci/jenkins/release-jobs/Jenkinsfile.npm-packages @@ -66,48 +66,58 @@ pipeline { stage('Checkout kie-tools') { steps { - script { - githubUtils.checkoutRepo( - "http://github.com/${pipelineVars.githubRepositorySlug}.git", - "${params.BASE_REF}", - "${pipelineVars.kieToolsBotGithubCredentialsId}" - ) + dir('kie-tools') { + script { + githubUtils.checkoutRepo( + "http://github.com/${pipelineVars.githubRepositorySlug}.git", + "${params.BASE_REF}", + "${pipelineVars.kieToolsBotGithubCredentialsId}" + ) + } } } } stage('Setup PNPM') { steps { - script { - buildUtils.setupPnpm() + dir('kie-tools') { + script { + buildUtils.setupPnpm() + } } } } stage('Create PNPM filter for building') { steps { - script { - pnpmFilter = sh returnStdout: true, script:"""#!/bin/bash -el - PNPM_FILTER_STRING_FOR_BUILDING=\$(pnpm -r exec 'bash' '-c' 'PKG_NAME=\$(jq -r ".name" package.json) PKG_IS_PVT=\$(jq -r ".private" package.json); if [[ "\$PKG_IS_PVT" != "true" ]]; then echo "-F \$PKG_NAME..."; fi') - echo \$PNPM_FILTER_STRING_FOR_BUILDING - """.trim() - env.PNPM_FILTER_STRING_FOR_BUILDING = pnpmFilter.trim() + dir('kie-tools') { + script { + pnpmFilter = sh returnStdout: true, script:"""#!/bin/bash -el + PNPM_FILTER_STRING_FOR_BUILDING=\$(pnpm -r exec 'bash' '-c' 'PKG_NAME=\$(jq -r ".name" package.json) PKG_IS_PVT=\$(jq -r ".private" package.json); if [[ "\$PKG_IS_PVT" != "true" ]]; then echo "-F \$PKG_NAME..."; fi') + echo \$PNPM_FILTER_STRING_FOR_BUILDING + """.trim() + env.PNPM_FILTER_STRING_FOR_BUILDING = pnpmFilter.trim() + } } } } stage('PNPM Bootstrap') { steps { - script { - buildUtils.pnpmBootstrap("${env.PNPM_FILTER_STRING_FOR_BUILDING}") + dir('kie-tools') { + script { + buildUtils.pnpmBootstrap("${env.PNPM_FILTER_STRING_FOR_BUILDING}") + } } } } stage('Build') { steps { - script { - buildUtils.pnpmBuild("${env.PNPM_FILTER_STRING_FOR_BUILDING}") + dir('kie-tools') { + script { + buildUtils.pnpmBuild("${env.PNPM_FILTER_STRING_FOR_BUILDING}") + } } } } @@ -117,13 +127,15 @@ pipeline { expression { !params.DRY_RUN } } steps { - withCredentials([string(credentialsId: "${pipelineVars.npmTokenCredentialsId}", variable: 'NPM_TOKEN')]) { - sh """#!/bin/bash -el - echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > ~/.npmrc - PNPM_FILTER_STRING_FOR_PUBLISHING=\$(pnpm -r exec 'bash' '-c' 'PKG_NAME=\$(jq -r ".name" package.json) PKG_IS_PVT=\$(jq -r ".private" package.json); if [[ "\$PKG_IS_PVT" != "true" ]]; then echo "-F \$PKG_NAME"; fi') - echo \$PNPM_FILTER_STRING_FOR_PUBLISHING - pnpm \$PNPM_FILTER_STRING_FOR_PUBLISHING exec 'bash' '-c' 'PKG_NAME=\$(jq -r ".name" package.json); NPM_PKG_INFO=\$(npm view \$PKG_NAME@${params.RELEASE_VERSION} name || echo ""); if [[ -z \$NPM_PKG_INFO ]]; then pnpm publish --no-git-checks --access public; fi' - """.trim() + dir('kie-tools') { + withCredentials([string(credentialsId: "${pipelineVars.npmTokenCredentialsId}", variable: 'NPM_TOKEN')]) { + sh """#!/bin/bash -el + echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > ~/.npmrc + PNPM_FILTER_STRING_FOR_PUBLISHING=\$(pnpm -r exec 'bash' '-c' 'PKG_NAME=\$(jq -r ".name" package.json) PKG_IS_PVT=\$(jq -r ".private" package.json); if [[ "\$PKG_IS_PVT" != "true" ]]; then echo "-F \$PKG_NAME"; fi') + echo \$PNPM_FILTER_STRING_FOR_PUBLISHING + pnpm \$PNPM_FILTER_STRING_FOR_PUBLISHING exec 'bash' '-c' 'PKG_NAME=\$(jq -r ".name" package.json); NPM_PKG_INFO=\$(npm view \$PKG_NAME@${params.RELEASE_VERSION} name || echo ""); if [[ -z \$NPM_PKG_INFO ]]; then pnpm publish --no-git-checks --access public; fi' + """.trim() + } } } } diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.vscode-extensions-dev b/.ci/jenkins/release-jobs/Jenkinsfile.vscode-extensions-dev index d5ccf9ea4e2..41950314766 100644 --- a/.ci/jenkins/release-jobs/Jenkinsfile.vscode-extensions-dev +++ b/.ci/jenkins/release-jobs/Jenkinsfile.vscode-extensions-dev @@ -69,36 +69,44 @@ pipeline { stage('Checkout kie-tools') { steps { - script { - githubUtils.checkoutRepo( - "http://github.com/${pipelineVars.githubRepositorySlug}.git", - "${params.BASE_REF}", - "${pipelineVars.kieToolsBotGithubCredentialsId}" - ) + dir('kie-tools') { + script { + githubUtils.checkoutRepo( + "http://github.com/${pipelineVars.githubRepositorySlug}.git", + "${params.BASE_REF}", + "${pipelineVars.kieToolsBotGithubCredentialsId}" + ) + } } } } stage('Setup PNPM') { steps { - script { - buildUtils.setupPnpm() + dir('kie-tools') { + script { + buildUtils.setupPnpm() + } } } } stage('PNPM Bootstrap') { steps { - script { - buildUtils.pnpmBootstrap("${env.PNPM_FILTER_STRING}") + dir('kie-tools') { + script { + buildUtils.pnpmBootstrap("${env.PNPM_FILTER_STRING}") + } } } } stage('Build') { steps { - script { - buildUtils.pnpmBuild("${env.PNPM_FILTER_STRING}") + dir('kie-tools') { + script { + buildUtils.pnpmBuild("${env.PNPM_FILTER_STRING}") + } } } } @@ -108,14 +116,16 @@ pipeline { expression { !params.DRY_RUN } } steps { - script { - githubUtils.uploadReleaseAsset( - "${params.UPLOAD_ASSET_URL}", - "packages/kie-editors-dev-vscode-extension/dist/kie_editors_dev_vscode_extension_${params.RELEASE_VERSION}.vsix", - "vscode_extension_dev_${params.RELEASE_VERSION}.vsix", - 'application/zip', - "${pipelineVars.kieToolsBotGithubTokenCredentialsId}" - ) + dir('kie-tools') { + script { + githubUtils.uploadReleaseAsset( + "${params.UPLOAD_ASSET_URL}", + "packages/kie-editors-dev-vscode-extension/dist/kie_editors_dev_vscode_extension_${params.RELEASE_VERSION}.vsix", + "vscode_extension_dev_${params.RELEASE_VERSION}.vsix", + 'application/zip', + "${pipelineVars.kieToolsBotGithubTokenCredentialsId}" + ) + } } } } diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.vscode-extensions-prod b/.ci/jenkins/release-jobs/Jenkinsfile.vscode-extensions-prod index 6423e93b787..0bb789041d3 100644 --- a/.ci/jenkins/release-jobs/Jenkinsfile.vscode-extensions-prod +++ b/.ci/jenkins/release-jobs/Jenkinsfile.vscode-extensions-prod @@ -67,50 +67,58 @@ pipeline { stage('Checkout kie-tools') { steps { - script { - githubUtils.checkoutRepo( - "http://github.com/${pipelineVars.githubRepositorySlug}.git", - "${params.BASE_REF}", - "${pipelineVars.kieToolsBotGithubCredentialsId}" - ) + dir('kie-tools') { + script { + githubUtils.checkoutRepo( + "http://github.com/${pipelineVars.githubRepositorySlug}.git", + "${params.BASE_REF}", + "${pipelineVars.kieToolsBotGithubCredentialsId}" + ) + } } } } stage('Setup PNPM') { steps { - script { - buildUtils.setupPnpm() + dir('kie-tools') { + script { + buildUtils.setupPnpm() + } } } } stage('PNPM Bootstrap') { steps { - sh '''#!/bin/bash -el - pnpm bootstrap -F bpmn-vscode-extension... \ - -F dmn-vscode-extension... \ - -F pmml-vscode-extension... \ - -F vscode-extension-kogito-bundle... \ - -F swf-vscode-extension... \ - -F vscode-extension-kie-ba-bundle... \ - -F vscode-extension-dashbuilder-editor... - '''.trim() + dir('kie-tools') { + sh '''#!/bin/bash -el + pnpm bootstrap -F bpmn-vscode-extension... \ + -F dmn-vscode-extension... \ + -F pmml-vscode-extension... \ + -F vscode-extension-kogito-bundle... \ + -F swf-vscode-extension... \ + -F vscode-extension-kie-ba-bundle... \ + -F vscode-extension-dashbuilder-editor... + '''.trim() + } } } stage('Build') { steps { - sh '''#!/bin/bash -el - pnpm -F bpmn-vscode-extension... \ - -F dmn-vscode-extension... \ - -F pmml-vscode-extension... \ - -F vscode-extension-kogito-bundle... \ - -F swf-vscode-extension... \ - -F vscode-extension-kie-ba-bundle... \ - -F vscode-extension-dashbuilder-editor... \ - build:prod - '''.trim() + dir('kie-tools') { + sh '''#!/bin/bash -el + pnpm -F bpmn-vscode-extension... \ + -F dmn-vscode-extension... \ + -F pmml-vscode-extension... \ + -F vscode-extension-kogito-bundle... \ + -F swf-vscode-extension... \ + -F vscode-extension-kie-ba-bundle... \ + -F vscode-extension-dashbuilder-editor... \ + build:prod + '''.trim() + } } } @@ -119,14 +127,16 @@ pipeline { expression { !params.DRY_RUN } } steps { - script { - githubUtils.uploadReleaseAsset( - "${params.UPLOAD_ASSET_URL}", - "packages/bpmn-vscode-extension/dist/bpmn_vscode_extension_${params.RELEASE_VERSION}.vsix", - "bpmn_vscode_extension_${params.RELEASE_VERSION}.vsix", - 'application/zip', - "${pipelineVars.kieToolsBotGithubTokenCredentialsId}" - ) + dir('kie-tools') { + script { + githubUtils.uploadReleaseAsset( + "${params.UPLOAD_ASSET_URL}", + "packages/bpmn-vscode-extension/dist/bpmn_vscode_extension_${params.RELEASE_VERSION}.vsix", + "bpmn_vscode_extension_${params.RELEASE_VERSION}.vsix", + 'application/zip', + "${pipelineVars.kieToolsBotGithubTokenCredentialsId}" + ) + } } } } @@ -136,14 +146,16 @@ pipeline { expression { !params.DRY_RUN } } steps { - script { - githubUtils.uploadReleaseAsset( - "${params.UPLOAD_ASSET_URL}", - "packages/dmn-vscode-extension/dist/dmn_vscode_extension_${params.RELEASE_VERSION}.vsix", - "dmn_vscode_extension_${params.RELEASE_VERSION}.vsix", - 'application/zip', - "${pipelineVars.kieToolsBotGithubTokenCredentialsId}" - ) + dir('kie-tools') { + script { + githubUtils.uploadReleaseAsset( + "${params.UPLOAD_ASSET_URL}", + "packages/dmn-vscode-extension/dist/dmn_vscode_extension_${params.RELEASE_VERSION}.vsix", + "dmn_vscode_extension_${params.RELEASE_VERSION}.vsix", + 'application/zip', + "${pipelineVars.kieToolsBotGithubTokenCredentialsId}" + ) + } } } } @@ -153,14 +165,16 @@ pipeline { expression { !params.DRY_RUN } } steps { - script { - githubUtils.uploadReleaseAsset( - "${params.UPLOAD_ASSET_URL}", - "packages/pmml-vscode-extension/dist/pmml_vscode_extension_${params.RELEASE_VERSION}.vsix", - "pmml_vscode_extension_${params.RELEASE_VERSION}.vsix", - 'application/zip', - "${pipelineVars.kieToolsBotGithubTokenCredentialsId}" - ) + dir('kie-tools') { + script { + githubUtils.uploadReleaseAsset( + "${params.UPLOAD_ASSET_URL}", + "packages/pmml-vscode-extension/dist/pmml_vscode_extension_${params.RELEASE_VERSION}.vsix", + "pmml_vscode_extension_${params.RELEASE_VERSION}.vsix", + 'application/zip', + "${pipelineVars.kieToolsBotGithubTokenCredentialsId}" + ) + } } } } @@ -170,14 +184,16 @@ pipeline { expression { !params.DRY_RUN } } steps { - script { - githubUtils.uploadReleaseAsset( - "${params.UPLOAD_ASSET_URL}", - "packages/vscode-extension-kogito-bundle/dist/vscode_extension_kogito_bundle_${params.RELEASE_VERSION}.vsix", - "vscode_extension_kogito_bundle_${params.RELEASE_VERSION}.vsix", - 'application/zip', - "${pipelineVars.kieToolsBotGithubTokenCredentialsId}" - ) + dir('kie-tools') { + script { + githubUtils.uploadReleaseAsset( + "${params.UPLOAD_ASSET_URL}", + "packages/vscode-extension-kogito-bundle/dist/vscode_extension_kogito_bundle_${params.RELEASE_VERSION}.vsix", + "vscode_extension_kogito_bundle_${params.RELEASE_VERSION}.vsix", + 'application/zip', + "${pipelineVars.kieToolsBotGithubTokenCredentialsId}" + ) + } } } } @@ -187,14 +203,16 @@ pipeline { expression { !params.DRY_RUN } } steps { - script { - githubUtils.uploadReleaseAsset( - "${params.UPLOAD_ASSET_URL}", - "packages/vscode-extension-kie-ba-bundle/dist/vscode_extension_kie_ba_bundle_${params.RELEASE_VERSION}.vsix", - "vscode_extension_kie_ba_bundle_${params.RELEASE_VERSION}.vsix", - 'application/zip', - "${pipelineVars.kieToolsBotGithubTokenCredentialsId}" - ) + dir('kie-tools') { + script { + githubUtils.uploadReleaseAsset( + "${params.UPLOAD_ASSET_URL}", + "packages/vscode-extension-kie-ba-bundle/dist/vscode_extension_kie_ba_bundle_${params.RELEASE_VERSION}.vsix", + "vscode_extension_kie_ba_bundle_${params.RELEASE_VERSION}.vsix", + 'application/zip', + "${pipelineVars.kieToolsBotGithubTokenCredentialsId}" + ) + } } } } @@ -204,14 +222,16 @@ pipeline { expression { !params.DRY_RUN } } steps { - script { - githubUtils.uploadReleaseAsset( - "${params.UPLOAD_ASSET_URL}", - "packages/serverless-workflow-vscode-extension/dist/serverless_workflow_vscode_extension_${params.RELEASE_VERSION}.vsix", - "serverless_workflow_vscode_extension_${params.RELEASE_VERSION}.vsix", - 'application/zip', - "${pipelineVars.kieToolsBotGithubTokenCredentialsId}" - ) + dir('kie-tools') { + script { + githubUtils.uploadReleaseAsset( + "${params.UPLOAD_ASSET_URL}", + "packages/serverless-workflow-vscode-extension/dist/serverless_workflow_vscode_extension_${params.RELEASE_VERSION}.vsix", + "serverless_workflow_vscode_extension_${params.RELEASE_VERSION}.vsix", + 'application/zip', + "${pipelineVars.kieToolsBotGithubTokenCredentialsId}" + ) + } } } } @@ -221,14 +241,16 @@ pipeline { expression { !params.DRY_RUN } } steps { - script { - githubUtils.uploadReleaseAsset( - "${params.UPLOAD_ASSET_URL}", - "packages/vscode-extension-dashbuilder-editor/dist/vscode_extension_dashbuilder_editor_${params.RELEASE_VERSION}.vsix", - "vscode_extension_dashbuilder_editor_${params.RELEASE_VERSION}.vsix", - 'application/zip', - "${pipelineVars.kieToolsBotGithubTokenCredentialsId}" - ) + dir('kie-tools') { + script { + githubUtils.uploadReleaseAsset( + "${params.UPLOAD_ASSET_URL}", + "packages/vscode-extension-dashbuilder-editor/dist/vscode_extension_dashbuilder_editor_${params.RELEASE_VERSION}.vsix", + "vscode_extension_dashbuilder_editor_${params.RELEASE_VERSION}.vsix", + 'application/zip', + "${pipelineVars.kieToolsBotGithubTokenCredentialsId}" + ) + } } } } From 099ad5f7776ab037fb9f2eef247c022c861312cb Mon Sep 17 00:00:00 2001 From: Tiago Bento <1584568+tiagobento@users.noreply.github.com> Date: Tue, 7 May 2024 17:43:21 -0400 Subject: [PATCH 03/10] NO-ISSUE: Add `url` package everywhere `stream-http` is used (#2301) --- .../showcase/webpack.config.js | 2 +- .../showcase/webpack.config.js | 2 +- .../webpack.config.js | 2 +- packages/monaco-editor/webpack.config.js | 6 +++--- packages/patternfly-base/index.js | 2 +- packages/patternfly-base/package.json | 1 + .../pmml-editor/dev-webapp/webpack.config.js | 2 +- .../pmml-vscode-extension/webpack.config.js | 2 +- .../package.json | 1 + .../webpack.config.js | 8 ++++---- .../package.json | 1 + .../webpack.config.js | 8 ++++---- .../package.json | 1 + .../webpack.config.js | 8 ++++---- .../package.json | 1 + .../webpack.config.js | 8 ++++---- .../sonataflow-deployment-webapp/package.json | 1 + pnpm-lock.yaml | 20 ++++++++++++++++++- 18 files changed, 50 insertions(+), 26 deletions(-) diff --git a/packages/feel-input-component/showcase/webpack.config.js b/packages/feel-input-component/showcase/webpack.config.js index 859e8dc3a63..9b6c56db64c 100644 --- a/packages/feel-input-component/showcase/webpack.config.js +++ b/packages/feel-input-component/showcase/webpack.config.js @@ -47,7 +47,7 @@ module.exports = (env) => rules: [ { test: /\.ttf$/, - use: ["file-loader"], + use: [require.resolve("file-loader")], }, ...patternflyBase.webpackModuleRules, ], diff --git a/packages/import-java-classes-component/showcase/webpack.config.js b/packages/import-java-classes-component/showcase/webpack.config.js index 24629ffc87f..c6d339d7ed5 100644 --- a/packages/import-java-classes-component/showcase/webpack.config.js +++ b/packages/import-java-classes-component/showcase/webpack.config.js @@ -43,7 +43,7 @@ module.exports = (env) => rules: [ { test: /\.ttf$/, - use: ["file-loader"], + use: [require.resolve("file-loader")], }, ...patternflyBase.webpackModuleRules, ], diff --git a/packages/kie-editors-dev-vscode-extension/webpack.config.js b/packages/kie-editors-dev-vscode-extension/webpack.config.js index c361fb57022..bc410bfe13d 100644 --- a/packages/kie-editors-dev-vscode-extension/webpack.config.js +++ b/packages/kie-editors-dev-vscode-extension/webpack.config.js @@ -137,7 +137,7 @@ module.exports = async (env) => [ rules: [ { test: /\.ttf$/, - use: ["file-loader"], + use: [require.resolve("file-loader")], }, ...patternflyBase.webpackModuleRules, ], diff --git a/packages/monaco-editor/webpack.config.js b/packages/monaco-editor/webpack.config.js index 9ecdcd9affb..469af0bcb89 100644 --- a/packages/monaco-editor/webpack.config.js +++ b/packages/monaco-editor/webpack.config.js @@ -34,15 +34,15 @@ module.exports = { rules: [ { test: /\.tsx?$/, - loader: "ts-loader", + loader: require.resolve("ts-loader"), }, { test: /\.css$/, - use: ["style-loader", "css-loader"], + use: [require.resolve("style-loader"), require.resolve("css-loader")], }, { test: /\.ttf$/, - use: ["url-loader"], + use: [require.resolve("url-loader")], }, ], }, diff --git a/packages/patternfly-base/index.js b/packages/patternfly-base/index.js index 26395f6b10e..06eb9f051ff 100644 --- a/packages/patternfly-base/index.js +++ b/packages/patternfly-base/index.js @@ -78,7 +78,7 @@ module.exports = { // this is primarily useful when applying a CSS background using an SVG include: (input) => input.indexOf(BG_IMAGES_DIRNAME) > -1, use: { - loader: "svg-url-loader", + loader: require.resolve("svg-url-loader"), options: {}, }, }, diff --git a/packages/patternfly-base/package.json b/packages/patternfly-base/package.json index 69f7197e2fb..8a76861827b 100644 --- a/packages/patternfly-base/package.json +++ b/packages/patternfly-base/package.json @@ -25,6 +25,7 @@ "sass": "^1.43.4", "sass-loader": "^12.3.0", "style-loader": "^2.0.0", + "svg-url-loader": "^8.0.0", "url-loader": "^4.1.1", "webpack": "^5.88.2" } diff --git a/packages/pmml-editor/dev-webapp/webpack.config.js b/packages/pmml-editor/dev-webapp/webpack.config.js index 48a44a92adf..c7e17860336 100644 --- a/packages/pmml-editor/dev-webapp/webpack.config.js +++ b/packages/pmml-editor/dev-webapp/webpack.config.js @@ -48,7 +48,7 @@ module.exports = (env) => rules: [ { test: /\.ttf$/, - use: ["file-loader"], + use: [require.resolve("file-loader")], }, ...patternflyBase.webpackModuleRules, ], diff --git a/packages/pmml-vscode-extension/webpack.config.js b/packages/pmml-vscode-extension/webpack.config.js index 6d549a7e06f..3c0d90d0e31 100644 --- a/packages/pmml-vscode-extension/webpack.config.js +++ b/packages/pmml-vscode-extension/webpack.config.js @@ -71,7 +71,7 @@ module.exports = async (env) => [ rules: [ { test: /\.ttf$/, - use: ["file-loader"], + use: [require.resolve("file-loader")], }, ...patternflyBase.webpackModuleRules, ], diff --git a/packages/runtime-tools-management-console-webapp/package.json b/packages/runtime-tools-management-console-webapp/package.json index eaf25034db6..ff53b451278 100644 --- a/packages/runtime-tools-management-console-webapp/package.json +++ b/packages/runtime-tools-management-console-webapp/package.json @@ -102,6 +102,7 @@ "ts-loader": "^9.4.2", "tsconfig-paths-webpack-plugin": "^3.5.2", "typescript": "^4.6.2", + "url": "^0.11.3", "url-loader": "^4.1.1", "uuid": "^8.3.2", "waait": "^1.0.5", diff --git a/packages/runtime-tools-management-console-webapp/webpack.config.js b/packages/runtime-tools-management-console-webapp/webpack.config.js index f8096e919e5..6083334a7bd 100644 --- a/packages/runtime-tools-management-console-webapp/webpack.config.js +++ b/packages/runtime-tools-management-console-webapp/webpack.config.js @@ -82,7 +82,7 @@ module.exports = async (env) => { { test: /\.(svg|ttf|eot|woff|woff2)$/, use: { - loader: "file-loader", + loader: require.resolve("file-loader"), options: { // Limit at 50k. larger files emited into separate files limit: 5000, @@ -96,7 +96,7 @@ module.exports = async (env) => { include: (input) => input.indexOf("background-filter.svg") > 1, use: [ { - loader: "url-loader", + loader: require.resolve("url-loader"), options: { limit: 5000, outputPath: "svgs", @@ -109,7 +109,7 @@ module.exports = async (env) => { test: /\.svg$/, include: (input) => input.indexOf(BG_IMAGES_DIRNAME) > -1, use: { - loader: "svg-url-loader", + loader: require.resolve("svg-url-loader"), options: {}, }, }, @@ -117,7 +117,7 @@ module.exports = async (env) => { test: /\.(jpg|jpeg|png|gif)$/i, use: [ { - loader: "url-loader", + loader: require.resolve("url-loader"), options: { limit: 5000, outputPath: "images", diff --git a/packages/runtime-tools-process-dev-ui-webapp/package.json b/packages/runtime-tools-process-dev-ui-webapp/package.json index 2f072a4a051..6c433b62277 100644 --- a/packages/runtime-tools-process-dev-ui-webapp/package.json +++ b/packages/runtime-tools-process-dev-ui-webapp/package.json @@ -121,6 +121,7 @@ "ts-loader": "^9.4.2", "tsconfig-paths-webpack-plugin": "^3.5.2", "typescript": "^4.6.2", + "url": "^0.11.3", "url-loader": "^4.1.1", "waait": "^1.0.5", "webpack": "^5.88.2", diff --git a/packages/runtime-tools-process-dev-ui-webapp/webpack.config.js b/packages/runtime-tools-process-dev-ui-webapp/webpack.config.js index 70ce31cce67..62e8485380e 100644 --- a/packages/runtime-tools-process-dev-ui-webapp/webpack.config.js +++ b/packages/runtime-tools-process-dev-ui-webapp/webpack.config.js @@ -101,7 +101,7 @@ module.exports = async (env) => { { test: /\.(svg|ttf|eot|woff|woff2)$/, use: { - loader: "file-loader", + loader: require.resolve("file-loader"), options: { // Limit at 50k. larger files emited into separate files limit: 5000, @@ -115,7 +115,7 @@ module.exports = async (env) => { include: (input) => input.indexOf("background-filter.svg") > 1, use: [ { - loader: "url-loader", + loader: require.resolve("url-loader"), options: { limit: 5000, outputPath: "svgs", @@ -128,7 +128,7 @@ module.exports = async (env) => { test: /\.svg$/, include: (input) => input.indexOf(BG_IMAGES_DIRNAME) > -1, use: { - loader: "svg-url-loader", + loader: require.resolve("svg-url-loader"), options: {}, }, }, @@ -136,7 +136,7 @@ module.exports = async (env) => { test: /\.(jpg|jpeg|png|gif)$/i, use: [ { - loader: "url-loader", + loader: require.resolve("url-loader"), options: { limit: 5000, outputPath: "images", diff --git a/packages/runtime-tools-task-console-webapp/package.json b/packages/runtime-tools-task-console-webapp/package.json index c913242650a..954f1361b01 100644 --- a/packages/runtime-tools-task-console-webapp/package.json +++ b/packages/runtime-tools-task-console-webapp/package.json @@ -100,6 +100,7 @@ "ts-loader": "^9.4.2", "tsconfig-paths-webpack-plugin": "^3.5.2", "typescript": "^4.6.2", + "url": "^0.11.3", "url-loader": "^4.1.1", "uuid": "^8.3.2", "waait": "^1.0.5", diff --git a/packages/runtime-tools-task-console-webapp/webpack.config.js b/packages/runtime-tools-task-console-webapp/webpack.config.js index 981eae730c5..3191882517d 100644 --- a/packages/runtime-tools-task-console-webapp/webpack.config.js +++ b/packages/runtime-tools-task-console-webapp/webpack.config.js @@ -83,7 +83,7 @@ module.exports = async (env) => { { test: /\.(svg|ttf|eot|woff|woff2)$/, use: { - loader: "file-loader", + loader: require.resolve("file-loader"), options: { // Limit at 50k. larger files emited into separate files limit: 5000, @@ -97,7 +97,7 @@ module.exports = async (env) => { include: (input) => input.indexOf("background-filter.svg") > 1, use: [ { - loader: "url-loader", + loader: require.resolve("url-loader"), options: { limit: 5000, outputPath: "svgs", @@ -110,7 +110,7 @@ module.exports = async (env) => { test: /\.svg$/, include: (input) => input.indexOf(BG_IMAGES_DIRNAME) > -1, use: { - loader: "svg-url-loader", + loader: require.resolve("svg-url-loader"), options: {}, }, }, @@ -118,7 +118,7 @@ module.exports = async (env) => { test: /\.(jpg|jpeg|png|gif)$/i, use: [ { - loader: "url-loader", + loader: require.resolve("url-loader"), options: { limit: 5000, outputPath: "images", diff --git a/packages/serverless-workflow-dev-ui-webapp/package.json b/packages/serverless-workflow-dev-ui-webapp/package.json index 0768275d9f5..46fd6b894b0 100644 --- a/packages/serverless-workflow-dev-ui-webapp/package.json +++ b/packages/serverless-workflow-dev-ui-webapp/package.json @@ -104,6 +104,7 @@ "swagger-ui-express": "^5.0.0", "ts-jest": "^26.5.6", "typescript": "^4.6.2", + "url": "^0.11.3", "url-loader": "^4.1.1", "webpack": "^5.88.2", "webpack-cli": "^4.10.0", diff --git a/packages/serverless-workflow-dev-ui-webapp/webpack.config.js b/packages/serverless-workflow-dev-ui-webapp/webpack.config.js index 7f178716758..e7b8e5d7c1a 100644 --- a/packages/serverless-workflow-dev-ui-webapp/webpack.config.js +++ b/packages/serverless-workflow-dev-ui-webapp/webpack.config.js @@ -151,7 +151,7 @@ module.exports = async (env) => { test: /\.(svg|ttf|eot|woff|woff2)$/, use: { - loader: "file-loader", + loader: require.resolve("file-loader"), options: { // Limit at 50k. larger files emited into separate files limit: 5000, @@ -165,7 +165,7 @@ module.exports = async (env) => include: (input) => input.indexOf("background-filter.svg") > 1, use: [ { - loader: "url-loader", + loader: require.resolve("url-loader"), options: { limit: 5000, outputPath: "svgs", @@ -178,7 +178,7 @@ module.exports = async (env) => test: /\.svg$/, include: (input) => input.indexOf(BG_IMAGES_DIRNAME) > -1, use: { - loader: "svg-url-loader", + loader: require.resolve("svg-url-loader"), options: {}, }, }, @@ -186,7 +186,7 @@ module.exports = async (env) => test: /\.(jpg|jpeg|png|gif)$/i, use: [ { - loader: "url-loader", + loader: require.resolve("url-loader"), options: { limit: 5000, outputPath: "images", diff --git a/packages/sonataflow-deployment-webapp/package.json b/packages/sonataflow-deployment-webapp/package.json index 040e2349930..bf2bd9fc3fd 100644 --- a/packages/sonataflow-deployment-webapp/package.json +++ b/packages/sonataflow-deployment-webapp/package.json @@ -74,6 +74,7 @@ "stream-http": "^3.2.0", "terser-webpack-plugin": "^5.3.9", "ts-jest": "^26.5.6", + "url": "^0.11.3", "webpack": "^5.88.2", "webpack-cli": "^4.10.0", "webpack-dev-server": "^4.15.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 69a8c4a7bf0..0fdc9a0ce93 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6715,6 +6715,9 @@ importers: style-loader: specifier: ^2.0.0 version: 2.0.0(webpack@5.88.2) + svg-url-loader: + specifier: ^8.0.0 + version: 8.0.0(webpack@5.88.2) url-loader: specifier: ^4.1.1 version: 4.1.1(file-loader@6.2.0)(webpack@5.88.2) @@ -7518,6 +7521,9 @@ importers: typescript: specifier: ^4.6.2 version: 4.8.4 + url: + specifier: ^0.11.3 + version: 0.11.3 url-loader: specifier: ^4.1.1 version: 4.1.1(file-loader@6.2.0)(webpack@5.88.2) @@ -7825,6 +7831,9 @@ importers: typescript: specifier: ^4.6.2 version: 4.8.4 + url: + specifier: ^0.11.3 + version: 0.11.3 url-loader: specifier: ^4.1.1 version: 4.1.1(file-loader@6.2.0)(webpack@5.88.2) @@ -9085,6 +9094,9 @@ importers: typescript: specifier: ^4.6.2 version: 4.8.4 + url: + specifier: ^0.11.3 + version: 0.11.3 url-loader: specifier: ^4.1.1 version: 4.1.1(file-loader@6.2.0)(webpack@5.88.2) @@ -10160,6 +10172,9 @@ importers: typescript: specifier: ^4.6.2 version: 4.8.4 + url: + specifier: ^0.11.3 + version: 0.11.3 url-loader: specifier: ^4.1.1 version: 4.1.1(file-loader@6.2.0)(webpack@5.88.2) @@ -11148,6 +11163,9 @@ importers: ts-jest: specifier: ^26.5.6 version: 26.5.6(jest@26.6.3)(typescript@4.8.4) + url: + specifier: ^0.11.3 + version: 0.11.3 webpack: specifier: ^5.88.2 version: 5.88.2(webpack-cli@4.10.0) @@ -50816,7 +50834,7 @@ packages: webpack: ^5.0.0 dependencies: file-loader: 6.2.0(webpack@5.88.2) - webpack: 5.88.2(webpack-cli@4.10.0) + webpack: 5.88.2 dev: true /svgo@2.8.0: From 699877560bc022c2d20caf1b3356b72c3f3b56ce Mon Sep 17 00:00:00 2001 From: Thiago Lugli Date: Wed, 8 May 2024 11:09:27 -0300 Subject: [PATCH 04/10] NO-ISSUE: Move kogito-{serverless-operator/swf-devmode/swf-builder} test results and fix kogito-serverless-operator image name (#2300) --- .../tests/dmnSemanticComparison.test.ts | 2 +- packages/kogito-serverless-operator/Makefile | 11 ++-- .../kogito-serverless-operator/env/index.js | 16 +++++- .../hack/bump-version.sh | 50 ++++++++----------- .../kogito-serverless-operator/package.json | 2 +- packages/kogito-swf-builder/install.js | 15 ++++-- packages/kogito-swf-builder/package.json | 1 + .../features/kogito-swf-builder-2.feature | 2 +- .../tests/features/kogito-swf-builder.feature | 2 +- packages/kogito-swf-common/resources/Makefile | 11 ++-- .../resources/scripts/run-bats.sh | 6 ++- packages/kogito-swf-devmode/install.js | 15 ++++-- packages/kogito-swf-devmode/package.json | 1 + .../features/kogito-swf-devmode-2.feature | 2 +- .../tests/features/kogito-swf-devmode.feature | 4 +- pnpm-lock.yaml | 6 +++ 16 files changed, 93 insertions(+), 53 deletions(-) diff --git a/packages/dmn-marshaller/tests/dmnSemanticComparison.test.ts b/packages/dmn-marshaller/tests/dmnSemanticComparison.test.ts index 6afba933770..437e2fb63ad 100644 --- a/packages/dmn-marshaller/tests/dmnSemanticComparison.test.ts +++ b/packages/dmn-marshaller/tests/dmnSemanticComparison.test.ts @@ -82,7 +82,7 @@ const dmnTestingImportedModels = [ export const dmnSemanticComparisonGeneratedFilesDirectory = path.join( __dirname, - "../../dist-tests/dmnSemanticComparison-generated-files" + "../dist-tests/dmnSemanticComparison-generated-files" ); describe("DMN Semantic Comparison", () => { diff --git a/packages/kogito-serverless-operator/Makefile b/packages/kogito-serverless-operator/Makefile index 0e7c5ca56b4..571732413b4 100644 --- a/packages/kogito-serverless-operator/Makefile +++ b/packages/kogito-serverless-operator/Makefile @@ -4,7 +4,8 @@ # - use the VERSION as arg of the bundle target (e.g make bundle VERSION=0.0.2) # - use environment variables to overwrite this value (e.g export VERSION=0.0.2) VERSION ?= 0.0.0 -REDUCED_VERSION ?= latest +REDUCED_VERSION ?= 0.0 +IMAGE_TAG ?= latest # CHANNELS define the bundle channels used in the bundle. # Add a new line here if you would like to change its default config. (E.g CHANNELS = "candidate,fast,stable") @@ -34,7 +35,7 @@ IMAGE_TAG_BASE ?= quay.io/kiegroup/kogito-serverless-operator-nightly # BUNDLE_IMG defines the image:tag used for the bundle. # You can use it as an arg. (E.g make bundle-build BUNDLE_IMG=/:) -BUNDLE_IMG ?= $(IMAGE_TAG_BASE)-bundle:v$(REDUCED_VERSION) +BUNDLE_IMG ?= $(IMAGE_TAG_BASE)-bundle:v$(IMAGE_TAG) # BUNDLE_GEN_FLAGS are the flags passed to the operator-sdk generate bundle command # TODO: review this flag once we upgrade https://github.com/operator-framework/operator-sdk/issues/4992 (https://issues.redhat.com/browse/KOGITO-9428) @@ -53,7 +54,7 @@ ifeq ($(USE_IMAGE_DIGESTS), true) endif # Image URL to use all building/pushing image targets -IMG ?= $(IMAGE_TAG_BASE):$(REDUCED_VERSION) +IMG ?= $(IMAGE_TAG_BASE):$(IMAGE_TAG) # ENVTEST_K8S_VERSION refers to the version of kubebuilder assets to be downloaded by envtest binary. ENVTEST_K8S_VERSION = 1.24 @@ -334,7 +335,7 @@ generate-all: generate generate-deploy bundle addheaders vet fmt .PHONY: test-e2e # You will need to have a Minikube/Kind cluster up in running to run this target, and run container-builder before the test test-e2e: - go test ./test/e2e/* -v -ginkgo.v -ginkgo.no-color -ginkgo.junit-report=./e2e-test-report.xml -timeout 60m + go test ./test/e2e/* -v -ginkgo.v -ginkgo.no-color -ginkgo.junit-report=./dist-e2e-tests/junit-report-it.xml -timeout 60m .PHONY: before-pr before-pr: test generate-all @@ -359,4 +360,4 @@ load-docker-image: install-kind .PHONY: full-test-e2e full-test-e2e: create-cluster load-docker-image deploy kubectl wait pod -A -l control-plane=sonataflow-operator --for condition=Ready --timeout 120s - go test ./test/e2e/* -v -ginkgo.v -ginkgo.no-color -ginkgo.junit-report=./e2e-test-report.xml -timeout 60m + go test ./test/e2e/* -v -ginkgo.v -ginkgo.no-color -ginkgo.junit-report=./dist-e2e-tests/junit-report-it.xml -timeout 60m diff --git a/packages/kogito-serverless-operator/env/index.js b/packages/kogito-serverless-operator/env/index.js index d3de48848c7..e141bd6b1f5 100644 --- a/packages/kogito-serverless-operator/env/index.js +++ b/packages/kogito-serverless-operator/env/index.js @@ -19,7 +19,11 @@ const { varsWithName, composeEnv, getOrDefault } = require("@kie-tools-scripts/build-env"); -module.exports = composeEnv([require("@kie-tools/root-env/env")], { +const kogitoSwfBuilderEnv = require("@kie-tools/kogito-swf-builder/env"); +const kogitoSwfDevModeEnv = require("@kie-tools/kogito-swf-devmode/env"); +const rootEnv = require("@kie-tools/root-env/env"); + +module.exports = composeEnv([rootEnv, kogitoSwfBuilderEnv, kogitoSwfDevModeEnv], { vars: varsWithName({ KOGITO_SERVERLESS_OPERATOR__registry: { default: "quay.io", @@ -37,6 +41,14 @@ module.exports = composeEnv([require("@kie-tools/root-env/env")], { default: "latest", description: "The image tag", }, + KOGITO_SERVERLESS_OPERATOR__kogitoSwfBuilderImage: { + default: `${kogitoSwfBuilderEnv.env.kogitoSwfBuilder.registry}/${kogitoSwfBuilderEnv.env.kogitoSwfBuilder.account}/${kogitoSwfBuilderEnv.env.kogitoSwfBuilder.name}:${kogitoSwfBuilderEnv.env.kogitoSwfBuilder.tag}`, + description: "Kogito SWF Builder image", + }, + KOGITO_SERVERLESS_OPERATOR__kogitoSwfDevModeImage: { + default: `${kogitoSwfDevModeEnv.env.kogitoSwfDevMode.registry}/${kogitoSwfDevModeEnv.env.kogitoSwfDevMode.account}/${kogitoSwfDevModeEnv.env.kogitoSwfDevMode.name}:${kogitoSwfDevModeEnv.env.kogitoSwfDevMode.tag}`, + description: "Kogito SWF DevMode image", + }, }), get env() { return { @@ -46,6 +58,8 @@ module.exports = composeEnv([require("@kie-tools/root-env/env")], { name: getOrDefault(this.vars.KOGITO_SERVERLESS_OPERATOR__name), tag: getOrDefault(this.vars.KOGITO_SERVERLESS_OPERATOR__buildTag), version: require("../package.json").version, + kogitoSwfBuilderImage: getOrDefault(this.vars.KOGITO_SERVERLESS_OPERATOR__kogitoSwfBuilderImage), + kogitoSwfDevModeImage: getOrDefault(this.vars.KOGITO_SERVERLESS_OPERATOR__kogitoSwfDevModeImage), }, }; }, diff --git a/packages/kogito-serverless-operator/hack/bump-version.sh b/packages/kogito-serverless-operator/hack/bump-version.sh index 5f59c10ef99..855d00575e8 100755 --- a/packages/kogito-serverless-operator/hack/bump-version.sh +++ b/packages/kogito-serverless-operator/hack/bump-version.sh @@ -20,48 +20,42 @@ set -e script_dir_path=$(dirname "${BASH_SOURCE[0]}") source "${script_dir_path}"/env.sh -imageTag='quay.io/kiegroup/kogito-serverless-operator' -# shellcheck disable=SC2034 -old_version=$(getOperatorVersion) -latest_version=$(getOperatorLatestVersion) -new_version=$1 +imageName=$(pnpm build-env kogitoServerlessOperator.registry)/$(pnpm build-env kogitoServerlessOperator.account)/$(pnpm build-env kogitoServerlessOperator.name) +imageTag=$(pnpm build-env kogitoServerlessOperator.tag) +version=$(pnpm build-env kogitoServerlessOperator.version) -if [ -z "${new_version}" ]; then +targetKogitoSwfBuilderImage=$(pnpm build-env kogitoServerlessOperator.kogitoSwfBuilderImage) +targetKogitoSwfDevModeImage=$(pnpm build-env kogitoServerlessOperator.kogitoSwfDevModeImage) + +if [ -z "${version}" ]; then echo "Please inform the new version" exit 1 fi -imageSuffix=$(if [[ "${new_version}" == 0.0.0 ]]; then echo '-nightly'; else echo ''; fi) - -oldMajorMinorVersion=${old_version%.*} -newMajorMinorVersion=${new_version%.*} -if [ "${old_version}" = "${latest_version}" ]; then - oldMajorMinorVersion='latest' -fi -if [ "${new_version}" = "${latest_version}" ]; then - newMajorMinorVersion='latest' -fi +newMajorMinorVersion=${version%.*} -echo "Set new version to ${new_version} (img_suffix = '${imageSuffix}', majorMinor = ${newMajorMinorVersion})" +targetKogitoServerlessOperatorImage="${imageName}:${imageTag}" +echo "Set new version to ${version} (majorMinor = ${newMajorMinorVersion}, imageName:imageTag = ${targetKogitoServerlessOperatorImage})" -node -p "require('replace-in-file').sync({ from: /\bVERSION\ \?=.*\b/g, to: 'VERSION ?= ${new_version}', files: ['./Makefile'] });" +node -p "require('replace-in-file').sync({ from: /\bVERSION\ \?=.*\b/g, to: 'VERSION ?= ${version}', files: ['./Makefile'] });" node -p "require('replace-in-file').sync({ from: /\bREDUCED_VERSION\ \?=.*\b/g, to: 'REDUCED_VERSION ?= ${newMajorMinorVersion}', files: ['./Makefile'] });" -node -p "require('replace-in-file').sync({ from: /\bIMAGE_TAG_BASE\ \?=.*\b/g, to: 'IMAGE_TAG_BASE ?= ${imageTag}${imageSuffix}', files: ['./Makefile'] });" +node -p "require('replace-in-file').sync({ from: /\bIMAGE_TAG\ \?=.*\b/g, to: 'IMAGE_TAG ?= ${imageTag}', files: ['./Makefile'] });" +node -p "require('replace-in-file').sync({ from: /\bIMAGE_TAG_BASE\ \?=.*\b/g, to: 'IMAGE_TAG_BASE ?= ${imageName}', files: ['./Makefile'] });" -node -p "require('replace-in-file').sync({ from: /\bnewTag:.*\b/g, to: 'newTag: ${new_version}', files: ['./config/manager/kustomization.yaml'] });" -node -p "require('replace-in-file').sync({ from: /\bnewName:.*\b/g, to: 'newName: ${imageTag}${imageSuffix}', files: ['./config/manager/kustomization.yaml'] });" +node -p "require('replace-in-file').sync({ from: /\bnewTag:.*\b/g, to: 'newTag: ${version}', files: ['./config/manager/kustomization.yaml'] });" +node -p "require('replace-in-file').sync({ from: /\bnewName:.*\b/g, to: 'newName: ${imageName}', files: ['./config/manager/kustomization.yaml'] });" -node -p "require('replace-in-file').sync({ from: /\bversion: .*\b/g, to: 'version: ${new_version}', files: ['./images/bundle.yaml'] });" -node -p "require('replace-in-file').sync({ from: /\bversion: .*\b/g, to: 'version: ${new_version}', files: ['./images/manager.yaml'] });" +node -p "require('replace-in-file').sync({ from: /\bversion: .*\b/g, to: 'version: ${version}', files: ['./images/bundle.yaml'] });" +node -p "require('replace-in-file').sync({ from: /\bversion: .*\b/g, to: 'version: ${version}', files: ['./images/manager.yaml'] });" # Update kogito-swf-* images -node -p "require('replace-in-file').sync({ from: 'quay.io/kiegroup/kogito-swf-builder${imageSuffix}:${oldMajorMinorVersion}', to: 'quay.io/kiegroup/kogito-swf-builder${imageSuffix}:${newMajorMinorVersion}', files: ['**/*.yaml', '**/*.containerfile', '**/*.dockerfile', '**/*.Dockerfile', '**/*.go'] });" -node -p "require('replace-in-file').sync({ from: 'quay.io/kiegroup/kogito-swf-devmode${imageSuffix}:${oldMajorMinorVersion}', to: 'quay.io/kiegroup/kogito-swf-devmode${imageSuffix}:${newMajorMinorVersion}', files: ['**/*.yaml', '**/*.containerfile', '**/*.dockerfile', '**/*.Dockerfile', '**/*.go'] });" -node -p "require('replace-in-file').sync({ from: 'quay.io/kiegroup/kogito-serverless-operator${imageSuffix}:${oldMajorMinorVersion}', to: 'quay.io/kiegroup/kogito-serverless-operator${imageSuffix}:${newMajorMinorVersion}', files: ['**/*.yaml'] });" +node -p "require('replace-in-file').sync({ from: '/quay.io\/kiegroup\/kogito-swf-builder.*/g', to: '${targetKogitoSwfBuilderImage}', files: ['**/*.yaml', '**/*.containerfile', '**/*.dockerfile', '**/*.Dockerfile', '**/*.go'] });" +node -p "require('replace-in-file').sync({ from: '/quay.io\/kiegroup\/kogito-swf-devmode.*/g', to: '${targetKogitoSwfDevModeImage}', files: ['**/*.yaml', '**/*.containerfile', '**/*.dockerfile', '**/*.Dockerfile', '**/*.go'] });" +node -p "require('replace-in-file').sync({ from: '/quay.io\/kiegroup\/kogito-serverless-operator.*/g', to: '${targetKogitoServerlessOperatorImage}', files: ['**/*.yaml'] });" -node -p "require('replace-in-file').sync({ from: /\bOperatorVersion = .*/g, to: 'OperatorVersion = \"${new_version}\"', files: ['version/version.go'] });" -node -p "require('replace-in-file').sync({ from: /\bcontainerImage:.*\b/g, to: 'containerImage: ${imageTag}${imageSuffix}:${newMajorMinorVersion}', files: ['$(getCsvFile)'] });" +node -p "require('replace-in-file').sync({ from: /\bOperatorVersion = .*/g, to: 'OperatorVersion = \"${version}\"', files: ['version/version.go'] });" +node -p "require('replace-in-file').sync({ from: /\bcontainerImage:.*\b/g, to: 'containerImage: ${targetKogitoServerlessOperatorImage}', files: ['$(getCsvFile)'] });" make generate-all make vet diff --git a/packages/kogito-serverless-operator/package.json b/packages/kogito-serverless-operator/package.json index 37d48b846f1..328bd9e66fa 100644 --- a/packages/kogito-serverless-operator/package.json +++ b/packages/kogito-serverless-operator/package.json @@ -20,7 +20,7 @@ "build:prod:darwin:linux": ". ./node_modules/@kie-tools/python-venv/venv/bin/activate && make build && pnpm image:build && pnpm test && pnpm test-e2e && pnpm format", "build:prod:win32": "echo 'Build not supported on Windows'", "bump-version": "run-script-os", - "bump-version:darwin:linux": "./hack/bump-version.sh $(pnpm build-env kogitoServerlessOperator.version)", + "bump-version:darwin:linux": "./hack/bump-version.sh", "bump-version:win32": "echo 'Bumping version not supported on Windows'", "format": "prettier --write .", "image:build": "run-script-os", diff --git a/packages/kogito-swf-builder/install.js b/packages/kogito-swf-builder/install.js index 360abf22804..0b8caa4b3ab 100644 --- a/packages/kogito-swf-builder/install.js +++ b/packages/kogito-swf-builder/install.js @@ -24,6 +24,7 @@ const buildEnv = require("./env"); const path = require("path"); const pythonVenvDir = path.dirname(require.resolve("@kie-tools/python-venv/package.json")); const kogitoSwfCommonDir = path.dirname(require.resolve("@kie-tools/kogito-swf-common/package.json")); +const replaceInFile = require("replace-in-file"); const activateCmd = process.platform === "win32" @@ -46,12 +47,18 @@ if (imageYamlFiles.length !== 1) { const originalYamlPath = path.join(resourcesPath, imageYamlFiles[0]); let imageYaml = fs.readFileSync(originalYamlPath, "utf8"); +const imageUrl = `${buildEnv.env.kogitoSwfBuilder.registry}/${buildEnv.env.kogitoSwfBuilder.account}/${buildEnv.env.kogitoSwfBuilder.name}`; + // Replace the whole string between quotes ("") with the image name -imageYaml = imageYaml.replace( - /(?<=")(.*kogito-swf-builder.*)(?=")/gm, - `${buildEnv.env.kogitoSwfBuilder.registry}/${buildEnv.env.kogitoSwfBuilder.account}/${buildEnv.env.kogitoSwfBuilder.name}` -); +imageYaml = imageYaml.replace(/(?<=")(.*kogito-swf-builder.*)(?=")/gm, imageUrl); // Write file and then rename it to match the image name fs.writeFileSync(originalYamlPath, imageYaml); fs.renameSync(originalYamlPath, path.join(resourcesPath, `${buildEnv.env.kogitoSwfBuilder.name}-image.yaml`)); + +// Replace image URL in .feature files +replaceInFile.sync({ + files: ["**/*.feature"], + from: /@quay.io\/kiegroup\/.*/g, + to: `@${imageUrl}`, +}); diff --git a/packages/kogito-swf-builder/package.json b/packages/kogito-swf-builder/package.json index 91c3dd46cd4..d89ded6b126 100644 --- a/packages/kogito-swf-builder/package.json +++ b/packages/kogito-swf-builder/package.json @@ -34,6 +34,7 @@ "@kie-tools/python-venv": "workspace:*", "@kie-tools/root-env": "workspace:*", "cross-env": "^7.0.3", + "replace-in-file": "^7.1.0", "rimraf": "^3.0.2", "run-script-os": "^1.1.6" }, diff --git a/packages/kogito-swf-builder/test-resources/tests/features/kogito-swf-builder-2.feature b/packages/kogito-swf-builder/test-resources/tests/features/kogito-swf-builder-2.feature index 51de9c6fdca..2535c3a0d5c 100644 --- a/packages/kogito-swf-builder/test-resources/tests/features/kogito-swf-builder-2.feature +++ b/packages/kogito-swf-builder/test-resources/tests/features/kogito-swf-builder-2.feature @@ -1,4 +1,4 @@ -@quay.io/kiegroup/kogito-swf-builder +@quay.io/kiegroup/kogito-swf-builder-nightly Feature: Serverless Workflow images common Scenario: Verify if the swf and quarkus files are under /home/kogito/.m2/repository diff --git a/packages/kogito-swf-builder/test-resources/tests/features/kogito-swf-builder.feature b/packages/kogito-swf-builder/test-resources/tests/features/kogito-swf-builder.feature index acae47c9ca3..e97ba9811cd 100644 --- a/packages/kogito-swf-builder/test-resources/tests/features/kogito-swf-builder.feature +++ b/packages/kogito-swf-builder/test-resources/tests/features/kogito-swf-builder.feature @@ -1,4 +1,4 @@ -@quay.io/kiegroup/kogito-swf-builder +@quay.io/kiegroup/kogito-swf-builder-nightly Feature: Serverless Workflow builder images Scenario: Verify that the application is built and started correctly diff --git a/packages/kogito-swf-common/resources/Makefile b/packages/kogito-swf-common/resources/Makefile index 8c2303c2d4c..48d7ca9f1a0 100644 --- a/packages/kogito-swf-common/resources/Makefile +++ b/packages/kogito-swf-common/resources/Makefile @@ -68,11 +68,16 @@ ifneq ($(SWF_IMAGE_TAG), $(CURRENT_IMAGE_VERSION)) ${BUILD_ENGINE} tag ${SWF_FULL_IMAGE_NAME}:${CURRENT_IMAGE_VERSION} ${SWF_FULL_IMAGE_NAME}:${SWF_IMAGE_TAG} endif +_create_e2e_dir: + rm -rf ../dist-e2e-tests + mkdir ../dist-e2e-tests + # Trigger the image tests -.PHONY test-image: _check_swf_image_name bats _test_image +.PHONY test-image: _create_e2e_dir _check_swf_image_name bats _test_image _test_image: - ${CEKIT_CMD} --descriptor ${SWF_IMAGE_FILENAME} test behave - tests/shell/run.sh ${SWF_IMAGE_NAME} ${SWF_FULL_IMAGE_NAME}:${SWF_IMAGE_TAG} + -${CEKIT_CMD} --descriptor ${SWF_IMAGE_FILENAME} test behave + cp -r target/test/results ../dist-e2e-tests/cekit/ + -tests/shell/run.sh ${SWF_IMAGE_NAME} ${SWF_FULL_IMAGE_NAME}:${SWF_IMAGE_TAG} .PHONY build: _check_swf_image_name _fix_platform_versions _cekit_build _tag_image diff --git a/packages/kogito-swf-common/resources/scripts/run-bats.sh b/packages/kogito-swf-common/resources/scripts/run-bats.sh index 3da0bf00ce8..6955434159c 100755 --- a/packages/kogito-swf-common/resources/scripts/run-bats.sh +++ b/packages/kogito-swf-common/resources/scripts/run-bats.sh @@ -21,6 +21,8 @@ set -e +script_dir_path="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + if [[ $(command -v ./bats/bin/bats) ]]; then #skip if bats already installed else will install the bats echo "---> bats already available running tests" else @@ -29,5 +31,7 @@ else rm -rf bats-core fi +tests_output_path="${script_dir_path}/../../dist-e2e-tests" + echo "----> running bats" -./bats/bin/bats modules/kogito-swf/common/scripts/tests/bats +./bats/bin/bats modules/kogito-swf/common/scripts/tests/bats --formatter junit --report-formatter junit --output "${tests_output_path}" diff --git a/packages/kogito-swf-devmode/install.js b/packages/kogito-swf-devmode/install.js index 9a4eff75c62..33485a83de5 100644 --- a/packages/kogito-swf-devmode/install.js +++ b/packages/kogito-swf-devmode/install.js @@ -24,6 +24,7 @@ const buildEnv = require("./env"); const path = require("path"); const pythonVenvDir = path.dirname(require.resolve("@kie-tools/python-venv/package.json")); const kogitoSwfCommonDir = path.dirname(require.resolve("@kie-tools/kogito-swf-common/package.json")); +const replaceInFile = require("replace-in-file"); const activateCmd = process.platform === "win32" @@ -46,12 +47,18 @@ if (imageYamlFiles.length !== 1) { const originalYamlPath = path.join(resourcesPath, imageYamlFiles[0]); let imageYaml = fs.readFileSync(originalYamlPath, "utf8"); +const imageUrl = `${buildEnv.env.kogitoSwfDevMode.registry}/${buildEnv.env.kogitoSwfDevMode.account}/${buildEnv.env.kogitoSwfDevMode.name}`; + // Replace the whole string between quotes ("") with the image name -imageYaml = imageYaml.replace( - /(?<=")(.*kogito-swf-devmode.*)(?=")/gm, - `${buildEnv.env.kogitoSwfDevMode.registry}/${buildEnv.env.kogitoSwfDevMode.account}/${buildEnv.env.kogitoSwfDevMode.name}` -); +imageYaml = imageYaml.replace(/(?<=")(.*kogito-swf-devmode.*)(?=")/gm, imageUrl); // Write file and then rename it to match the image name fs.writeFileSync(originalYamlPath, imageYaml); fs.renameSync(originalYamlPath, path.join(resourcesPath, `${buildEnv.env.kogitoSwfDevMode.name}-image.yaml`)); + +// Replace image URL in .feature files +replaceInFile.sync({ + files: ["**/*.feature"], + from: /@quay.io\/kiegroup\/.*/g, + to: `@${imageUrl}`, +}); diff --git a/packages/kogito-swf-devmode/package.json b/packages/kogito-swf-devmode/package.json index a7131d80edb..07111d79c8a 100644 --- a/packages/kogito-swf-devmode/package.json +++ b/packages/kogito-swf-devmode/package.json @@ -36,6 +36,7 @@ "@kie-tools/root-env": "workspace:*", "@kie-tools/sonataflow-quarkus-devui": "workspace:*", "cross-env": "^7.0.3", + "replace-in-file": "^7.1.0", "rimraf": "^3.0.2", "run-script-os": "^1.1.6" }, diff --git a/packages/kogito-swf-devmode/test-resources/tests/features/kogito-swf-devmode-2.feature b/packages/kogito-swf-devmode/test-resources/tests/features/kogito-swf-devmode-2.feature index 4dae1df1cc1..e285e50cbff 100644 --- a/packages/kogito-swf-devmode/test-resources/tests/features/kogito-swf-devmode-2.feature +++ b/packages/kogito-swf-devmode/test-resources/tests/features/kogito-swf-devmode-2.feature @@ -1,4 +1,4 @@ -@quay.io/kiegroup/kogito-swf-devmode +@quay.io/kiegroup/kogito-swf-devmode-nightly Feature: Serverless Workflow images common Scenario: Verify if the swf and quarkus files are under /home/kogito/.m2/repository diff --git a/packages/kogito-swf-devmode/test-resources/tests/features/kogito-swf-devmode.feature b/packages/kogito-swf-devmode/test-resources/tests/features/kogito-swf-devmode.feature index c17ff1f9e69..2ecc7ec60c8 100644 --- a/packages/kogito-swf-devmode/test-resources/tests/features/kogito-swf-devmode.feature +++ b/packages/kogito-swf-devmode/test-resources/tests/features/kogito-swf-devmode.feature @@ -1,4 +1,4 @@ -@quay.io/kiegroup/kogito-swf-devmode +@quay.io/kiegroup/kogito-swf-devmode-nightly Feature: Serverless Workflow devmode images Scenario: Verify if container starts in devmode by default @@ -138,7 +138,7 @@ Feature: Serverless Workflow devmode images | request_method | GET | | expected_status_code | 200 | And container log should contain kogito-addon-microprofile-config-service-catalog-extension - + Scenario: Verify if container have the KOGITO_CODEGEN_PROCESS_FAILONERROR env set to false When container is started with command bash Then run sh -c 'echo $KOGITO_CODEGEN_PROCESS_FAILONERROR' in container and immediately check its output for false diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0fdc9a0ce93..e1a38d85aa0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6103,6 +6103,9 @@ importers: cross-env: specifier: ^7.0.3 version: 7.0.3 + replace-in-file: + specifier: ^7.1.0 + version: 7.1.0 rimraf: specifier: ^3.0.2 version: 3.0.2 @@ -6136,6 +6139,9 @@ importers: cross-env: specifier: ^7.0.3 version: 7.0.3 + replace-in-file: + specifier: ^7.1.0 + version: 7.1.0 rimraf: specifier: ^3.0.2 version: 3.0.2 From 6e4f2aef901c2559c3357cd9b5b229919d8fc907 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luiz=20Jo=C3=A3o=20Motta?= Date: Wed, 8 May 2024 11:10:04 -0300 Subject: [PATCH 05/10] kie-issues#937: On the DMN Editor, adding a DRD then pressing "Undo", makes the Editor will crash (#2304) --- packages/dmn-editor/src/DmnEditor.tsx | 1 + .../src/autolayout/AutolayoutButton.tsx | 8 ++-- .../BoxedExpressionScreen.tsx | 7 ++-- .../dmn-editor/src/clipboard/Clipboard.ts | 6 +-- packages/dmn-editor/src/diagram/Diagram.tsx | 38 +++++++++---------- .../src/diagram/DiagramCommands.tsx | 16 ++++---- .../src/diagram/DrdSelectorPanel.tsx | 19 +++++----- packages/dmn-editor/src/diagram/Palette.tsx | 18 +++++---- .../src/diagram/edges/Waypoints.tsx | 8 ++-- .../edges/usePotentialWaypointControls.ts | 2 +- .../dmn-editor/src/diagram/nodes/Nodes.tsx | 2 +- .../src/propertiesPanel/FontOptions.tsx | 5 ++- .../src/propertiesPanel/ShapeOptions.tsx | 10 ++++- packages/dmn-editor/src/store/Store.ts | 24 ++++++++++-- .../src/store/computed/computeIndexes.ts | 4 +- .../dmn-editor/src/store/computed/initial.ts | 4 ++ 16 files changed, 104 insertions(+), 68 deletions(-) diff --git a/packages/dmn-editor/src/DmnEditor.tsx b/packages/dmn-editor/src/DmnEditor.tsx index 571d18ec019..8e0e26ab201 100644 --- a/packages/dmn-editor/src/DmnEditor.tsx +++ b/packages/dmn-editor/src/DmnEditor.tsx @@ -247,6 +247,7 @@ export const DmnEditorInternal = ({ return; } state.dmn.model = normalize(model); + dmnModelBeforeEditingRef.current = state.dmn.model; }); }, [dmnEditorStoreApi, model]); diff --git a/packages/dmn-editor/src/autolayout/AutolayoutButton.tsx b/packages/dmn-editor/src/autolayout/AutolayoutButton.tsx index 0bf61e814c2..e2d88e4aef3 100644 --- a/packages/dmn-editor/src/autolayout/AutolayoutButton.tsx +++ b/packages/dmn-editor/src/autolayout/AutolayoutButton.tsx @@ -372,7 +372,7 @@ export function AutolayoutButton() { repositionNode({ definitions: s.dmn.model.definitions, - drdIndex: s.diagram.drdIndex, + drdIndex: s.computed(s).getDrdIndex(), controlWaypointsByEdge: new Map(), change: { nodeType: node.type as NodeType, @@ -406,7 +406,7 @@ export function AutolayoutButton() { resizeNode({ definitions: s.dmn.model.definitions, - drdIndex: s.diagram.drdIndex, + drdIndex: s.computed(s).getDrdIndex(), dmnShapesByHref: s.computed(s).indexedDrd().dmnShapesByHref, snapGrid, change: { @@ -454,7 +454,7 @@ export function AutolayoutButton() { updateDecisionServiceDividerLine({ definitions: s.dmn.model.definitions, - drdIndex: s.diagram.drdIndex, + drdIndex: s.computed(s).getDrdIndex(), dmnShapesByHref: s.computed(s).indexedDrd().dmnShapesByHref, drgElementIndex: parentNode.data.index, shapeIndex: parentNode.data.shape.index, @@ -481,7 +481,7 @@ export function AutolayoutButton() { addEdge({ definitions: s.dmn.model.definitions, - drdIndex: s.diagram.drdIndex, + drdIndex: s.computed(s).getDrdIndex(), edge: { autoPositionedEdgeMarker: undefined, type: edge.type as EdgeType, diff --git a/packages/dmn-editor/src/boxedExpressions/BoxedExpressionScreen.tsx b/packages/dmn-editor/src/boxedExpressions/BoxedExpressionScreen.tsx index dbc155484f7..791ac403c1e 100644 --- a/packages/dmn-editor/src/boxedExpressions/BoxedExpressionScreen.tsx +++ b/packages/dmn-editor/src/boxedExpressions/BoxedExpressionScreen.tsx @@ -101,6 +101,7 @@ export function BoxedExpressionScreen({ container }: { container: React.RefObjec (s) => s.computed(s).getExternalModelTypesByNamespace(externalModelsByNamespace).pmmls ); const isAlternativeInputDataShape = useDmnEditorStore((s) => s.computed(s).isAlternativeInputDataShape()); + const drdIndex = useDmnEditorStore((s) => s.computed(s).getDrdIndex()); const onRequestFeelVariables = useCallback(() => { const externalModels = new Map(); @@ -142,7 +143,7 @@ export function BoxedExpressionScreen({ container }: { container: React.RefObjec // recalculated, breaking batching. const widthsById = useMemo(() => { return ( - thisDmn.model.definitions["dmndi:DMNDI"]?.["dmndi:DMNDiagram"]?.[diagram.drdIndex]["di:extension"]?.[ + thisDmn.model.definitions["dmndi:DMNDI"]?.["dmndi:DMNDiagram"]?.[drdIndex]["di:extension"]?.[ "kie:ComponentsWidthsExtension" ]?.["kie:ComponentWidths"] ?? [] ).reduce((acc, c) => { @@ -155,7 +156,7 @@ export function BoxedExpressionScreen({ container }: { container: React.RefObjec ); } }, new Map()); - }, [diagram.drdIndex, thisDmn.model.definitions]); + }, [drdIndex, thisDmn.model.definitions]); const expression = useMemo(() => { if (!drgElement) { @@ -193,7 +194,7 @@ export function BoxedExpressionScreen({ container }: { container: React.RefObjec updateExpressionWidths({ definitions: state.dmn.model.definitions, - drdIndex: state.diagram.drdIndex, + drdIndex: state.computed(state).getDrdIndex(), widthsById: newWidthsById, }); }); diff --git a/packages/dmn-editor/src/clipboard/Clipboard.ts b/packages/dmn-editor/src/clipboard/Clipboard.ts index b1b1e7e87d7..87e80ad728c 100644 --- a/packages/dmn-editor/src/clipboard/Clipboard.ts +++ b/packages/dmn-editor/src/clipboard/Clipboard.ts @@ -188,9 +188,9 @@ export function buildClipboardFromDiagram(rfState: RF.ReactFlowState, dmnEditorS .getOriginalIds(); clipboard.widths = ( - dmnEditorState.dmn.model.definitions["dmndi:DMNDI"]?.["dmndi:DMNDiagram"]?.[dmnEditorState.diagram.drdIndex][ - "di:extension" - ]?.["kie:ComponentsWidthsExtension"]?.["kie:ComponentWidths"] ?? [] + dmnEditorState.dmn.model.definitions["dmndi:DMNDI"]?.["dmndi:DMNDiagram"]?.[ + dmnEditorState.computed(dmnEditorState).getDrdIndex() + ]["di:extension"]?.["kie:ComponentsWidthsExtension"]?.["kie:ComponentWidths"] ?? [] ).filter((w: KIE__tComponentWidths) => idsOnDrgElementTrees.has(w["@_dmnElementRef"]!)); const artifacts = dmnEditorState.dmn.model.definitions.artifact ?? []; diff --git a/packages/dmn-editor/src/diagram/Diagram.tsx b/packages/dmn-editor/src/diagram/Diagram.tsx index 57f591c6f9e..504586968f4 100644 --- a/packages/dmn-editor/src/diagram/Diagram.tsx +++ b/packages/dmn-editor/src/diagram/Diagram.tsx @@ -209,7 +209,7 @@ export const Diagram = React.forwardRef { const { id, href: newNodeId } = addStandaloneNode({ definitions: state.dmn.model.definitions, - drdIndex: state.diagram.drdIndex, + drdIndex: state.computed(state).getDrdIndex(), newNode: { type: typeOfNewNodeFromPalette, bounds: { @@ -371,7 +371,7 @@ export const Diagram = React.forwardRef { const { href: decisionNodeHref } = addStandaloneNode({ definitions: state.dmn.model.definitions, - drdIndex: state.diagram.drdIndex, + drdIndex: state.computed(state).getDrdIndex(), newNode: { type: NODE_TYPES.decision, bounds: { @@ -1267,7 +1267,7 @@ function DmnDiagramEmptyState({ updateExpressionWidths({ definitions: state.dmn.model.definitions, - drdIndex: state.diagram.drdIndex, + drdIndex: state.computed(state).getDrdIndex(), widthsById: defaultWidthsById, }); @@ -1298,7 +1298,7 @@ function DmnDiagramEmptyState({ const { href: inputDataNodeHref, shapeId: inputDataShapeId } = addStandaloneNode({ definitions: state.dmn.model.definitions, - drdIndex: state.diagram.drdIndex, + drdIndex: state.computed(state).getDrdIndex(), newNode: { type: NODE_TYPES.inputData, bounds: inputDataNodeBounds, @@ -1307,7 +1307,7 @@ function DmnDiagramEmptyState({ const { href: decisionNodeHref } = addConnectedNode({ definitions: state.dmn.model.definitions, - drdIndex: state.diagram.drdIndex, + drdIndex: state.computed(state).getDrdIndex(), edgeType: EDGE_TYPES.informationRequirement, sourceNode: { href: inputDataNodeHref, diff --git a/packages/dmn-editor/src/diagram/DiagramCommands.tsx b/packages/dmn-editor/src/diagram/DiagramCommands.tsx index 9d073b1c98c..a05ce8736df 100644 --- a/packages/dmn-editor/src/diagram/DiagramCommands.tsx +++ b/packages/dmn-editor/src/diagram/DiagramCommands.tsx @@ -131,7 +131,7 @@ export function DiagramCommands(props: {}) { [...copiedEdgesById.values(), ...danglingEdgesById.values()].forEach((edge) => { deleteEdge({ definitions: state.dmn.model.definitions, - drdIndex: state.diagram.drdIndex, + drdIndex: state.computed(state).getDrdIndex(), edge: { id: edge.id, dmnObject: edge.data!.dmnObject }, mode: EdgeDeletionMode.FROM_DRG_AND_ALL_DRDS, }); @@ -150,7 +150,7 @@ export function DiagramCommands(props: {}) { deleteNode({ drgEdges: state.computed(state).getDiagramData(externalModelsByNamespace).drgEdges, definitions: state.dmn.model.definitions, - drdIndex: state.diagram.drdIndex, + drdIndex: state.computed(state).getDrdIndex(), dmnObjectNamespace: node.data.dmnObjectNamespace ?? state.dmn.model.definitions["@_namespace"], dmnObjectQName: node.data.dmnObjectQName, dmnObjectId: node.data.dmnObject?.["@_id"], @@ -235,7 +235,7 @@ export function DiagramCommands(props: {}) { const { diagramElements, widths } = addOrGetDrd({ definitions: state.dmn.model.definitions, - drdIndex: state.diagram.drdIndex, + drdIndex: state.computed(state).getDrdIndex(), }); diagramElements.push(...clipboard.shapes.map((s) => ({ ...s, __$$element: "dmndi:DMNShape" as const }))); diagramElements.push(...clipboard.edges.map((s) => ({ ...s, __$$element: "dmndi:DMNEdge" as const }))); @@ -307,7 +307,7 @@ export function DiagramCommands(props: {}) { const { href: newNodeId } = addStandaloneNode({ definitions: state.dmn.model.definitions, - drdIndex: state.diagram.drdIndex, + drdIndex: state.computed(state).getDrdIndex(), newNode: { type: NODE_TYPES.group, bounds: getBounds({ @@ -368,7 +368,7 @@ export function DiagramCommands(props: {}) { externalDmnsIndex: state.computed(state).getExternalModelTypesByNamespace(externalModelsByNamespace) .dmns, definitions: state.dmn.model.definitions, - drdIndex: state.diagram.drdIndex, + drdIndex: state.computed(state).getDrdIndex(), dmnObjectNamespace: nodesById.get(edge.source)!.data.dmnObjectNamespace ?? state.dmn.model.definitions["@_namespace"], dmnObjectId: nodesById.get(edge.source)!.data.dmnObject?.["@_id"], @@ -378,7 +378,7 @@ export function DiagramCommands(props: {}) { externalDmnsIndex: state.computed(state).getExternalModelTypesByNamespace(externalModelsByNamespace) .dmns, definitions: state.dmn.model.definitions, - drdIndex: state.diagram.drdIndex, + drdIndex: state.computed(state).getDrdIndex(), dmnObjectNamespace: nodesById.get(edge.target)!.data.dmnObjectNamespace ?? state.dmn.model.definitions["@_namespace"], dmnObjectId: nodesById.get(edge.target)!.data.dmnObject?.["@_id"], @@ -386,7 +386,7 @@ export function DiagramCommands(props: {}) { ) { deleteEdge({ definitions: state.dmn.model.definitions, - drdIndex: state.diagram.drdIndex, + drdIndex: state.computed(state).getDrdIndex(), edge: { id: edge.id, dmnObject: edge.data!.dmnObject }, mode: EdgeDeletionMode.FROM_CURRENT_DRD_ONLY, }); @@ -403,7 +403,7 @@ export function DiagramCommands(props: {}) { drgEdges: [], // Deleting from DRD only. definitions: state.dmn.model.definitions, externalDmnsIndex: state.computed(state).getExternalModelTypesByNamespace(externalModelsByNamespace).dmns, - drdIndex: state.diagram.drdIndex, + drdIndex: state.computed(state).getDrdIndex(), dmnObjectNamespace: node.data.dmnObjectNamespace ?? state.dmn.model.definitions["@_namespace"], dmnObjectQName: node.data.dmnObjectQName, dmnObjectId: node.data.dmnObject?.["@_id"], diff --git a/packages/dmn-editor/src/diagram/DrdSelectorPanel.tsx b/packages/dmn-editor/src/diagram/DrdSelectorPanel.tsx index 465cdb16004..65f6b15cc7c 100644 --- a/packages/dmn-editor/src/diagram/DrdSelectorPanel.tsx +++ b/packages/dmn-editor/src/diagram/DrdSelectorPanel.tsx @@ -37,11 +37,12 @@ import { useCallback } from "react"; export function DrdSelectorPanel() { const thisDmn = useDmnEditorStore((s) => s.dmn); const diagram = useDmnEditorStore((s) => s.diagram); + const drdIndex = useDmnEditorStore((s) => s.computed(s).getDrdIndex()); const isAlternativeInputDataShape = useDmnEditorStore((s) => s.computed(s).isAlternativeInputDataShape()); const drdName = useDmnEditorStore( (s) => - s.dmn.model.definitions["dmndi:DMNDI"]?.["dmndi:DMNDiagram"]?.[s.diagram.drdIndex]?.["@_name"] || - getDefaultDrdName({ drdIndex: s.diagram.drdIndex }) + s.dmn.model.definitions["dmndi:DMNDI"]?.["dmndi:DMNDiagram"]?.[s.computed(s).getDrdIndex()]?.["@_name"] || + getDefaultDrdName({ drdIndex: s.computed(s).getDrdIndex() }) ); const dmnEditorStoreApi = useDmnEditorStoreApi(); @@ -51,8 +52,8 @@ export function DrdSelectorPanel() { const removeDrd = useCallback(() => { dmnEditorStoreApi.setState((s) => { const nextDrds = s.dmn.model.definitions["dmndi:DMNDI"]?.["dmndi:DMNDiagram"]; - nextDrds?.splice(s.diagram.drdIndex, 1); - s.diagram.drdIndex = Math.max(0, Math.min(s.diagram.drdIndex, (nextDrds?.length ?? 0) - 1)); + nextDrds?.splice(s.computed(s).getDrdIndex(), 1); + s.diagram.__unsafeDrdIndex = Math.max(0, Math.min(s.computed(s).getDrdIndex(), (nextDrds?.length ?? 0) - 1)); }); }, [dmnEditorStoreApi]); @@ -89,7 +90,7 @@ export function DrdSelectorPanel() { drdIndex: newIndex, }); - state.diagram.drdIndex = newIndex; + state.diagram.__unsafeDrdIndex = newIndex; state.diagram.openLhsPanel = DiagramLhsPanel.DRG_NODES; state.focus.consumableId = getDrdId({ drdIndex: newIndex }); }); @@ -118,10 +119,10 @@ export function DrdSelectorPanel() { {drds.map((drd, i) => (