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-setup: 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 redis: image: redis ports: - 6379:6379 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 Task 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 / Build run: npx nx build twenty-server - name: Server / Write .env run: npx nx reset:env twenty-server - name: Worker / Run run: npx nx run twenty-server:worker:ci server-test: runs-on: ubuntu-latest needs: server-setup env: NX_REJECT_UNKNOWN_LOCAL_CACHE: 0 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 Task Cache uses: ./.github/workflows/actions/task-cache with: tag: scope:backend - name: Server / Run Tests uses: ./.github/workflows/actions/nx-affected with: tag: scope:backend tasks: test server-integration-test: runs-on: ubuntu-latest needs: server-setup services: postgres: image: twentycrm/twenty-postgres env: POSTGRES_PASSWORD: postgres POSTGRES_USER: postgres ports: - 5432:5432 redis: image: redis ports: - 6379:6379 env: NX_REJECT_UNKNOWN_LOCAL_CACHE: 0 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 Task Cache uses: ./.github/workflows/actions/task-cache with: tag: scope:backend - name: Server / Run Integration Tests uses: ./.github/workflows/actions/nx-affected with: tag: scope:backend tasks: "test:integration" - name: Server / Upload reset-logs file if: always() uses: actions/upload-artifact@v4 with: name: reset-logs path: reset-logs.log