diff --git a/.github/workflows/unit-tests-internal.yml b/.github/workflows/unit-tests-internal.yml index eb441856b72..6f2b32f620f 100644 --- a/.github/workflows/unit-tests-internal.yml +++ b/.github/workflows/unit-tests-internal.yml @@ -16,6 +16,8 @@ jobs: name: "🧪 Unit Tests: Internal" runs-on: ubuntu-latest strategy: + # one flaky shard shouldn't cancel its siblings - lets us re-run only the failed shard + fail-fast: false matrix: shardIndex: [1, 2, 3, 4, 5, 6, 7, 8] shardTotal: [8] @@ -53,7 +55,7 @@ jobs: - name: ⬇️ Checkout repo uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: - fetch-depth: 0 + fetch-depth: 1 persist-credentials: false - name: ⎔ Setup pnpm @@ -84,8 +86,8 @@ jobs: echo "Pre-pulling Docker images with authenticated session..." docker pull postgres:14 docker pull clickhouse/clickhouse-server:25.4-alpine - docker pull redis:7-alpine - docker pull testcontainers/ryuk:0.11.0 + docker pull redis:7.2 + docker pull testcontainers/ryuk:0.14.0 docker pull electricsql/electric:1.2.4 echo "Image pre-pull complete" @@ -123,7 +125,7 @@ jobs: - name: ⬇️ Checkout repo uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: - fetch-depth: 0 + fetch-depth: 1 persist-credentials: false - name: ⎔ Setup pnpm diff --git a/.github/workflows/unit-tests-packages.yml b/.github/workflows/unit-tests-packages.yml index 6dca4681926..5251a993313 100644 --- a/.github/workflows/unit-tests-packages.yml +++ b/.github/workflows/unit-tests-packages.yml @@ -53,7 +53,7 @@ jobs: - name: ⬇️ Checkout repo uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: - fetch-depth: 0 + fetch-depth: 1 persist-credentials: false - name: ⎔ Setup pnpm @@ -84,8 +84,8 @@ jobs: echo "Pre-pulling Docker images with authenticated session..." docker pull postgres:14 docker pull clickhouse/clickhouse-server:25.4-alpine - docker pull redis:7-alpine - docker pull testcontainers/ryuk:0.11.0 + docker pull redis:7.2 + docker pull testcontainers/ryuk:0.14.0 docker pull electricsql/electric:1.2.4 echo "Image pre-pull complete" @@ -123,7 +123,7 @@ jobs: - name: ⬇️ Checkout repo uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: - fetch-depth: 0 + fetch-depth: 1 persist-credentials: false - name: ⎔ Setup pnpm diff --git a/.github/workflows/unit-tests-webapp.yml b/.github/workflows/unit-tests-webapp.yml index 8c38e325359..3517afbba49 100644 --- a/.github/workflows/unit-tests-webapp.yml +++ b/.github/workflows/unit-tests-webapp.yml @@ -16,6 +16,8 @@ jobs: name: "🧪 Unit Tests: Webapp" runs-on: ubuntu-latest strategy: + # one flaky shard shouldn't cancel its siblings - lets us re-run only the failed shard + fail-fast: false matrix: shardIndex: [1, 2, 3, 4, 5, 6, 7, 8] shardTotal: [8] @@ -53,7 +55,7 @@ jobs: - name: ⬇️ Checkout repo uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: - fetch-depth: 0 + fetch-depth: 1 persist-credentials: false - name: ⎔ Setup pnpm @@ -84,9 +86,10 @@ jobs: echo "Pre-pulling Docker images with authenticated session..." docker pull postgres:14 docker pull clickhouse/clickhouse-server:25.4-alpine - docker pull redis:7-alpine - docker pull testcontainers/ryuk:0.11.0 + docker pull redis:7.2 + docker pull testcontainers/ryuk:0.14.0 docker pull electricsql/electric:1.2.4 + docker pull minio/minio:latest echo "Image pre-pull complete" - name: 📥 Download deps @@ -131,7 +134,7 @@ jobs: - name: ⬇️ Checkout repo uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: - fetch-depth: 0 + fetch-depth: 1 persist-credentials: false - name: ⎔ Setup pnpm diff --git a/internal-packages/run-engine/vitest.config.ts b/internal-packages/run-engine/vitest.config.ts index c00c5438785..fc9a8f271e5 100644 --- a/internal-packages/run-engine/vitest.config.ts +++ b/internal-packages/run-engine/vitest.config.ts @@ -4,6 +4,8 @@ export default defineConfig({ test: { include: ["**/*.test.ts"], globals: true, + // CI-only: absorbs timing races (real-clock waits vs worker poll interval) under shard CPU contention + retry: process.env.CI ? 2 : 0, isolate: true, fileParallelism: false, testTimeout: 120_000, diff --git a/internal-packages/schedule-engine/vitest.config.ts b/internal-packages/schedule-engine/vitest.config.ts index cce9bda5415..e773ec6d163 100644 --- a/internal-packages/schedule-engine/vitest.config.ts +++ b/internal-packages/schedule-engine/vitest.config.ts @@ -3,6 +3,8 @@ import { defineConfig } from "vitest/config"; export default defineConfig({ test: { globals: true, + // CI-only: absorbs timing races (real-clock waits vs worker poll interval) under shard CPU contention + retry: process.env.CI ? 2 : 0, environment: "node", setupFiles: ["./test/setup.ts"], testTimeout: 30000, diff --git a/packages/redis-worker/vitest.config.ts b/packages/redis-worker/vitest.config.ts index c4d431e10ff..452a66037d2 100644 --- a/packages/redis-worker/vitest.config.ts +++ b/packages/redis-worker/vitest.config.ts @@ -4,6 +4,8 @@ export default defineConfig({ test: { include: ["**/*.test.ts"], globals: true, + // CI-only: absorbs timing races (real-clock waits vs worker poll interval) under shard CPU contention + retry: process.env.CI ? 2 : 0, fileParallelism: false, }, });