diff --git a/.github/workflows/ci-create-app-e2e-hello-world.yaml b/.github/workflows/ci-create-app-e2e-hello-world.yaml index 7d6e13e134f..a0b9a54c088 100644 --- a/.github/workflows/ci-create-app-e2e-hello-world.yaml +++ b/.github/workflows/ci-create-app-e2e-hello-world.yaml @@ -34,8 +34,27 @@ jobs: if: needs.changed-files-check.outputs.any_changed == 'true' timeout-minutes: 30 runs-on: ubuntu-latest-4-cores + 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 env: PUBLISHABLE_PACKAGES: twenty-client-sdk twenty-sdk create-twenty-app + TWENTY_API_URL: http://localhost:3000 + TWENTY_API_KEY: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyMDIwMjAyMC1lNmI1LTQ2ODAtOGEzMi1iODIwOTczNzE1NmIiLCJ1c2VySWQiOiIyMDIwMjAyMC1lNmI1LTQ2ODAtOGEzMi1iODIwOTczNzE1NmIiLCJ3b3Jrc3BhY2VJZCI6IjIwMjAyMDIwLTFjMjUtNGQwMi1iZjI1LTZhZWNjZjdlYTQxOSIsIndvcmtzcGFjZU1lbWJlcklkIjoiMjAyMDIwMjAtNDYzZi00MzViLTgyOGMtMTA3ZTAwN2EyNzExIiwidXNlcldvcmtzcGFjZUlkIjoiMjAyMDIwMjAtMWU3Yy00M2Q5LWE1ZGItNjg1YjUwNjlkODE2IiwidHlwZSI6IkFDQ0VTUyIsImF1dGhQcm92aWRlciI6InBhc3N3b3JkIiwiaWF0IjoxNzUxMjgxNzA0LCJleHAiOjIwNjY4NTc3MDR9.HMGqCsVlOAPVUBhKSGlD1X86VoHKt4LIUtET3CGIdik steps: - name: Fetch custom Github Actions and base branch history uses: actions/checkout@v4 @@ -120,14 +139,19 @@ jobs: cd /tmp/e2e-test-workspace/test-app npx --no-install twenty --version - - name: Spawn Twenty test instance - id: twenty - uses: ./.github/actions/spawn-twenty-app-dev-test + - name: Create test database + run: PGPASSWORD=postgres psql -h localhost -p 5432 -U postgres -d postgres -c 'CREATE DATABASE "test";' + + - name: Setup database and start server + run: npx nx run twenty-server:database:reset && nohup npx nx start:ci twenty-server & + + - name: Wait for server to be ready + run: npx wait-on http://localhost:3000/healthz --timeout 120000 --interval 1000 - name: Authenticate with twenty-server run: | cd /tmp/e2e-test-workspace/test-app - npx --no-install twenty remote add --api-key ${{ steps.twenty.outputs.api-key }} --api-url ${{ steps.twenty.outputs.server-url }} + npx --no-install twenty remote add --api-key ${{ env.TWENTY_API_KEY }} --api-url ${{ env.TWENTY_API_URL }} - name: Deploy scaffolded app run: | @@ -154,9 +178,6 @@ jobs: echo "$EXEC_OUTPUT" | grep -q 'Created company.*Hello World.*with id' - name: Run scaffolded app integration test - env: - TWENTY_API_URL: ${{ steps.twenty.outputs.server-url }} - TWENTY_API_KEY: ${{ steps.twenty.outputs.api-key }} run: | cd /tmp/e2e-test-workspace/test-app yarn test diff --git a/.github/workflows/ci-create-app-e2e-minimal.yaml b/.github/workflows/ci-create-app-e2e-minimal.yaml index 9d728591515..f2d3f797e7b 100644 --- a/.github/workflows/ci-create-app-e2e-minimal.yaml +++ b/.github/workflows/ci-create-app-e2e-minimal.yaml @@ -32,8 +32,27 @@ jobs: if: needs.changed-files-check.outputs.any_changed == 'true' timeout-minutes: 30 runs-on: ubuntu-latest-4-cores + 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 env: PUBLISHABLE_PACKAGES: twenty-client-sdk twenty-sdk create-twenty-app + TWENTY_API_URL: http://localhost:3000 + TWENTY_API_KEY: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyMDIwMjAyMC1lNmI1LTQ2ODAtOGEzMi1iODIwOTczNzE1NmIiLCJ1c2VySWQiOiIyMDIwMjAyMC1lNmI1LTQ2ODAtOGEzMi1iODIwOTczNzE1NmIiLCJ3b3Jrc3BhY2VJZCI6IjIwMjAyMDIwLTFjMjUtNGQwMi1iZjI1LTZhZWNjZjdlYTQxOSIsIndvcmtzcGFjZU1lbWJlcklkIjoiMjAyMDIwMjAtNDYzZi00MzViLTgyOGMtMTA3ZTAwN2EyNzExIiwidXNlcldvcmtzcGFjZUlkIjoiMjAyMDIwMjAtMWU3Yy00M2Q5LWE1ZGItNjg1YjUwNjlkODE2IiwidHlwZSI6IkFDQ0VTUyIsImF1dGhQcm92aWRlciI6InBhc3N3b3JkIiwiaWF0IjoxNzUxMjgxNzA0LCJleHAiOjIwNjY4NTc3MDR9.HMGqCsVlOAPVUBhKSGlD1X86VoHKt4LIUtET3CGIdik steps: - name: Fetch custom Github Actions and base branch history uses: actions/checkout@v4 @@ -114,14 +133,19 @@ jobs: cd /tmp/e2e-test-workspace/test-app npx --no-install twenty --version - - name: Spawn Twenty test instance - id: twenty - uses: ./.github/actions/spawn-twenty-app-dev-test + - name: Create test database + run: PGPASSWORD=postgres psql -h localhost -p 5432 -U postgres -d postgres -c 'CREATE DATABASE "test";' + + - name: Setup database and start server + run: npx nx run twenty-server:database:reset && nohup npx nx start:ci twenty-server & + + - name: Wait for server to be ready + run: npx wait-on http://localhost:3000/healthz --timeout 120000 --interval 1000 - name: Authenticate with twenty-server run: | cd /tmp/e2e-test-workspace/test-app - npx --no-install twenty remote add --api-key ${{ steps.twenty.outputs.api-key }} --api-url ${{ steps.twenty.outputs.server-url }} + npx --no-install twenty remote add --api-key ${{ env.TWENTY_API_KEY }} --api-url ${{ env.TWENTY_API_URL }} - name: Deploy scaffolded app run: | @@ -134,9 +158,6 @@ jobs: npx --no-install twenty install - name: Run scaffolded app integration test - env: - TWENTY_API_URL: ${{ steps.twenty.outputs.server-url }} - TWENTY_API_KEY: ${{ steps.twenty.outputs.api-key }} run: | cd /tmp/e2e-test-workspace/test-app yarn test diff --git a/.github/workflows/ci-create-app-e2e-postcard.yaml b/.github/workflows/ci-create-app-e2e-postcard.yaml index b38812d4834..f52963d4152 100644 --- a/.github/workflows/ci-create-app-e2e-postcard.yaml +++ b/.github/workflows/ci-create-app-e2e-postcard.yaml @@ -34,8 +34,27 @@ jobs: if: needs.changed-files-check.outputs.any_changed == 'true' timeout-minutes: 30 runs-on: ubuntu-latest-4-cores + 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 env: PUBLISHABLE_PACKAGES: twenty-client-sdk twenty-sdk create-twenty-app + TWENTY_API_URL: http://localhost:3000 + TWENTY_API_KEY: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyMDIwMjAyMC1lNmI1LTQ2ODAtOGEzMi1iODIwOTczNzE1NmIiLCJ1c2VySWQiOiIyMDIwMjAyMC1lNmI1LTQ2ODAtOGEzMi1iODIwOTczNzE1NmIiLCJ3b3Jrc3BhY2VJZCI6IjIwMjAyMDIwLTFjMjUtNGQwMi1iZjI1LTZhZWNjZjdlYTQxOSIsIndvcmtzcGFjZU1lbWJlcklkIjoiMjAyMDIwMjAtNDYzZi00MzViLTgyOGMtMTA3ZTAwN2EyNzExIiwidXNlcldvcmtzcGFjZUlkIjoiMjAyMDIwMjAtMWU3Yy00M2Q5LWE1ZGItNjg1YjUwNjlkODE2IiwidHlwZSI6IkFDQ0VTUyIsImF1dGhQcm92aWRlciI6InBhc3N3b3JkIiwiaWF0IjoxNzUxMjgxNzA0LCJleHAiOjIwNjY4NTc3MDR9.HMGqCsVlOAPVUBhKSGlD1X86VoHKt4LIUtET3CGIdik steps: - name: Fetch custom Github Actions and base branch history uses: actions/checkout@v4 @@ -118,14 +137,19 @@ jobs: cd /tmp/e2e-test-workspace/test-app npx --no-install twenty --version - - name: Spawn Twenty test instance - id: twenty - uses: ./.github/actions/spawn-twenty-app-dev-test + - name: Create test database + run: PGPASSWORD=postgres psql -h localhost -p 5432 -U postgres -d postgres -c 'CREATE DATABASE "test";' + + - name: Setup database and start server + run: npx nx run twenty-server:database:reset && nohup npx nx start:ci twenty-server & + + - name: Wait for server to be ready + run: npx wait-on http://localhost:3000/healthz --timeout 120000 --interval 1000 - name: Authenticate with twenty-server run: | cd /tmp/e2e-test-workspace/test-app - npx --no-install twenty remote add --api-key ${{ steps.twenty.outputs.api-key }} --api-url ${{ steps.twenty.outputs.server-url }} + npx --no-install twenty remote add --api-key ${{ env.TWENTY_API_KEY }} --api-url ${{ env.TWENTY_API_URL }} - name: Deploy scaffolded app run: | @@ -152,9 +176,6 @@ jobs: echo "$EXEC_OUTPUT" | grep -q 'Created company.*Hello World.*with id' - name: Run scaffolded app integration test - env: - TWENTY_API_URL: ${{ steps.twenty.outputs.server-url }} - TWENTY_API_KEY: ${{ steps.twenty.outputs.api-key }} run: | cd /tmp/e2e-test-workspace/test-app yarn test diff --git a/.github/workflows/ci-example-app-hello-world.yaml b/.github/workflows/ci-example-app-hello-world.yaml index f53015fcf7f..9e255805c90 100644 --- a/.github/workflows/ci-example-app-hello-world.yaml +++ b/.github/workflows/ci-example-app-hello-world.yaml @@ -30,8 +30,28 @@ jobs: example-app-hello-world: needs: changed-files-check if: needs.changed-files-check.outputs.any_changed == 'true' - timeout-minutes: 15 + timeout-minutes: 30 runs-on: ubuntu-latest + 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 + env: + TWENTY_API_URL: http://localhost:3000 + TWENTY_API_KEY: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyMDIwMjAyMC1lNmI1LTQ2ODAtOGEzMi1iODIwOTczNzE1NmIiLCJ1c2VySWQiOiIyMDIwMjAyMC1lNmI1LTQ2ODAtOGEzMi1iODIwOTczNzE1NmIiLCJ3b3Jrc3BhY2VJZCI6IjIwMjAyMDIwLTFjMjUtNGQwMi1iZjI1LTZhZWNjZjdlYTQxOSIsIndvcmtzcGFjZU1lbWJlcklkIjoiMjAyMDIwMjAtNDYzZi00MzViLTgyOGMtMTA3ZTAwN2EyNzExIiwidXNlcldvcmtzcGFjZUlkIjoiMjAyMDIwMjAtMWU3Yy00M2Q5LWE1ZGItNjg1YjUwNjlkODE2IiwidHlwZSI6IkFDQ0VTUyIsImF1dGhQcm92aWRlciI6InBhc3N3b3JkIiwiaWF0IjoxNzUxMjgxNzA0LCJleHAiOjIwNjY4NTc3MDR9.HMGqCsVlOAPVUBhKSGlD1X86VoHKt4LIUtET3CGIdik steps: - name: Checkout uses: actions/checkout@v4 @@ -42,15 +62,17 @@ jobs: - name: Build SDK packages run: npx nx build twenty-sdk - - name: Spawn Twenty test instance - id: twenty - uses: ./.github/actions/spawn-twenty-app-dev-test + - name: Create test database + run: PGPASSWORD=postgres psql -h localhost -p 5432 -U postgres -d postgres -c 'CREATE DATABASE "test";' + + - name: Setup database and start server + run: npx nx run twenty-server:database:reset && nohup npx nx start:ci twenty-server & + + - name: Wait for server to be ready + run: npx wait-on http://localhost:3000/healthz --timeout 120000 --interval 1000 - name: Run integration tests working-directory: packages/twenty-apps/examples/hello-world - env: - TWENTY_API_URL: ${{ steps.twenty.outputs.server-url }} - TWENTY_API_KEY: ${{ steps.twenty.outputs.api-key }} run: npx vitest run ci-example-app-hello-world-status-check: diff --git a/.github/workflows/ci-example-app-postcard.yaml b/.github/workflows/ci-example-app-postcard.yaml index a4dfe3309ab..db35918b9a9 100644 --- a/.github/workflows/ci-example-app-postcard.yaml +++ b/.github/workflows/ci-example-app-postcard.yaml @@ -30,8 +30,28 @@ jobs: example-app-postcard: needs: changed-files-check if: needs.changed-files-check.outputs.any_changed == 'true' - timeout-minutes: 15 + timeout-minutes: 30 runs-on: ubuntu-latest + 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 + env: + TWENTY_API_URL: http://localhost:3000 + TWENTY_API_KEY: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyMDIwMjAyMC1lNmI1LTQ2ODAtOGEzMi1iODIwOTczNzE1NmIiLCJ1c2VySWQiOiIyMDIwMjAyMC1lNmI1LTQ2ODAtOGEzMi1iODIwOTczNzE1NmIiLCJ3b3Jrc3BhY2VJZCI6IjIwMjAyMDIwLTFjMjUtNGQwMi1iZjI1LTZhZWNjZjdlYTQxOSIsIndvcmtzcGFjZU1lbWJlcklkIjoiMjAyMDIwMjAtNDYzZi00MzViLTgyOGMtMTA3ZTAwN2EyNzExIiwidXNlcldvcmtzcGFjZUlkIjoiMjAyMDIwMjAtMWU3Yy00M2Q5LWE1ZGItNjg1YjUwNjlkODE2IiwidHlwZSI6IkFDQ0VTUyIsImF1dGhQcm92aWRlciI6InBhc3N3b3JkIiwiaWF0IjoxNzUxMjgxNzA0LCJleHAiOjIwNjY4NTc3MDR9.HMGqCsVlOAPVUBhKSGlD1X86VoHKt4LIUtET3CGIdik steps: - name: Checkout uses: actions/checkout@v4 @@ -42,15 +62,17 @@ jobs: - name: Build SDK packages run: npx nx build twenty-sdk - - name: Spawn Twenty test instance - id: twenty - uses: ./.github/actions/spawn-twenty-app-dev-test + - name: Create test database + run: PGPASSWORD=postgres psql -h localhost -p 5432 -U postgres -d postgres -c 'CREATE DATABASE "test";' + + - name: Setup database and start server + run: npx nx run twenty-server:database:reset && nohup npx nx start:ci twenty-server & + + - name: Wait for server to be ready + run: npx wait-on http://localhost:3000/healthz --timeout 120000 --interval 1000 - name: Run integration tests working-directory: packages/twenty-apps/examples/postcard - env: - TWENTY_API_URL: ${{ steps.twenty.outputs.server-url }} - TWENTY_API_KEY: ${{ steps.twenty.outputs.api-key }} run: npx vitest run ci-example-app-postcard-status-check: