@@ -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
41+
3542
36- - name : Install sqruff
37- uses : quarylabs/install-sqruff-cli-action@main
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
3853
39- - name : Setup Atlas
40- uses : ariga/setup-atlas@master
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. CORE LIVE TESTS ──────────────────────────────────────
72+ core-live-tests :
73+ needs : [db-verification]
5974 runs-on : ubuntu-latest
6075 env :
6176 NX_CLOUD_ACCESS_TOKEN : ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
@@ -65,87 +80,84 @@ jobs:
6580 fetch-depth : 0
6681
6782 - uses : ./.github/actions/setup
68-
69- - name : Setup Deno
70- uses : denoland/setup-deno@v2
7183 with :
72- deno-version : ' 1.45.2 '
84+ atlas-cloud-token : ${{ secrets.ATLAS_CLOUD_TOKEN }}
7385
74- - name : Install sqruff
75- uses : quarylabs/install-sqruff-cli-action@main
86+ - name : Run core live tests
87+ run : pnpm nx run core:test:live
88+
89+
90+ # ─────────────────────────────────────── 4. CLIENT LIVE TESTS ──────────────────────────────────────
91+ client-live-tests :
92+ needs : [db-verification]
93+ runs-on : ubuntu-latest
94+ env :
95+ NX_CLOUD_ACCESS_TOKEN : ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
96+ steps :
97+ - uses : actions/checkout@v4
98+ with :
99+ fetch-depth : 0
76100
77- - name : Setup Atlas
78- uses : ariga/setup-atlas@master
101+ - uses : ./.github/actions/setup
79102 with :
80- cloud-token : ${{ secrets.ATLAS_CLOUD_TOKEN }}
103+ atlas- cloud-token : ${{ secrets.ATLAS_CLOUD_TOKEN }}
81104
82105 - name : Set Nx SHAs for affected commands
83106 uses : nrwl/nx-set-shas@v4
84107
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
108+ - name : Check if client is affected
89109 id : check-affected
90110 run : |
91- if pnpm nx show projects --affected -t test:e2e -- base="$NX_BASE" --head="$NX_HEAD" | grep -q "^edge-worker $"; then
111+ if pnpm nx show projects --affected -- base="$NX_BASE" --head="$NX_HEAD" | grep -q "^client $"; then
92112 echo "affected=true" >> $GITHUB_OUTPUT
93- echo "Edge-worker e2e tests are affected by changes"
113+ echo "Client is affected by changes"
94114 else
95115 echo "affected=false" >> $GITHUB_OUTPUT
96- echo "Edge-worker e2e tests are not affected by changes - skipping"
116+ echo "Client is not affected by changes - skipping"
97117 fi
98118
99- - name : Run edge-worker e2e tests
119+ - name : Run client live tests
100120 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- # }}
121+ run : pnpm nx run client:test:live
122+
123+
124+ # ─────────────────────────────────────── 5. EDGE-WORKER LIVE TESTS ──────────────────────────────────────
125+ edge-worker-live-tests :
126+ needs : [db-verification]
113127 runs-on : ubuntu-latest
114- environment : ${{ github.event_name == 'pull_request' && 'preview' || 'production' }}
115128 env :
116129 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 }}
121130 steps :
122131 - uses : actions/checkout@v4
123132 with :
124133 fetch-depth : 0
125134
126135 - uses : ./.github/actions/setup
136+ with :
137+ atlas-cloud-token : ${{ secrets.ATLAS_CLOUD_TOKEN }}
127138
128- # Build the workspace libraries that the app imports
129- - run : pnpm nx run-many -t build --projects client,dsl --configuration=production
139+ - name : Set Nx SHAs for affected commands
140+ uses : nrwl/nx-set-shas@v4
130141
131- - name : Build & deploy to Netlify
132- id : deploy
142+ - name : Check if edge-worker is affected
143+ id : check-affected
133144 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' }}
145+ if pnpm nx show projects --affected --base="$NX_BASE" --head="$NX_HEAD" | grep -q "^edge-worker$"; then
146+ echo "affected=true" >> $GITHUB_OUTPUT
147+ echo "Edge-worker is affected by changes"
148+ else
149+ echo "affected=false" >> $GITHUB_OUTPUT
150+ echo "Edge-worker is not affected by changes - skipping"
151+ fi
152+
153+ - name : Run edge-worker live tests
154+ if : steps.check-affected.outputs.affected == 'true'
155+ run : pnpm nx run edge-worker:test:live
137156
138- - name : Post deployment comment
139- if : always()
140- uses : ./.github/actions/deployment-comment
141- 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
145157
146- # ────────────────────────────────── 4 . DEPLOY WEBSITE ───────────────────────────
158+ # ────────────────────────────────── 6 . DEPLOY WEBSITE ───────────────────────────
147159 deploy-website :
148- needs : [build-and-test, edge-worker-e2e ]
160+ needs : [fast-tests, core-live-tests, client-live-tests, edge-worker-live-tests ]
149161 runs-on : ubuntu-latest
150162 environment : ${{ github.event_name == 'pull_request' && 'preview' || 'production' }}
151163 env :
0 commit comments