Skip to content

fix(frontend): guard unknown workspace quota types #3278

fix(frontend): guard unknown workspace quota types

fix(frontend): guard unknown workspace quota types #3278

Workflow file for this run

name: Build Frontends Image
on:
workflow_call:
inputs:
push_image:
description: "Push image"
required: false
type: boolean
default: false
push_image_tag:
description: "Push image tag"
default: "latest"
required: false
type: string
force_all:
description: "Force build all modules (for release)"
default: false
required: false
type: boolean
workflow_dispatch:
inputs:
push_image:
description: "Push image"
required: false
type: boolean
default: false
push_image_tag:
description: "Push image tag"
default: "latest"
required: false
type: string
push:
branches: ["*"]
paths:
- "frontend/desktop/**"
- "frontend/providers/**"
- "frontend/packages/**"
- "frontend/package.json"
- "frontend/pnpm-lock.yaml"
- "frontend/pnpm-workspace.yaml"
- "frontend/tsconfig*.json"
- ".github/workflows/frontend.yml"
- ".github/workflows/frontends.yml"
- "!**/*.md"
pull_request:
branches: ["*"]
paths:
- "frontend/desktop/**"
- "frontend/providers/**"
- "frontend/packages/**"
- "frontend/package.json"
- "frontend/pnpm-lock.yaml"
- "frontend/pnpm-workspace.yaml"
- "frontend/tsconfig*.json"
- ".github/workflows/frontend.yml"
- ".github/workflows/frontends.yml"
- "!**/*.md"
# Avoid using ${{ github.workflow }} - when called via workflow_call, it inherits the caller's name causing conflicts
concurrency:
group: frontends-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
detect-changes:
runs-on: ubuntu-latest
outputs:
modules: ${{ steps.set-matrix.outputs.modules }}
steps:
- uses: actions/checkout@v4
- uses: dorny/paths-filter@v3
id: filter
with:
filters: |
packages:
- 'frontend/packages/**'
root-config:
- 'frontend/package.json'
- 'frontend/pnpm-lock.yaml'
- 'frontend/pnpm-workspace.yaml'
- 'frontend/tsconfig*.json'
- '.github/workflows/frontend.yml'
- '.github/workflows/frontends.yml'
license:
- 'frontend/providers/license/**'
template:
- 'frontend/providers/template/**'
applaunchpad:
- 'frontend/providers/applaunchpad/**'
terminal:
- 'frontend/providers/terminal/**'
dbprovider:
- 'frontend/providers/dbprovider/**'
costcenter:
- 'frontend/providers/costcenter/**'
desktop:
- 'frontend/desktop/**'
- name: Generate build matrix
id: set-matrix
env:
PACKAGES_CHANGED: ${{ steps.filter.outputs.packages }}
ROOT_CONFIG_CHANGED: ${{ steps.filter.outputs.root-config }}
FORCE_ALL: ${{ inputs.force_all }}
EVENT_NAME: ${{ github.event_name }}
LICENSE_CHANGED: ${{ steps.filter.outputs.license }}
TEMPLATE_CHANGED: ${{ steps.filter.outputs.template }}
APPLAUNCHPAD_CHANGED: ${{ steps.filter.outputs.applaunchpad }}
TERMINAL_CHANGED: ${{ steps.filter.outputs.terminal }}
DBPROVIDER_CHANGED: ${{ steps.filter.outputs.dbprovider }}
COSTCENTER_CHANGED: ${{ steps.filter.outputs.costcenter }}
DESKTOP_CHANGED: ${{ steps.filter.outputs.desktop }}
run: |
modules=()
# Check if we need to build all modules
if [[ "$PACKAGES_CHANGED" == "true" || \
"$ROOT_CONFIG_CHANGED" == "true" || \
"$FORCE_ALL" == "true" || \
"$EVENT_NAME" == "workflow_dispatch" ]]; then
modules=(
"providers/license"
"providers/template"
"providers/applaunchpad"
"providers/terminal"
"providers/dbprovider"
"providers/costcenter"
"desktop"
)
else
# Only build changed modules
[[ "$LICENSE_CHANGED" == "true" ]] && modules+=("providers/license")
[[ "$TEMPLATE_CHANGED" == "true" ]] && modules+=("providers/template")
[[ "$APPLAUNCHPAD_CHANGED" == "true" ]] && modules+=("providers/applaunchpad")
[[ "$TERMINAL_CHANGED" == "true" ]] && modules+=("providers/terminal")
[[ "$DBPROVIDER_CHANGED" == "true" ]] && modules+=("providers/dbprovider")
[[ "$COSTCENTER_CHANGED" == "true" ]] && modules+=("providers/costcenter")
[[ "$DESKTOP_CHANGED" == "true" ]] && modules+=("desktop")
fi
# Convert to JSON array (compact format for GitHub Actions)
if [ ${#modules[@]} -eq 0 ]; then
json_modules="[]"
else
json_modules=$(printf '%s\n' "${modules[@]}" | jq -R . | jq -s -c .)
fi
echo "modules=$json_modules" >> "$GITHUB_OUTPUT"
echo "Building modules: $json_modules"
image-build:
needs: detect-changes
if: needs.detect-changes.outputs.modules != '[]'
uses: ./.github/workflows/frontend.yml
permissions:
contents: read
packages: write
secrets: inherit
strategy:
fail-fast: false
matrix:
module: ${{ fromJSON(needs.detect-changes.outputs.modules) }}
with:
module: ${{ matrix.module }}
push_image: ${{ (github.event_name == 'push') || (github.event_name == 'create') || (inputs.push_image == true) }}
push_image_tag: ${{ inputs.push_image_tag }}