# 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.28.11 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@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2 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@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2 with: name: progmaweb-frontend-coverage path: coverage - uses: codecov/codecov-action@303a32d7a59b442fa8d48b6a1cc6825c09c847a5 # v7.1.1 with: use_oidc: true files: coverage/lcov.info flags: progmaweb-frontend fail_ci_if_error: true