name: CI Server
on:
  push:
    branches:
      - main
    paths:
      - 'package.json'
      - 'packages/twenty-server/**'
      - 'packages/twenty-emails/**'
  pull_request:
    paths:
      - 'package.json'
      - 'packages/twenty-server/**'
      - 'packages/twenty-emails/**'
concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  server-test:
    runs-on: ubuntu-latest
    env:
      NX_REJECT_UNKNOWN_LOCAL_CACHE: 0
    services:
      postgres:
        image: twentycrm/twenty-postgres
        env:
          POSTGRES_PASSWORD: postgres
          POSTGRES_USER: postgres
        ports:
          - 5432:5432
    steps:
      - name: Fetch custom Github Actions and base branch history
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - name: Install dependencies
        uses: ./.github/workflows/actions/yarn-install
      - name: Server / Restore Tasks Cache
        uses: ./.github/workflows/actions/task-cache
        with:
          tag: scope:backend
      - name: Server / Run lint & typecheck
        uses: ./.github/workflows/actions/nx-affected
        with:
          tag: scope:backend
          tasks: lint,typecheck
      - name: Server / Run tests
        uses: ./.github/workflows/actions/nx-affected
        with:
          tag: scope:backend
          tasks: test
      - name: Server / Build
        run: npx nx build twenty-server
      - name: Server / Write .env
        run: npx nx reset:env twenty-server
      - name: Worker / Run
        run: MESSAGE_QUEUE_TYPE=sync npx nx worker twenty-server
