Infer record pickers for record-typed logic function workflow inputs #334
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 E2E Main | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| types: [labeled, synchronize, opened, reopened] | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} | |
| jobs: | |
| e2e-test: | |
| if: > | |
| github.event_name == 'push' || | |
| (github.event_name == 'pull_request' && | |
| contains(github.event.pull_request.labels.*.name, 'run-merge-queue')) | |
| runs-on: ubuntu-latest-8-cores | |
| timeout-minutes: 30 | |
| env: | |
| NODE_OPTIONS: "--max-old-space-size=10240" | |
| services: | |
| postgres: | |
| image: postgres:18 | |
| env: | |
| POSTGRES_USER: postgres | |
| POSTGRES_PASSWORD: postgres | |
| ports: | |
| - 5432:5432 | |
| options: >- | |
| --health-cmd pg_isready | |
| --health-interval 10s | |
| --health-timeout 5s | |
| --health-retries 5 | |
| redis: | |
| image: redis | |
| ports: | |
| - 6379:6379 | |
| steps: | |
| - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 | |
| with: | |
| fetch-depth: 10 | |
| - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 | |
| with: | |
| node-version: lts/* | |
| - name: Install dependencies | |
| uses: ./.github/actions/yarn-install | |
| - name: Restore Nx build cache | |
| uses: actions/cache/restore@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 (restore) | |
| with: | |
| key: v4-e2e-build-${{ github.ref_name }}-${{ github.sha }} | |
| restore-keys: | | |
| v4-e2e-build-${{ github.ref_name }}- | |
| v4-e2e-build-main- | |
| path: | | |
| .nx | |
| node_modules/.cache | |
| packages/*/node_modules/.cache | |
| - name: Build twenty-shared | |
| run: npx nx build twenty-shared | |
| - name: Install Playwright Browsers | |
| run: npx nx setup twenty-e2e-testing | |
| - name: Setup environment files | |
| run: | | |
| cp packages/twenty-front/.env.example packages/twenty-front/.env | |
| npx nx reset:env:e2e-testing-server twenty-server | |
| - name: Build frontend | |
| run: NODE_ENV=production npx nx build twenty-front | |
| - name: Build server | |
| run: npx nx build twenty-server | |
| - name: Save Nx build cache | |
| if: always() | |
| uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 (save) | |
| with: | |
| key: v4-e2e-build-${{ github.ref_name }}-${{ github.sha }} | |
| path: | | |
| .nx | |
| node_modules/.cache | |
| packages/*/node_modules/.cache | |
| - name: Create and setup database | |
| run: | | |
| PGPASSWORD=postgres psql -h localhost -p 5432 -U postgres -d postgres -c 'CREATE DATABASE "default";' | |
| PGPASSWORD=postgres psql -h localhost -p 5432 -U postgres -d postgres -c 'CREATE DATABASE "test";' | |
| npx nx run twenty-server:database:reset | |
| - name: Start server | |
| run: | | |
| npx nx start twenty-server & | |
| echo "Waiting for server to be ready..." | |
| timeout 60 bash -c 'until curl -s http://localhost:3000/health; do sleep 2; done' | |
| - name: Start frontend | |
| run: | | |
| npm_config_yes=true npx serve -s packages/twenty-front/build -l 3001 & | |
| echo "Waiting for frontend to be ready..." | |
| timeout 60 bash -c 'until curl -s http://localhost:3001; do sleep 2; done' | |
| - name: Start worker | |
| run: | | |
| npx nx run twenty-server:worker & | |
| echo "Worker started" | |
| - name: Run Playwright tests | |
| run: npx nx test twenty-e2e-testing | |
| - name: Upload Playwright results | |
| if: always() | |
| uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 | |
| with: | |
| name: playwright-results | |
| path: | | |
| packages/twenty-e2e-testing/run_results/ | |
| packages/twenty-e2e-testing/test-results/ | |
| retention-days: 7 | |
| ci-e2e-main-status-check: | |
| if: always() && !cancelled() | |
| timeout-minutes: 5 | |
| runs-on: ubuntu-latest | |
| needs: [e2e-test] | |
| steps: | |
| - name: Fail job if any needs failed | |
| if: contains(needs.*.result, 'failure') | |
| run: exit 1 | |
| notify-main-ci-failure: | |
| if: always() && github.event_name == 'push' && contains(needs.*.result, 'failure') | |
| timeout-minutes: 5 | |
| runs-on: ubuntu-latest | |
| needs: [e2e-test] | |
| steps: | |
| - name: Ping engineering on main CI failure | |
| run: | | |
| curl -fsS -X POST https://engineering.twenty.com/s/main-ci-failing \ | |
| -H 'Content-Type: application/json' \ | |
| -d '{ | |
| "commit": "${{ github.sha }}", | |
| "actor": "${{ github.actor }}", | |
| "run_url": "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" | |
| }' |