# SPDX-FileCopyrightText: 2026 Progmasoft # SPDX-License-Identifier: AGPL-3.0-or-later WITH AdditionRef-Progmasoft-Patent-Grant-1.1 name: CI on: push: branches: [main] pull_request: permissions: contents: read concurrency: group: tazel-net-${{ github.ref }} cancel-in-progress: true jobs: site: runs-on: ubuntu-latest timeout-minutes: 15 steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: node-version: 24 cache: npm - run: npm ci - run: npm run format:check - run: npm run check - run: npm run test:coverage - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: tazel-net-coverage path: coverage/lcov.info if-no-files-found: error retention-days: 1 # Every page in every language is generated; a link to a page that does not exist fails it. - run: npm run generate - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: tazel-net-site path: .output/public if-no-files-found: error retention-days: 7 dependency-review: if: github.event_name == 'pull_request' runs-on: ubuntu-latest timeout-minutes: 10 steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - uses: actions/dependency-review-action@2031cfc080254a8a887f58cffee85186f0e49e48 # v4.9.0 with: fail-on-severity: moderate coverage: # Fork PRs cannot receive the OIDC token required for Codecov uploads. if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository needs: site runs-on: ubuntu-latest timeout-minutes: 10 permissions: contents: read id-token: write steps: # Keep the OIDC-capable job apart from the package install and build. - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: name: tazel-net-coverage path: coverage - uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0 with: use_oidc: true files: coverage/lcov.info fail_ci_if_error: true required: name: CI Required if: always() needs: [site, dependency-review] runs-on: ubuntu-latest timeout-minutes: 5 steps: # Dependency Review runs only on pull requests; skipped counts as passed. - env: SITE: ${{ needs.site.result }} REVIEW: ${{ needs.dependency-review.result }} run: | test "$SITE" = success test "$REVIEW" = success || test "$REVIEW" = skipped