-
Notifications
You must be signed in to change notification settings - Fork 49
76 lines (66 loc) · 2.55 KB
/
Copy pathmulti-pod.yml
File metadata and controls
76 lines (66 loc) · 2.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
name: Multi-Pod Tests
on:
push:
branches:
- main
# Skip pushes to main that only touch the version bump, CI/workflow config,
# or docs — none need this heavy suite re-run.
paths-ignore:
- "apps/mesh/package.json"
- ".github/**"
- "apps/docs/**"
- "**/*.md"
pull_request:
# Multi-pod tests are slow (~7-10 min cold image build + serialized
# boot + scenarios). Only run on PRs that change code the framework
# actually exercises — server-side mesh, dispatch/automations, storage
# schema, or the test infra itself. UI/docs/plugin PRs skip.
paths:
- "apps/mesh/src/api/**"
- "apps/mesh/src/auth/**"
- "apps/mesh/src/core/**"
- "apps/mesh/src/storage/**"
- "apps/mesh/src/dispatch-queue/**"
- "apps/mesh/src/event-bus/**"
- "apps/mesh/src/automations/**"
- "apps/mesh/src/database/**"
- "apps/mesh/src/index.ts"
- "apps/mesh/migrations/**"
- "packages/runtime/**"
- "packages/bindings/**"
- "tests/multi-pod/**"
- ".github/workflows/multi-pod.yml"
workflow_dispatch:
jobs:
multi-pod:
# Skip the [release]: version-bump commit — it only changes the version
# string and would otherwise re-run this heavy suite on every release.
if: github.event_name != 'push' || !startsWith(github.event.head_commit.message, '[release]:')
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: "1.3.14"
- name: Install dependencies
run: bun install
# No --wait here: the one-shot `migrate` service exits 0 once schemas
# are created and `--wait` mis-classifies that as a failure. The test
# suite's beforeAll hook (lib/hooks.ts → cluster.waitReady) polls
# /health/live on each mesh pod instead.
- name: Start cluster
run: docker compose -f tests/multi-pod/docker-compose.yml up -d --build
- name: Run multi-pod scenarios
run: bun test tests/multi-pod/scenarios/ --serial --timeout 900000
- name: Dump mesh logs
if: failure()
run: docker compose -f tests/multi-pod/docker-compose.yml logs mesh-1 mesh-2 mesh-3
- name: Dump infra logs
if: failure()
run: docker compose -f tests/multi-pod/docker-compose.yml logs postgres nats migrate
- name: Tear down cluster
if: always()
run: docker compose -f tests/multi-pod/docker-compose.yml down -v