Skip to content

Enhance backend and CI configurations; introduce environment management #33

Enhance backend and CI configurations; introduce environment management

Enhance backend and CI configurations; introduce environment management #33

Workflow file for this run

name: CI
# Trigger on PRs and pushes to main
on:
pull_request:
branches: [main]
push:
branches: [main]
paths-ignore:
- "**.md"
- ".github/*.md"
- "docs/**"
- "LICENSE"
# Prevent multiple concurrent runs of the same workflow
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# Define permissions needed for the workflow
permissions:
contents: read
pull-requests: write
checks: write
id-token: write # Needed for codecov
jobs:
validate:
name: Validate
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [20]
fail-fast: false
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup environment
uses: ./.github/actions/prepare
- name: Cache dependencies
uses: actions/cache@v4
with:
path: |
**/node_modules
~/.pnpm-store
key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-
- name: Type check
run: pnpm tsc
- name: Lint Backend
run: pnpm lint:backend
- name: Lint Frontend
run: pnpm lint:frontend
- name: Check formatting
run: pnpm format --check
- name: Check dependencies (Knip)
run: pnpm lint:knip || true # Allow warnings for now
test:
name: Test
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [20]
fail-fast: false
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup environment
uses: ./.github/actions/prepare
- name: Cache dependencies
uses: actions/cache@v4
with:
path: |
**/node_modules
~/.pnpm-store
key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-
- name: Run backend tests
run: pnpm --filter backend test:coverage
env:
CI: true
- name: Run frontend tests
run: pnpm --filter frontend test:coverage
env:
CI: true
- name: Upload backend coverage
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
flags: backend
directory: ./apps/backend/coverage
fail_ci_if_error: true
- name: Upload frontend coverage
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
flags: frontend
directory: ./apps/frontend/coverage
fail_ci_if_error: true
build:
name: Build
runs-on: ubuntu-latest
needs: [validate, test]
strategy:
matrix:
node-version: [20]
fail-fast: false
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup environment
uses: ./.github/actions/prepare
- name: Cache dependencies
uses: actions/cache@v4
with:
path: |
**/node_modules
~/.pnpm-store
key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-
- name: Build applications
run: pnpm build
- name: Test backend build
run: NODE_ENV=production node apps/backend/dist/index.js