# SPDX-FileCopyrightText: 2026 Progmasoft # SPDX-License-Identifier: AGPL-3.0-or-later WITH AdditionRef-Progmasoft-Patent-Grant-1.1 name: Frontend on: push: branches: [main] paths: - "apps/web/**" - "package.json" - "pnpm-lock.yaml" - "pnpm-workspace.yaml" - ".github/workflows/frontend.yml" pull_request: paths: - "apps/web/**" - "package.json" - "pnpm-lock.yaml" - "pnpm-workspace.yaml" - ".github/workflows/frontend.yml" workflow_dispatch: permissions: contents: read concurrency: group: frontend-${{ github.ref }} cancel-in-progress: true jobs: verify: runs-on: ubuntu-latest timeout-minutes: 15 steps: - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6 with: persist-credentials: false - uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5 with: version: 11.24.0 run_install: false - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6 with: node-version: 24 cache: pnpm - run: pnpm install --frozen-lockfile - run: pnpm check - run: pnpm test:coverage - run: pnpm lint - run: pnpm build - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: progmaweb-frontend-coverage path: apps/web/coverage/lcov.info if-no-files-found: error retention-days: 1 upload-coverage: needs: verify # Fork PR code is untrusted and must never receive an OIDC-capable job. if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository runs-on: ubuntu-latest timeout-minutes: 10 permissions: id-token: write steps: - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: name: progmaweb-frontend-coverage path: coverage - uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0 with: use_oidc: true files: coverage/lcov.info flags: progmaweb-frontend fail_ci_if_error: true