@@ -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 }}
@@ -47,15 +47,69 @@ jobs:
4747 - name : Verify NX_BASE and NX_HEAD are set
4848 run : echo "BASE=$NX_BASE HEAD=$NX_HEAD"
4949
50- - name : Quality gate (lint + typecheck + test)
50+ - name : Run database verification
51+ run : pnpm nx run core:db:verify
52+
53+
54+ # ─────────────────────────────────────── 2. FAST TESTS ──────────────────────────────────────
55+ fast-tests :
56+ needs : [db-verification]
57+ runs-on : ubuntu-latest
58+ env :
59+ NX_CLOUD_ACCESS_TOKEN : ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
60+ steps :
61+ - uses : actions/checkout@v4
62+ with :
63+ fetch-depth : 0
64+
65+ - uses : ./.github/actions/setup
66+
67+ - name : Set Nx SHAs for affected commands
68+ uses : nrwl/nx-set-shas@v4
69+
70+ - name : Verify NX_BASE and NX_HEAD are set
71+ run : echo "BASE=$NX_BASE HEAD=$NX_HEAD"
72+
73+ - name : Lint, typecheck, build, and fast tests
5174 run : pnpm nx affected -t lint typecheck test --parallel --configuration=production --base="$NX_BASE" --head="$NX_HEAD"
5275
5376 - name : Build all affected projects (except playground)
5477 run : pnpm nx affected -t build --configuration=production --parallel --exclude=playground --base="$NX_BASE" --head="$NX_HEAD"
5578
5679
57- # ─────────────────────────────────────── 2. EDGE-WORKER E2E ──────────────────────────────────────
58- edge-worker-e2e :
80+ # ─────────────────────────────────────── 3. CORE LIVE TESTS ──────────────────────────────────────
81+ core-live-tests :
82+ needs : [db-verification]
83+ runs-on : ubuntu-latest
84+ env :
85+ NX_CLOUD_ACCESS_TOKEN : ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
86+ steps :
87+ - uses : actions/checkout@v4
88+ with :
89+ fetch-depth : 0
90+
91+ - uses : ./.github/actions/setup
92+
93+ - name : Setup Deno
94+ uses : denoland/setup-deno@v2
95+ with :
96+ deno-version : ' 1.45.2'
97+
98+ - name : Install sqruff
99+ uses : quarylabs/install-sqruff-cli-action@main
100+
101+ - name : Setup Atlas
102+ uses : ariga/setup-atlas@master
103+ with :
104+ cloud-token : ${{ secrets.ATLAS_CLOUD_TOKEN }}
105+
106+ - name : Run core live tests
107+ run : pnpm nx run core:test:live
108+
109+
110+ # ─────────────────────────────────────── 4. CLIENT LIVE TESTS ──────────────────────────────────────
111+ client-live-tests :
112+ needs : [db-verification]
59113 runs-on : ubuntu-latest
60114 env :
61115 NX_CLOUD_ACCESS_TOKEN : ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
@@ -82,70 +136,70 @@ jobs:
82136 - name : Set Nx SHAs for affected commands
83137 uses : nrwl/nx-set-shas@v4
84138
85- - name : Verify NX_BASE and NX_HEAD are set
86- run : echo "BASE=$NX_BASE HEAD=$NX_HEAD"
87-
88- - name : Check if edge-worker e2e tests are affected
139+ - name : Check if client is affected
89140 id : check-affected
90141 run : |
91- if pnpm nx show projects --affected -t test:e2e -- base="$NX_BASE" --head="$NX_HEAD" | grep -q "^edge-worker $"; then
142+ if pnpm nx show projects --affected -- base="$NX_BASE" --head="$NX_HEAD" | grep -q "^client $"; then
92143 echo "affected=true" >> $GITHUB_OUTPUT
93- echo "Edge-worker e2e tests are affected by changes"
144+ echo "Client is affected by changes"
94145 else
95146 echo "affected=false" >> $GITHUB_OUTPUT
96- echo "Edge-worker e2e tests are not affected by changes - skipping"
147+ echo "Client is not affected by changes - skipping"
97148 fi
98149
99- - name : Run edge-worker e2e tests
150+ - name : Run client live tests
100151 if : steps.check-affected.outputs.affected == 'true'
101- run : pnpm nx affected -t test:e2e --parallel --base="$NX_BASE" --head="$NX_HEAD"
102-
103-
104- # ────────────────────────────────── 3. DEPLOY PLAYGROUND ───────────────────────────
105- deploy-playground :
106- needs : [build-and-test, edge-worker-e2e]
107- if : false # Disabled
108- # if: >-
109- # ${{
110- # (github.event_name == 'pull_request') ||
111- # (github.ref == 'refs/heads/main' && github.event_name == 'push')
112- # }}
152+ run : pnpm nx run client:test:live
153+
154+
155+ # ─────────────────────────────────────── 5. EDGE-WORKER LIVE TESTS ──────────────────────────────────────
156+ edge-worker-live-tests :
157+ needs : [db-verification]
113158 runs-on : ubuntu-latest
114- environment : ${{ github.event_name == 'pull_request' && 'preview' || 'production' }}
115159 env :
116160 NX_CLOUD_ACCESS_TOKEN : ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
117- NETLIFY_AUTH_TOKEN : ${{ secrets.NETLIFY_AUTH_TOKEN }}
118- NETLIFY_SITE_ID : ${{ secrets.NETLIFY_PLAYGROUND_SITE_ID }}
119- NEXT_PUBLIC_SUPABASE_URL : ${{ github.event_name == 'pull_request' && secrets.DEMO_PREVIEW_SUPABASE_URL || secrets.DEMO_PRODUCTION_SUPABASE_URL }}
120- NEXT_PUBLIC_SUPABASE_ANON_KEY : ${{ github.event_name == 'pull_request' && secrets.DEMO_PREVIEW_SUPABASE_ANON_KEY || secrets.DEMO_PRODUCTION_SUPABASE_ANON_KEY }}
121161 steps :
122162 - uses : actions/checkout@v4
123163 with :
124164 fetch-depth : 0
125165
126166 - uses : ./.github/actions/setup
127167
128- # Build the workspace libraries that the app imports
129- - run : pnpm nx run-many -t build --projects client,dsl --configuration=production
168+ - name : Setup Deno
169+ uses : denoland/setup-deno@v2
170+ with :
171+ deno-version : ' 1.45.2'
130172
131- - name : Build & deploy to Netlify
132- id : deploy
133- run : |
134- pnpm netlify deploy --build --filter=playground \
135- --context ${{ github.event_name == 'pull_request' && 'deploy-preview' || 'production' }} \
136- ${{ github.event_name == 'pull_request' && format('--alias=pr-{0}', github.event.pull_request.number) || '--prod' }}
173+ - name : Install sqruff
174+ uses : quarylabs/install-sqruff-cli-action@main
137175
138- - name : Post deployment comment
139- if : always()
140- uses : ./.github/actions/deployment-comment
176+ - name : Setup Atlas
177+ uses : ariga/setup-atlas@master
141178 with :
142- project-name : Playground
143- preview-url : https://pr-${{ github.event.pull_request.number }}--pgflow-demo.netlify.app
144- production-url : https://playground.pgflow.dev
179+ cloud-token : ${{ secrets.ATLAS_CLOUD_TOKEN }}
180+
181+ - name : Set Nx SHAs for affected commands
182+ uses : nrwl/nx-set-shas@v4
183+
184+ - name : Check if edge-worker is affected
185+ id : check-affected
186+ run : |
187+ if pnpm nx show projects --affected --base="$NX_BASE" --head="$NX_HEAD" | grep -q "^edge-worker$"; then
188+ echo "affected=true" >> $GITHUB_OUTPUT
189+ echo "Edge-worker is affected by changes"
190+ else
191+ echo "affected=false" >> $GITHUB_OUTPUT
192+ echo "Edge-worker is not affected by changes - skipping"
193+ fi
194+
195+ - name : Run edge-worker live tests
196+ if : steps.check-affected.outputs.affected == 'true'
197+ run : pnpm nx run edge-worker:test:live
198+
145199
146- # ────────────────────────────────── 4 . DEPLOY WEBSITE ───────────────────────────
200+ # ────────────────────────────────── 6 . DEPLOY WEBSITE ───────────────────────────
147201 deploy-website :
148- needs : [build-and-test, edge-worker-e2e ]
202+ needs : [fast-tests, core-live-tests, client-live-tests, edge-worker-live-tests ]
149203 runs-on : ubuntu-latest
150204 environment : ${{ github.event_name == 'pull_request' && 'preview' || 'production' }}
151205 env :
0 commit comments