From d0072ae5ee5b1c3930ce6264a47b4fce01e61404 Mon Sep 17 00:00:00 2001 From: Artur Gubaidullin Date: Sat, 14 Feb 2026 00:53:28 -0800 Subject: [PATCH 1/4] feat: add DeploymentButtons component for managing integration deployments with deploy, rollout, and delete actions. --- karavan-app/package-lock.json | 6 ++++++ .../integration-containers/DeploymentButtons.tsx | 6 ++++-- 2 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 karavan-app/package-lock.json diff --git a/karavan-app/package-lock.json b/karavan-app/package-lock.json new file mode 100644 index 00000000000..82f07400fc3 --- /dev/null +++ b/karavan-app/package-lock.json @@ -0,0 +1,6 @@ +{ + "name": "karavan-app", + "lockfileVersion": 3, + "requires": true, + "packages": {} +} diff --git a/karavan-app/src/main/webui/src/karavan/features/integration/integration-containers/DeploymentButtons.tsx b/karavan-app/src/main/webui/src/karavan/features/integration/integration-containers/DeploymentButtons.tsx index 78efed5afc0..1b48a6f17a5 100644 --- a/karavan-app/src/main/webui/src/karavan/features/integration/integration-containers/DeploymentButtons.tsx +++ b/karavan-app/src/main/webui/src/karavan/features/integration/integration-containers/DeploymentButtons.tsx @@ -19,7 +19,7 @@ import React, {useState} from 'react'; import {Button,} from '@patternfly/react-core'; import '@features/integration/designer/karavan.css'; -import {useProjectStore, useStatusesStore} from "@stores/ProjectStore"; +import {useFilesStore, useProjectStore, useStatusesStore} from "@stores/ProjectStore"; import {shallow} from "zustand/shallow"; import RolloutIcon from "@patternfly/react-icons/dist/esm/icons/process-automation-icon"; import DeployIcon from "@patternfly/react-icons/dist/esm/icons/upload-icon"; @@ -27,6 +27,7 @@ import DeleteIcon from "@patternfly/react-icons/dist/esm/icons/trash-icon"; import {KaravanApi} from "@api/KaravanApi"; import {EventBus} from "@features/integration/designer/utils/EventBus"; import {ModalConfirmation} from "@shared/ui/ModalConfirmation"; +import {KUBERNETES_YAML} from "@models/ProjectModels"; interface Props { env: string, @@ -36,6 +37,7 @@ export function DeploymentButtons (props: Props) { const [project] = useProjectStore((s) => [s.project], shallow); const [deployments] = useStatusesStore((s) => [s.deployments], shallow); + const [files] = useFilesStore((s) => [s.files], shallow); const [showDeleteConfirmation, setShowDeleteConfirmation] = useState(false); const [showDeployConfirmation, setShowDeployConfirmation] = useState(false); const [showRolloutConfirmation, setShowRolloutConfirmation] = useState(false); @@ -112,7 +114,7 @@ export function DeploymentButtons (props: Props) { return (
{deploymentStatus !== undefined &&
{rolloutButton()}
} - {deploymentStatus === undefined &&
{deployButton()}
} + {deploymentStatus === undefined && files.some(f => f.name === KUBERNETES_YAML) &&
{deployButton()}
} {deploymentStatus !== undefined &&
{deleteButton()}
} {showDeleteConfirmation && Date: Sat, 14 Feb 2026 00:58:38 -0800 Subject: [PATCH 2/4] feat: add DeploymentButtons component for managing integration deployments with deploy, rollout, and delete actions. --- .../integration-containers/DeploymentButtons.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/karavan-app/src/main/webui/src/karavan/features/integration/integration-containers/DeploymentButtons.tsx b/karavan-app/src/main/webui/src/karavan/features/integration/integration-containers/DeploymentButtons.tsx index 78efed5afc0..1b48a6f17a5 100644 --- a/karavan-app/src/main/webui/src/karavan/features/integration/integration-containers/DeploymentButtons.tsx +++ b/karavan-app/src/main/webui/src/karavan/features/integration/integration-containers/DeploymentButtons.tsx @@ -19,7 +19,7 @@ import React, {useState} from 'react'; import {Button,} from '@patternfly/react-core'; import '@features/integration/designer/karavan.css'; -import {useProjectStore, useStatusesStore} from "@stores/ProjectStore"; +import {useFilesStore, useProjectStore, useStatusesStore} from "@stores/ProjectStore"; import {shallow} from "zustand/shallow"; import RolloutIcon from "@patternfly/react-icons/dist/esm/icons/process-automation-icon"; import DeployIcon from "@patternfly/react-icons/dist/esm/icons/upload-icon"; @@ -27,6 +27,7 @@ import DeleteIcon from "@patternfly/react-icons/dist/esm/icons/trash-icon"; import {KaravanApi} from "@api/KaravanApi"; import {EventBus} from "@features/integration/designer/utils/EventBus"; import {ModalConfirmation} from "@shared/ui/ModalConfirmation"; +import {KUBERNETES_YAML} from "@models/ProjectModels"; interface Props { env: string, @@ -36,6 +37,7 @@ export function DeploymentButtons (props: Props) { const [project] = useProjectStore((s) => [s.project], shallow); const [deployments] = useStatusesStore((s) => [s.deployments], shallow); + const [files] = useFilesStore((s) => [s.files], shallow); const [showDeleteConfirmation, setShowDeleteConfirmation] = useState(false); const [showDeployConfirmation, setShowDeployConfirmation] = useState(false); const [showRolloutConfirmation, setShowRolloutConfirmation] = useState(false); @@ -112,7 +114,7 @@ export function DeploymentButtons (props: Props) { return (
{deploymentStatus !== undefined &&
{rolloutButton()}
} - {deploymentStatus === undefined &&
{deployButton()}
} + {deploymentStatus === undefined && files.some(f => f.name === KUBERNETES_YAML) &&
{deployButton()}
} {deploymentStatus !== undefined &&
{deleteButton()}
} {showDeleteConfirmation && Date: Sat, 14 Feb 2026 01:01:33 -0800 Subject: [PATCH 3/4] Merge branch 'agub-deploy' of https://github.com/LegendArtur/camel-karavan into agub-deploy --- karavan-app/package-lock.json | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 karavan-app/package-lock.json diff --git a/karavan-app/package-lock.json b/karavan-app/package-lock.json deleted file mode 100644 index 82f07400fc3..00000000000 --- a/karavan-app/package-lock.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "karavan-app", - "lockfileVersion": 3, - "requires": true, - "packages": {} -} From 948d54b9c3f81be42b3680074d75d0fe5b0e1da2 Mon Sep 17 00:00:00 2001 From: Artur Gubaidullin Date: Sat, 14 Feb 2026 01:16:57 -0800 Subject: [PATCH 4/4] feat: Add GitHub Actions workflow to build and package the Karavan VS Code extension. --- .github/workflows/vscode.yml | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/.github/workflows/vscode.yml b/.github/workflows/vscode.yml index 6de0389547c..5e7bbbe1362 100644 --- a/.github/workflows/vscode.yml +++ b/.github/workflows/vscode.yml @@ -21,23 +21,23 @@ jobs: uses: actions/checkout@v4 # Generate Karavan UI model and API, Kamelets and Components - # - name: Set up JDK 17 - # uses: actions/setup-java@v4 - # with: - # distribution: adopt - # java-version: 17 + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + distribution: adopt + java-version: 17 - # - name: Cache local Maven repository - # uses: actions/cache@v4 - # with: - # path: | - # ~/.m2/repository - # !~/.m2/repository/org/apache/camel/karavan - # key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} - # restore-keys: ${{ runner.os }}-maven- + - name: Cache local Maven repository + uses: actions/cache@v4 + with: + path: | + ~/.m2/repository + !~/.m2/repository/org/apache/camel/karavan + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + restore-keys: ${{ runner.os }}-maven- - # - name: Generate Karavan UI model and API, Kamelets and Components - # run: mvn clean package -f karavan-generator && java -jar karavan-generator/target/karavan-generator-${{ env.TAG }}.jar + - name: Generate Karavan UI model and API, Kamelets and Components + run: mvn clean package -f karavan-generator && java -jar karavan-generator/target/karavan-generator-${{ env.TAG }}.jar # Building Karavan Core - name: Set up Node @@ -45,9 +45,9 @@ jobs: with: node-version: '24' - # - name: Karavan Core install - # working-directory: ./karavan-core - # run: npm install + - name: Karavan Core install + working-directory: ./karavan-core + run: npm install # Building Karavan VSCode extensions - name: Karavan VS Code extension (install dependencies)