chore(deps-dev): bump @types/node from 25.6.0 to 26.1.0 in the npm-types group across 1 directory #1317
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: [master, main] | |
| push: | |
| branches: [master] | |
| workflow_dispatch: # manual trigger from Actions UI | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read | |
| jobs: | |
| changes: | |
| name: Detect changes | |
| runs-on: ubuntu-latest | |
| outputs: | |
| go: ${{ steps.filter.outputs.go }} | |
| frontend: ${{ steps.filter.outputs.frontend }} | |
| registry: ${{ steps.filter.outputs.registry }} | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: dorny/paths-filter@v4 | |
| id: filter | |
| with: | |
| filters: | | |
| go: | |
| - '**/*.go' | |
| - '**/*.proto' | |
| - '**/*.sql' | |
| - '**/go.mod' | |
| - '**/go.sum' | |
| - 'Makefile' | |
| - 'pkg/proto/**' | |
| - '.golangci.yml' | |
| - '.golangci-baseline' | |
| frontend: | |
| - '**/*.ts' | |
| - '**/*.tsx' | |
| - '**/*.svelte' | |
| - '**/*.js' | |
| - '**/*.json' | |
| - 'pnpm-lock.yaml' | |
| registry: | |
| - 'docs/platform-features.yaml' | |
| - 'scripts/registry/**' | |
| - 'pkg/graphql/schema.graphql' | |
| - 'api_gateway/internal/mcp/tools/**' | |
| - 'website_application/src/routes/**' | |
| - 'website_application/src/lib/features/registry.json' | |
| - 'website_docs/src/content/docs/**' | |
| - 'Makefile' | |
| go-build: | |
| name: Go build | |
| needs: changes | |
| if: needs.changes.outputs.go == 'true' || github.event_name == 'workflow_dispatch' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions/setup-go@v6 | |
| with: | |
| go-version-file: .go-version | |
| env: | |
| GOTOOLCHAIN: local | |
| - name: Install protoc | |
| run: | | |
| curl -fsSL https://github.com/protocolbuffers/protobuf/releases/download/v35.0/protoc-35.0-linux-x86_64.zip -o /tmp/protoc.zip | |
| sudo unzip -o /tmp/protoc.zip -d /usr/local bin/protoc 'include/*' | |
| rm /tmp/protoc.zip | |
| - name: Install Go protoc plugins | |
| run: | | |
| go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.36.11 | |
| go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.6.2 | |
| - name: Install gqlgen | |
| run: go install github.com/99designs/gqlgen@v0.17.86 | |
| - name: Check proto codegen is up to date | |
| run: | | |
| make proto | |
| if ! git diff --quiet pkg/proto/; then | |
| echo "ERROR: generated proto files are out of date. Run 'make proto' and commit the result." | |
| git diff --stat pkg/proto/ | |
| exit 1 | |
| fi | |
| - run: make build | |
| env: | |
| CGO_ENABLED: "1" | |
| go-test: | |
| name: Go test + coverage | |
| needs: changes | |
| if: needs.changes.outputs.go == 'true' || github.event_name == 'workflow_dispatch' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions/setup-go@v6 | |
| with: | |
| go-version-file: .go-version | |
| env: | |
| GOTOOLCHAIN: local | |
| - name: Install protoc | |
| run: | | |
| curl -fsSL https://github.com/protocolbuffers/protobuf/releases/download/v35.0/protoc-35.0-linux-x86_64.zip -o /tmp/protoc.zip | |
| sudo unzip -o /tmp/protoc.zip -d /usr/local bin/protoc 'include/*' | |
| rm /tmp/protoc.zip | |
| - name: Install Go protoc plugins | |
| run: | | |
| go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.36.11 | |
| go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.6.2 | |
| - name: Install gqlgen | |
| run: go install github.com/99designs/gqlgen@v0.17.86 | |
| - name: Run tests with JUnit output | |
| run: make test-junit | |
| env: | |
| CGO_ENABLED: "1" | |
| - name: Generate coverage | |
| run: make coverage | |
| env: | |
| CGO_ENABLED: "1" | |
| - name: Upload Go test results to Codecov | |
| if: ${{ !cancelled() }} | |
| timeout-minutes: 5 | |
| continue-on-error: true | |
| uses: codecov/codecov-action@v6 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| files: ./test-results/go-junit.xml | |
| flags: go | |
| report_type: test_results | |
| - name: Print coverage summary | |
| run: | | |
| echo "=== Go Coverage Summary ===" | |
| if [ -f coverage/coverage.out ]; then | |
| go tool cover -func=coverage/coverage.out | tail -1 | |
| else | |
| echo "No coverage data found" | |
| fi | |
| - name: Upload Go coverage | |
| if: always() | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: go-coverage | |
| path: coverage/ | |
| if-no-files-found: warn | |
| - name: Upload to Codecov | |
| timeout-minutes: 5 | |
| continue-on-error: true | |
| uses: codecov/codecov-action@v6 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| files: coverage/coverage.out | |
| flags: go | |
| name: go-coverage | |
| fail_ci_if_error: false | |
| go-lint: | |
| name: Go lint | |
| needs: changes | |
| if: needs.changes.outputs.go == 'true' || github.event_name == 'workflow_dispatch' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| - uses: actions/setup-go@v6 | |
| with: | |
| go-version-file: .go-version | |
| env: | |
| GOTOOLCHAIN: local | |
| - name: Install golangci-lint | |
| run: go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.9.0 | |
| - name: Read baseline commit | |
| id: baseline | |
| run: | | |
| if [ -f .golangci-baseline ]; then | |
| echo "rev=$(cat .golangci-baseline)" >> $GITHUB_OUTPUT | |
| else | |
| echo "rev=" >> $GITHUB_OUTPUT | |
| fi | |
| - name: Run golangci-lint | |
| run: | | |
| BASELINE="${{ steps.baseline.outputs.rev }}" | |
| BASELINE_ARG="" | |
| if [ -n "$BASELINE" ]; then | |
| BASELINE_ARG="--new-from-rev=$BASELINE" | |
| fi | |
| failed=0 | |
| for dir in $(find . -name "go.mod" -exec dirname {} \;); do | |
| echo "==> Linting $dir" | |
| (cd "$dir" && golangci-lint run --timeout=5m $BASELINE_ARG ./...) || failed=1 | |
| done | |
| if [ $failed -eq 1 ]; then | |
| exit 1 | |
| fi | |
| - name: Generate lint report | |
| if: always() | |
| run: | | |
| mkdir -p reports | |
| ./scripts/lint-report.sh || true | |
| - name: Upload lint report | |
| if: always() | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: go-lint-report | |
| path: reports/ | |
| if-no-files-found: ignore | |
| frontend-lint: | |
| name: Frontend lint | |
| needs: changes | |
| if: needs.changes.outputs.frontend == 'true' || github.event_name == 'workflow_dispatch' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: ./.github/actions/setup-node-pnpm | |
| - run: pnpm lint | |
| - run: pnpm format:check | |
| frontend-test: | |
| name: Frontend test + coverage | |
| needs: changes | |
| if: needs.changes.outputs.frontend == 'true' || github.event_name == 'workflow_dispatch' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: ./.github/actions/setup-node-pnpm | |
| - name: Generate SvelteKit types | |
| run: pnpm --filter frameworks-frontend exec svelte-kit sync | |
| - run: pnpm test:coverage | |
| - name: Upload frontend coverage | |
| if: always() | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: frontend-coverage | |
| path: | | |
| **/coverage/** | |
| **/lcov.info | |
| if-no-files-found: warn | |
| - name: Upload to Codecov | |
| timeout-minutes: 5 | |
| continue-on-error: true | |
| uses: codecov/codecov-action@v6 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| files: ./**/lcov.info | |
| flags: frontend | |
| name: frontend-coverage | |
| fail_ci_if_error: false | |
| - name: Upload frontend test results to Codecov | |
| if: ${{ !cancelled() }} | |
| timeout-minutes: 5 | |
| continue-on-error: true | |
| uses: codecov/codecov-action@v6 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| files: ./npm_player/packages/core/test-results/junit.xml,./npm_player/packages/react/test-results/junit.xml,./npm_player/packages/svelte/test-results/junit.xml,./npm_studio/packages/core/test-results/junit.xml,./npm_studio/packages/react/test-results/junit.xml,./npm_studio/packages/svelte/test-results/junit.xml,./website_application/test-results/junit.xml | |
| flags: frontend | |
| report_type: test_results | |
| frontend-build: | |
| name: Frontend build | |
| needs: [changes, frontend-lint, frontend-test] | |
| if: needs.changes.outputs.frontend == 'true' || github.event_name == 'workflow_dispatch' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: ./.github/actions/setup-node-pnpm | |
| - name: Build with bundle analysis | |
| run: pnpm build | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| feature-registry: | |
| name: Feature registry | |
| needs: changes | |
| if: needs.changes.outputs.registry == 'true' || github.event_name == 'workflow_dispatch' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions/setup-go@v6 | |
| with: | |
| go-version-file: .go-version | |
| env: | |
| GOTOOLCHAIN: local | |
| - run: make verify-feature-registry | |
| codecov-notify: | |
| name: Codecov notify | |
| needs: [go-test, frontend-test, frontend-build] | |
| if: always() | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Send Codecov notifications | |
| uses: codecov/codecov-action@v6 | |
| with: | |
| run_command: send-notifications | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| ci-passed: | |
| name: CI passed | |
| needs: | |
| [ | |
| changes, | |
| go-build, | |
| go-test, | |
| go-lint, | |
| frontend-lint, | |
| frontend-test, | |
| frontend-build, | |
| feature-registry, | |
| ] | |
| if: always() | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Summarize results | |
| run: | | |
| echo '${{ toJSON(needs) }}' | jq -r 'to_entries[] | "\(.key): \(.value.result)"' | |
| - name: Fail if any required job failed/cancelled | |
| run: | | |
| results='${{ toJSON(needs) }}' | |
| if echo "$results" | jq -e 'to_entries | any(.value.result == "failure" or .value.result == "cancelled")' >/dev/null; then | |
| echo "One or more jobs failed/cancelled" | |
| exit 1 | |
| fi | |
| echo "All required jobs succeeded or were skipped" |