chore(deps): update registry.access.redhat.com/ubi9/nodejs-22-minimal docker tag to v9.8-1787687000 #307
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| pull_request: | |
| branches: [main] | |
| jobs: | |
| test: | |
| name: Test & Build | |
| runs-on: ubuntu-latest | |
| outputs: | |
| app: ${{ steps.changes.outputs.app }} | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v7 | |
| with: | |
| fetch-depth: 0 | |
| - name: Detect changed paths | |
| id: changes | |
| run: | | |
| CHANGED=$(git diff --name-only ${{ github.event.pull_request.base.sha }} HEAD) | |
| if echo "$CHANGED" | grep -qE '^(src/|server/|modules/|shared/|scripts/validate|package|vite\.config|tailwind\.config|postcss\.config|vitest\.config|index\.html|public/|tests/smoke/|playwright\.config|Makefile)'; then | |
| echo "app=true" >> "$GITHUB_OUTPUT" | |
| fi | |
| if echo "$CHANGED" | grep -q '^deploy/'; then | |
| echo "deploy=true" >> "$GITHUB_OUTPUT" | |
| fi | |
| - name: Setup Node.js | |
| if: steps.changes.outputs.app == 'true' | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: '24' | |
| cache: 'npm' | |
| - name: Setup Socket Security | |
| if: steps.changes.outputs.app == 'true' | |
| uses: SocketDev/action@ba6de6cc0565af1f42295590380973573297e31f # v1.3.2 | |
| with: | |
| mode: firewall-free | |
| - name: Install dependencies | |
| if: steps.changes.outputs.app == 'true' | |
| run: | | |
| if command -v sfw &> /dev/null; then | |
| sfw npm ci | |
| else | |
| echo "::warning::Socket firewall not available, falling back to plain npm ci" | |
| npm ci | |
| fi | |
| - name: Security audit | |
| if: steps.changes.outputs.app == 'true' | |
| run: npm audit --omit=dev --audit-level=high | |
| - name: Validate module manifests | |
| if: steps.changes.outputs.app == 'true' | |
| run: npm run validate:modules | |
| - name: Run linting | |
| if: steps.changes.outputs.app == 'true' | |
| run: npm run lint | |
| - name: Run tests | |
| if: steps.changes.outputs.app == 'true' | |
| run: npm test | |
| - name: Validate OpenAPI spec | |
| if: steps.changes.outputs.app == 'true' | |
| run: npm run validate:openapi | |
| - name: Build | |
| if: steps.changes.outputs.app == 'true' | |
| run: npm run build | |
| - name: Install kustomize | |
| if: steps.changes.outputs.deploy == 'true' | |
| uses: imranismail/setup-kustomize@v3 | |
| with: | |
| kustomize-version: '5.8.1' | |
| - name: Validate kustomize overlays | |
| if: steps.changes.outputs.deploy == 'true' | |
| run: | | |
| for overlay in deploy/openshift/overlays/*/; do | |
| name=$(basename "$overlay") | |
| echo "=== Validating overlay: $name ===" | |
| kustomize build "$overlay" > /dev/null | |
| done | |
| smoke-test-core: | |
| name: Core Smoke Tests | |
| runs-on: ubuntu-latest | |
| needs: test | |
| if: needs.test.outputs.app == 'true' | |
| permissions: | |
| contents: read | |
| env: | |
| CONTAINER_RUNTIME: docker | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v7 | |
| - name: Build core backend image | |
| run: make build-core-backend-image | |
| - name: Build core frontend image | |
| run: make build-core-frontend-image | |
| - name: Run core smoke tests | |
| run: make smoke-test-core | |
| smoke-test-ai-eng: | |
| name: AI Eng Smoke Tests | |
| runs-on: ubuntu-latest | |
| needs: test | |
| if: needs.test.outputs.app == 'true' | |
| permissions: | |
| contents: read | |
| env: | |
| CONTAINER_RUNTIME: docker | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v7 | |
| - name: Build core base images (needed for AI Eng FROM) | |
| run: make build-core-base-images | |
| - name: Build AI Eng images | |
| run: | | |
| make build-backend-image | |
| make build-frontend-image | |
| - name: Run AI Eng smoke tests | |
| run: make smoke-test |