Skip to content

chore(deps-dev): bump @types/node from 25.6.0 to 26.1.0 in the npm-types group across 1 directory #1317

chore(deps-dev): bump @types/node from 25.6.0 to 26.1.0 in the npm-types group across 1 directory

chore(deps-dev): bump @types/node from 25.6.0 to 26.1.0 in the npm-types group across 1 directory #1317

Workflow file for this run

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"