Skip to content

♻️ refactor(node-utils): rename TestResult to TestResponse in use cas… #2545

♻️ refactor(node-utils): rename TestResult to TestResponse in use cas…

♻️ refactor(node-utils): rename TestResult to TestResponse in use cas… #2545

Workflow file for this run

name: Main CI/CD Pipeline
# ┌─────────────────────────────────────────────────────────────────┐
# │ GLOBAL CONFIGURATION │
# │ To update Node.js version, change all occurrences below │
# │ Current version: 24.15.0 │
# │ │
# │ Repository Variables Required: │
# │ - PACKMIND_EDITION: 'oss' or 'proprietary' │
# │ - ACTION_RUNNER_TAG: (optional) defaults to 'self-hosted' │
# └─────────────────────────────────────────────────────────────────┘
on:
push:
branches: ['main']
tags:
- 'release/*'
- 'release-cli/*'
pull_request:
jobs:
# Stage 1: Build and Test
build:
uses: ./.github/workflows/build.yml
with:
node-version: 24.15.0
secrets:
VITE_SENTRY_FRONTEND_DSN: ${{ secrets.VITE_SENTRY_FRONTEND_DSN }}
VITE_CRISP_WEBSITE_ID: ${{ secrets.VITE_CRISP_WEBSITE_ID }}
# Stage 2: Quality and Security Checks
quality:
needs: [build]
uses: ./.github/workflows/quality.yml
with:
node-version: 24.15.0
cli-executables-artifact: ${{ needs.build.outputs.cli-executables-artifact }}
secrets:
GITGUARDIAN_API_KEY: ${{ secrets.GITGUARDIAN_API_KEY }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
PACKMIND_API_KEY_V3: ${{ secrets.PACKMIND_API_KEY_V3 }}
# Stage 3: Docker Images (on main branch, and release tags)
# Note: The docker workflow handles branch conditions internally based on edition
docker:
needs: [build, quality]
uses: ./.github/workflows/docker.yml
with:
api-artifact: ${{ needs.build.outputs.api-artifact }}
frontend-artifact: ${{ needs.build.outputs.frontend-artifact }}
mcp-server-artifact: ${{ needs.build.outputs.mcp-server-artifact }}
standard-samples-artifact: ${{ needs.build.outputs.standard-samples-artifact }}
node-version: 24.15.0
secrets:
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
# Stage 4: Publish CLI Release (only on release-cli/* tags, OSS only)
publish-cli-release:
needs: [build]
if: startsWith(github.ref, 'refs/tags/release-cli/') && vars.PACKMIND_EDITION == 'oss'
permissions:
contents: write
uses: ./.github/workflows/publish-cli-release.yml
with:
cli-artifact: ${{ needs.build.outputs.cli-artifact }}
secrets:
MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }}
MACOS_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }}
MACOS_SIGNING_IDENTITY: ${{ secrets.MACOS_SIGNING_IDENTITY }}
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }}
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
HOMEBREW_TAP_PAT: ${{ secrets.HOMEBREW_TAP_PAT }}
# Stage 5: Deploy and Update Helm Charts (after Docker images are built)
# Note: The deploy workflow handles edition-specific logic internally
deploy-staging-and-release:
needs: [build, quality, docker]
if: github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/release/')
uses: ./.github/workflows/deploy-staging-and-release.yml
with:
node-version: 24.15.0
helm-charts-repository: ${{ vars.HELM_CHARTS_REPOSITORY || 'PackmindHub/packmind-ai-helm-charts' }}
secrets:
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
HELM_CHARTS_PAT: ${{ secrets.HELM_CHARTS_PAT }}
# Stage 6: Create Release (only on release tags, after all deployments)
create-release:
needs: [build, quality, docker, deploy-staging-and-release]
if: startsWith(github.ref, 'refs/tags/release/')
permissions:
contents: write
uses: ./.github/workflows/release.yml