docs: update readme with current tech stack and github actions badge … #112
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: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| ci: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| - uses: pnpm/action-setup@v4 | |
| with: | |
| version: 10 | |
| - uses: actions/setup-node@v6 | |
| with: | |
| node-version: 24 | |
| cache: pnpm | |
| - uses: actions/setup-dotnet@v5 | |
| with: | |
| dotnet-version: 10.0.x | |
| - name: Install dotnet-coverage | |
| run: pnpm dotnet:coverage | |
| - name: Install dependencies | |
| run: pnpm install --frozen-lockfile | |
| - name: Set Nx base for affected commands (PR only) | |
| if: github.event_name == 'pull_request' | |
| run: echo "NX_BASE=origin/${{ github.base_ref }}" >> $GITHUB_ENV | |
| - name: Lint | |
| run: | | |
| if [ "${{ github.event_name }}" = "pull_request" ]; then | |
| pnpm nx affected --target=lint --base=$NX_BASE | |
| else | |
| pnpm lint:all | |
| fi | |
| - name: Test | |
| run: | | |
| if [ "${{ github.event_name }}" = "pull_request" ]; then | |
| pnpm nx affected --target=test --base=$NX_BASE | |
| else | |
| pnpm test:all | |
| fi | |
| - name: Build | |
| run: | | |
| if [ "${{ github.event_name }}" = "pull_request" ]; then | |
| pnpm nx affected --target=build --base=$NX_BASE | |
| else | |
| pnpm build:prod | |
| fi | |
| - name: Upload coverage report | |
| if: always() | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: coverage | |
| path: coverage/ | |
| if-no-files-found: ignore | |
| - name: Upload test results | |
| if: always() | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: test-results | |
| path: junit/ | |
| if-no-files-found: ignore | |
| - name: Coverage summary | |
| if: always() | |
| uses: irongut/CodeCoverageSummary@v1.3.0 | |
| with: | |
| filename: coverage/**/cobertura-coverage.xml | |
| badge: true | |
| fail_below_min: false | |
| format: markdown | |
| output: both | |
| thresholds: '60 80' | |
| - name: Annotate coverage report | |
| if: always() && github.event_name == 'pull_request' | |
| run: | | |
| echo "> [!NOTE]" > coverage-note.md | |
| echo "> Coverage shown for **affected projects only**. Per-file thresholds (80%) are enforced by vitest." >> coverage-note.md | |
| echo "" >> coverage-note.md | |
| cat code-coverage-results.md >> coverage-note.md | |
| mv coverage-note.md code-coverage-results.md | |
| - name: Write coverage to job summary | |
| if: always() | |
| run: cat code-coverage-results.md >> $GITHUB_STEP_SUMMARY | |
| - name: Add coverage PR comment | |
| if: always() && github.event_name == 'pull_request' | |
| uses: marocchino/sticky-pull-request-comment@v2 | |
| with: | |
| recreate: true | |
| path: code-coverage-results.md |