@@ -16,8 +16,8 @@ permissions:
1616 deployments : write # Netlify action needs it
1717
1818jobs :
19- # ─────────────────────────────────────── 1. BUILD & TEST ──────────────────────────────────────
20- build-and-test :
19+ # ─────────────────────────────────────── 1. DB VERIFICATION ──────────────────────────────────────
20+ db-verification :
2121 runs-on : ubuntu-latest
2222 env :
2323 NX_CLOUD_ACCESS_TOKEN : ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
@@ -27,35 +27,50 @@ jobs:
2727 fetch-depth : 0
2828
2929 - uses : ./.github/actions/setup
30-
31- - name : Setup Deno
32- uses : denoland/setup-deno@v2
3330 with :
34- deno-version : ' 1.45.2'
31+ atlas-cloud-token : ${{ secrets.ATLAS_CLOUD_TOKEN }}
32+
33+ - name : Set Nx SHAs for affected commands
34+ uses : nrwl/nx-set-shas@v4
35+
36+ - name : Verify NX_BASE and NX_HEAD are set
37+ run : echo "BASE=$NX_BASE HEAD=$NX_HEAD"
38+
39+ - name : Run database verification
40+ run : pnpm nx run core:db:verify
3541
36- - name : Install sqruff
37- uses : quarylabs/install-sqruff-cli-action@main
3842
39- - name : Setup Atlas
40- uses : ariga/setup-atlas@master
43+ # ─────────────────────────────────────── 2. FAST TESTS ──────────────────────────────────────
44+ fast-tests :
45+ needs : [db-verification]
46+ runs-on : ubuntu-latest
47+ env :
48+ NX_CLOUD_ACCESS_TOKEN : ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
49+ steps :
50+ - uses : actions/checkout@v4
51+ with :
52+ fetch-depth : 0
53+
54+ - uses : ./.github/actions/setup
4155 with :
42- cloud-token : ${{ secrets.ATLAS_CLOUD_TOKEN }}
56+ atlas- cloud-token : ${{ secrets.ATLAS_CLOUD_TOKEN }}
4357
4458 - name : Set Nx SHAs for affected commands
4559 uses : nrwl/nx-set-shas@v4
4660
4761 - name : Verify NX_BASE and NX_HEAD are set
4862 run : echo "BASE=$NX_BASE HEAD=$NX_HEAD"
4963
50- - name : Quality gate (lint + typecheck + test)
64+ - name : Lint, typecheck, build, and fast tests
5165 run : pnpm nx affected -t lint typecheck test --parallel --configuration=production --base="$NX_BASE" --head="$NX_HEAD"
5266
5367 - name : Build all affected projects (except playground)
5468 run : pnpm nx affected -t build --configuration=production --parallel --exclude=playground --base="$NX_BASE" --head="$NX_HEAD"
5569
5670
57- # ─────────────────────────────────────── 2. EDGE-WORKER E2E ──────────────────────────────────────
58- edge-worker-e2e :
71+ # ─────────────────────────────────────── 3. CLI LIVE TESTS ──────────────────────────────────────
72+ cli-live-tests :
73+ needs : [db-verification]
5974 runs-on : ubuntu-latest
6075 env :
6176 NX_CLOUD_ACCESS_TOKEN : ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
@@ -65,45 +80,133 @@ jobs:
6580 fetch-depth : 0
6681
6782 - uses : ./.github/actions/setup
83+ with :
84+ atlas-cloud-token : ${{ secrets.ATLAS_CLOUD_TOKEN }}
6885
69- - name : Setup Deno
70- uses : denoland/setup-deno@v2
86+ - name : Set Nx SHAs for affected commands
87+ uses : nrwl/nx-set-shas@v4
88+
89+ - name : Check if cli is affected
90+ id : check-affected
91+ run : |
92+ if pnpm nx show projects --affected --base="$NX_BASE" --head="$NX_HEAD" | grep -q "^cli$"; then
93+ echo "affected=true" >> $GITHUB_OUTPUT
94+ echo "CLI is affected by changes"
95+ else
96+ echo "affected=false" >> $GITHUB_OUTPUT
97+ echo "CLI is not affected by changes - skipping"
98+ fi
99+
100+ - name : Run cli live tests
101+ if : steps.check-affected.outputs.affected == 'true'
102+ run : pnpm nx run cli:test:live
103+
104+
105+ # ─────────────────────────────────────── 4. CORE LIVE TESTS ──────────────────────────────────────
106+ core-live-tests :
107+ needs : [db-verification]
108+ runs-on : ubuntu-latest
109+ env :
110+ NX_CLOUD_ACCESS_TOKEN : ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
111+ steps :
112+ - uses : actions/checkout@v4
71113 with :
72- deno-version : ' 1.45.2 '
114+ fetch-depth : 0
73115
74- - name : Install sqruff
75- uses : quarylabs/install-sqruff-cli-action@main
116+ - uses : ./.github/actions/setup
117+ with :
118+ atlas-cloud-token : ${{ secrets.ATLAS_CLOUD_TOKEN }}
76119
77- - name : Setup Atlas
78- uses : ariga/setup-atlas@master
120+ - name : Set Nx SHAs for affected commands
121+ uses : nrwl/nx-set-shas@v4
122+
123+ - name : Check if core is affected
124+ id : check-affected
125+ run : |
126+ if pnpm nx show projects --affected --base="$NX_BASE" --head="$NX_HEAD" | grep -q "^core$"; then
127+ echo "affected=true" >> $GITHUB_OUTPUT
128+ echo "Core is affected by changes"
129+ else
130+ echo "affected=false" >> $GITHUB_OUTPUT
131+ echo "Core is not affected by changes - skipping"
132+ fi
133+
134+ - name : Run core live tests
135+ if : steps.check-affected.outputs.affected == 'true'
136+ run : pnpm nx run core:test:live
137+
138+
139+ # ─────────────────────────────────────── 5. CLIENT LIVE TESTS ──────────────────────────────────────
140+ client-live-tests :
141+ needs : [db-verification]
142+ runs-on : ubuntu-latest
143+ env :
144+ NX_CLOUD_ACCESS_TOKEN : ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
145+ steps :
146+ - uses : actions/checkout@v4
147+ with :
148+ fetch-depth : 0
149+
150+ - uses : ./.github/actions/setup
79151 with :
80- cloud-token : ${{ secrets.ATLAS_CLOUD_TOKEN }}
152+ atlas- cloud-token : ${{ secrets.ATLAS_CLOUD_TOKEN }}
81153
82154 - name : Set Nx SHAs for affected commands
83155 uses : nrwl/nx-set-shas@v4
84156
85- - name : Verify NX_BASE and NX_HEAD are set
86- run : echo "BASE=$NX_BASE HEAD=$NX_HEAD"
157+ - name : Check if client is affected
158+ id : check-affected
159+ run : |
160+ if pnpm nx show projects --affected --base="$NX_BASE" --head="$NX_HEAD" | grep -q "^client$"; then
161+ echo "affected=true" >> $GITHUB_OUTPUT
162+ echo "Client is affected by changes"
163+ else
164+ echo "affected=false" >> $GITHUB_OUTPUT
165+ echo "Client is not affected by changes - skipping"
166+ fi
167+
168+ - name : Run client live tests
169+ if : steps.check-affected.outputs.affected == 'true'
170+ run : pnpm nx run client:test:live
171+
172+
173+ # ─────────────────────────────────────── 6. EDGE-WORKER LIVE TESTS ──────────────────────────────────────
174+ edge-worker-live-tests :
175+ needs : [db-verification]
176+ runs-on : ubuntu-latest
177+ env :
178+ NX_CLOUD_ACCESS_TOKEN : ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
179+ steps :
180+ - uses : actions/checkout@v4
181+ with :
182+ fetch-depth : 0
183+
184+ - uses : ./.github/actions/setup
185+ with :
186+ atlas-cloud-token : ${{ secrets.ATLAS_CLOUD_TOKEN }}
87187
88- - name : Check if edge-worker e2e tests are affected
188+ - name : Set Nx SHAs for affected commands
189+ uses : nrwl/nx-set-shas@v4
190+
191+ - name : Check if edge-worker is affected
89192 id : check-affected
90193 run : |
91- if pnpm nx show projects --affected -t test:e2e - -base="$NX_BASE" --head="$NX_HEAD" | grep -q "^edge-worker$"; then
194+ if pnpm nx show projects --affected --base="$NX_BASE" --head="$NX_HEAD" | grep -q "^edge-worker$"; then
92195 echo "affected=true" >> $GITHUB_OUTPUT
93- echo "Edge-worker e2e tests are affected by changes"
196+ echo "Edge-worker is affected by changes"
94197 else
95198 echo "affected=false" >> $GITHUB_OUTPUT
96- echo "Edge-worker e2e tests are not affected by changes - skipping"
199+ echo "Edge-worker is not affected by changes - skipping"
97200 fi
98201
99- - name : Run edge-worker e2e tests
202+ - name : Run edge-worker live tests
100203 if : steps.check-affected.outputs.affected == 'true'
101- run : pnpm nx affected -t test:e2e --parallel --base="$NX_BASE" --head="$NX_HEAD"
204+ run : pnpm nx run edge-worker: test:live
102205
103206
104- # ────────────────────────────────── 3 . DEPLOY PLAYGROUND ───────────────────────────
207+ # ────────────────────────────────── 7 . DEPLOY PLAYGROUND ───────────────────────────
105208 deploy-playground :
106- needs : [build-and-test, edge-worker-e2e ]
209+ needs : [fast-tests ]
107210 if : false # Disabled
108211 # if: >-
109212 # ${{
@@ -143,9 +246,10 @@ jobs:
143246 preview-url : https://pr-${{ github.event.pull_request.number }}--pgflow-demo.netlify.app
144247 production-url : https://playground.pgflow.dev
145248
146- # ────────────────────────────────── 4. DEPLOY WEBSITE ───────────────────────────
249+
250+ # ────────────────────────────────── 8. DEPLOY WEBSITE ───────────────────────────
147251 deploy-website :
148- needs : [build-and-test, edge-worker-e2e ]
252+ needs : [fast-tests, cli-live-tests, core-live-tests, client-live-tests, edge-worker-live-tests ]
149253 runs-on : ubuntu-latest
150254 environment : ${{ github.event_name == 'pull_request' && 'preview' || 'production' }}
151255 env :
@@ -177,7 +281,7 @@ jobs:
177281 echo "affected=false" >> $GITHUB_OUTPUT
178282 echo "Website is not affected by changes - skipping deployment"
179283 fi
180-
284+
181285 - name : Deploy website
182286 id : deploy-website
183287 if : steps.check-affected.outputs.affected == 'true'
@@ -197,4 +301,3 @@ jobs:
197301 project-name : Website
198302 preview-url : https://pr-${{ github.event.pull_request.number }}.pgflow.pages.dev
199303 production-url : https://pgflow.dev
200-
0 commit comments