@jaypie/mcp 0.2.10 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,6 +6,14 @@ description: step-by-step guide to initialize GitHub Actions CI/CD for Jaypie pr
6
6
 
7
7
  This guide walks through setting up GitHub Actions CI/CD from scratch for a Jaypie project.
8
8
 
9
+ ## Workspace Naming Conventions
10
+
11
+ | Directory | Purpose |
12
+ |-----------|---------|
13
+ | `packages/` | Default workspace for npm packages (preferred when only one namespace needed) |
14
+ | `stacks/` | CDK-deployed infrastructure and sites (as opposed to npm-published) |
15
+ | `workspaces/` | Generic workspace for other work |
16
+
9
17
  ## Prerequisites
10
18
 
11
19
  - GitHub repository with Jaypie project structure
@@ -31,9 +39,9 @@ Create the following structure:
31
39
  │ └── action.yml
32
40
  └── workflows/
33
41
  ├── check-production.yml
34
- ├── deploy-development.yml
35
- ├── deploy-production.yml
36
- ├── deploy-sandbox.yml
42
+ ├── deploy-env-development.yml
43
+ ├── deploy-env-production.yml
44
+ ├── deploy-env-sandbox.yml
37
45
  └── version.yml
38
46
  ```
39
47
 
@@ -85,7 +93,7 @@ inputs:
85
93
  node-version:
86
94
  description: Node.js version to use
87
95
  required: false
88
- default: "20"
96
+ default: "24"
89
97
 
90
98
  outputs:
91
99
  node-modules-cache-hit:
@@ -111,6 +119,7 @@ runs:
111
119
  path: |
112
120
  node_modules
113
121
  packages/*/node_modules
122
+ stacks/*/node_modules
114
123
  key: ${{ runner.os }}-node-${{ inputs.node-version }}-modules-${{ hashFiles('**/package-lock.json') }}
115
124
  restore-keys: |
116
125
  ${{ runner.os }}-node-${{ inputs.node-version }}-modules-
@@ -162,41 +171,55 @@ Configures environment variables with sensible defaults. Customize the defaults
162
171
 
163
172
  ```yaml
164
173
  name: Setup Environment Variables
165
- description: Configure environment variables with sensible defaults
174
+ description: |
175
+ Configure environment variables with sensible defaults for Jaypie projects.
176
+
177
+ Variable Scoping (GitHub Settings):
178
+ - Organization: AWS_REGION, LOG_LEVEL, MODULE_LOG_LEVEL, PROJECT_SPONSOR
179
+ - Repository: AWS_HOSTED_ZONE, PROJECT_KEY, PROJECT_SERVICE
180
+ - Environment: AWS_ROLE_ARN, DATADOG_API_KEY_ARN, PROJECT_ENV, PROJECT_NONCE
181
+
182
+ Environment Secrets:
183
+ - By default, no secrets are required
184
+ - Dependencies add secrets (e.g., Auth0 adds AUTH0_CLIENT_SECRET)
185
+ - Secrets are passed to CDK via JaypieEnvSecret construct
166
186
 
167
187
  inputs:
188
+ # Organization-level variables
168
189
  aws-region:
169
- description: AWS region
170
- required: false
171
- aws-role-arn:
172
- description: AWS IAM role ARN
173
- required: false
174
- datadog-api-key-arn:
175
- description: Datadog API key ARN
176
- required: false
177
- aws-hosted-zone:
178
- description: Route53 hosted zone
190
+ description: AWS region (org-level)
179
191
  required: false
180
192
  log-level:
181
- description: Application log level
193
+ description: Application log level (org-level)
182
194
  required: false
183
195
  module-log-level:
184
- description: Module log level
196
+ description: Module log level (org-level)
185
197
  required: false
186
- project-env:
187
- description: Project environment
198
+ project-sponsor:
199
+ description: Project sponsor (org-level)
188
200
  required: false
189
- project-key:
190
- description: Project key
201
+ # Repository-level variables
202
+ aws-hosted-zone:
203
+ description: Route53 hosted zone (repo-level)
191
204
  required: false
192
- project-nonce:
193
- description: Project nonce
205
+ project-key:
206
+ description: Project key (repo-level)
194
207
  required: false
195
208
  project-service:
196
- description: Project service name
209
+ description: Project service name (repo-level)
197
210
  required: false
198
- project-sponsor:
199
- description: Project sponsor
211
+ # Environment-level variables
212
+ aws-role-arn:
213
+ description: AWS IAM role ARN (env-level)
214
+ required: false
215
+ datadog-api-key-arn:
216
+ description: Datadog API key ARN (env-level)
217
+ required: false
218
+ project-env:
219
+ description: Project environment (env-level)
220
+ required: false
221
+ project-nonce:
222
+ description: Project nonce (env-level)
200
223
  required: false
201
224
 
202
225
  outputs:
@@ -217,44 +240,48 @@ runs:
217
240
  id: set-env
218
241
  shell: bash
219
242
  run: |
220
- # Read from inputs and apply defaults using bash parameter expansion
243
+ # Organization-level variables (with defaults)
221
244
  AWS_REGION="${{ inputs.aws-region }}"
222
245
  AWS_REGION="${AWS_REGION:-us-east-1}"
223
246
 
224
- AWS_ROLE_ARN="${{ inputs.aws-role-arn }}"
225
-
226
- DATADOG_API_KEY_ARN="${{ inputs.datadog-api-key-arn }}"
227
-
228
- HOSTED_ZONE="${{ inputs.aws-hosted-zone }}"
229
- HOSTED_ZONE="${HOSTED_ZONE:-example.com}"
230
-
231
247
  LOG_LEVEL="${{ inputs.log-level }}"
232
248
  LOG_LEVEL="${LOG_LEVEL:-debug}"
233
249
 
234
250
  MODULE_LOG_LEVEL="${{ inputs.module-log-level }}"
235
251
  MODULE_LOG_LEVEL="${MODULE_LOG_LEVEL:-warn}"
236
252
 
237
- PROJECT_ENV="${{ inputs.project-env }}"
238
- PROJECT_ENV="${PROJECT_ENV:-sandbox}"
253
+ PROJECT_SPONSOR="${{ inputs.project-sponsor }}"
254
+ PROJECT_SPONSOR="${PROJECT_SPONSOR:-myorg}"
255
+
256
+ # Repository-level variables (with defaults)
257
+ HOSTED_ZONE="${{ inputs.aws-hosted-zone }}"
258
+ HOSTED_ZONE="${HOSTED_ZONE:-example.com}"
239
259
 
240
260
  PROJECT_KEY="${{ inputs.project-key }}"
241
261
  PROJECT_KEY="${PROJECT_KEY:-myapp}"
242
262
 
243
- PROJECT_NONCE="${{ inputs.project-nonce }}"
244
- PROJECT_NONCE="${PROJECT_NONCE:-$(echo $RANDOM | md5sum | head -c 8)}"
245
-
246
263
  PROJECT_SERVICE="${{ inputs.project-service }}"
247
- PROJECT_SERVICE="${PROJECT_SERVICE:-myapp}"
264
+ PROJECT_SERVICE="${PROJECT_SERVICE:-stacks}"
248
265
 
249
- PROJECT_SPONSOR="${{ inputs.project-sponsor }}"
250
- PROJECT_SPONSOR="${PROJECT_SPONSOR:-myorg}"
266
+ # Environment-level variables (with defaults)
267
+ AWS_ROLE_ARN="${{ inputs.aws-role-arn }}"
268
+
269
+ DATADOG_API_KEY_ARN="${{ inputs.datadog-api-key-arn }}"
270
+
271
+ PROJECT_ENV="${{ inputs.project-env }}"
272
+ PROJECT_ENV="${PROJECT_ENV:-sandbox}"
251
273
 
252
- # Extract version from package.json
274
+ PROJECT_NONCE="${{ inputs.project-nonce }}"
275
+ PROJECT_NONCE="${PROJECT_NONCE:-$(echo $RANDOM | md5sum | head -c 8)}"
276
+
277
+ # Derived from package.json
253
278
  PROJECT_VERSION=$(node -p "require('./package.json').version")
254
279
 
255
- # Export all environment variables
280
+ # Export all environment variables for CDK
256
281
  echo "AWS_REGION=${AWS_REGION}" >> $GITHUB_ENV
257
282
  echo "AWS_ROLE_ARN=${AWS_ROLE_ARN}" >> $GITHUB_ENV
283
+ echo "CDK_DEFAULT_ACCOUNT=${{ github.repository_owner }}" >> $GITHUB_ENV
284
+ echo "CDK_DEFAULT_REGION=${AWS_REGION}" >> $GITHUB_ENV
258
285
  echo "CDK_ENV_DATADOG_API_KEY_ARN=${DATADOG_API_KEY_ARN}" >> $GITHUB_ENV
259
286
  echo "CDK_ENV_HOSTED_ZONE=${HOSTED_ZONE}" >> $GITHUB_ENV
260
287
  echo "CDK_ENV_REPO=${{ github.repository }}" >> $GITHUB_ENV
@@ -268,7 +295,7 @@ runs:
268
295
  echo "PROJECT_SPONSOR=${PROJECT_SPONSOR}" >> $GITHUB_ENV
269
296
  echo "PROJECT_VERSION=${PROJECT_VERSION}" >> $GITHUB_ENV
270
297
 
271
- # Set outputs
298
+ # Set outputs for subsequent steps
272
299
  echo "aws-region=${AWS_REGION}" >> $GITHUB_OUTPUT
273
300
  echo "aws-role-arn=${AWS_ROLE_ARN}" >> $GITHUB_OUTPUT
274
301
  echo "project-env=${PROJECT_ENV}" >> $GITHUB_OUTPUT
@@ -326,7 +353,7 @@ runs:
326
353
 
327
354
  Create workflow files in `.github/workflows/`.
328
355
 
329
- ### deploy-sandbox.yml
356
+ ### deploy-env-sandbox.yml
330
357
 
331
358
  Deploys to sandbox on feature branches. Lint and test run in parallel with deploy.
332
359
 
@@ -337,14 +364,12 @@ on:
337
364
  push:
338
365
  branches:
339
366
  - feat/*
340
- - main
341
367
  - sandbox/*
342
368
  tags:
343
369
  - sandbox-*
344
370
 
345
371
  concurrency:
346
- group: deploy-sandbox
347
- cancel-in-progress: true
372
+ group: deploy-env-sandbox
348
373
 
349
374
  jobs:
350
375
  deploy:
@@ -362,10 +387,10 @@ jobs:
362
387
  id: setup-env
363
388
  uses: ./.github/actions/setup-environment
364
389
  with:
390
+ aws-hosted-zone: ${{ vars.AWS_HOSTED_ZONE }}
365
391
  aws-region: ${{ vars.AWS_REGION }}
366
392
  aws-role-arn: ${{ vars.AWS_ROLE_ARN }}
367
393
  datadog-api-key-arn: ${{ vars.DATADOG_API_KEY_ARN }}
368
- aws-hosted-zone: ${{ vars.AWS_HOSTED_ZONE }}
369
394
  log-level: ${{ vars.LOG_LEVEL }}
370
395
  module-log-level: ${{ vars.MODULE_LOG_LEVEL }}
371
396
  project-env: ${{ vars.PROJECT_ENV }}
@@ -377,13 +402,13 @@ jobs:
377
402
  - name: Configure AWS Credentials
378
403
  uses: ./.github/actions/configure-aws
379
404
  with:
380
- role-arn: ${{ steps.setup-env.outputs.aws-role-arn }}
381
405
  aws-region: ${{ steps.setup-env.outputs.aws-region }}
406
+ role-arn: ${{ steps.setup-env.outputs.aws-role-arn }}
382
407
 
383
408
  - name: Setup Node.js and Cache
384
409
  uses: ./.github/actions/setup-node-and-cache
385
410
  with:
386
- node-version: 20
411
+ node-version: 24
387
412
 
388
413
  - name: Install and Build
389
414
  uses: ./.github/actions/npm-install-build
@@ -404,7 +429,7 @@ jobs:
404
429
  id: setup-cache
405
430
  uses: ./.github/actions/setup-node-and-cache
406
431
  with:
407
- node-version: 20
432
+ node-version: 24
408
433
 
409
434
  - name: Install dependencies
410
435
  if: steps.setup-cache.outputs.node-modules-cache-hit != 'true'
@@ -421,7 +446,7 @@ jobs:
421
446
  runs-on: ubuntu-latest
422
447
  strategy:
423
448
  matrix:
424
- node-version: [20.x, 22.x]
449
+ node-version: [22, 24]
425
450
  steps:
426
451
  - name: Checkout code
427
452
  uses: actions/checkout@v4
@@ -443,7 +468,7 @@ jobs:
443
468
  run: npm test
444
469
  ```
445
470
 
446
- ### deploy-development.yml
471
+ ### deploy-env-development.yml
447
472
 
448
473
  Deploys to development from main branch. Requires lint and test to pass.
449
474
 
@@ -459,8 +484,7 @@ on:
459
484
  - development-*
460
485
 
461
486
  concurrency:
462
- group: deploy-development
463
- cancel-in-progress: true
487
+ group: deploy-env-development
464
488
 
465
489
  jobs:
466
490
  deploy:
@@ -479,10 +503,10 @@ jobs:
479
503
  id: setup-env
480
504
  uses: ./.github/actions/setup-environment
481
505
  with:
506
+ aws-hosted-zone: ${{ vars.AWS_HOSTED_ZONE }}
482
507
  aws-region: ${{ vars.AWS_REGION }}
483
508
  aws-role-arn: ${{ vars.AWS_ROLE_ARN }}
484
509
  datadog-api-key-arn: ${{ vars.DATADOG_API_KEY_ARN }}
485
- aws-hosted-zone: ${{ vars.AWS_HOSTED_ZONE }}
486
510
  log-level: ${{ vars.LOG_LEVEL }}
487
511
  module-log-level: ${{ vars.MODULE_LOG_LEVEL }}
488
512
  project-env: ${{ vars.PROJECT_ENV }}
@@ -494,13 +518,13 @@ jobs:
494
518
  - name: Configure AWS Credentials
495
519
  uses: ./.github/actions/configure-aws
496
520
  with:
497
- role-arn: ${{ steps.setup-env.outputs.aws-role-arn }}
498
521
  aws-region: ${{ steps.setup-env.outputs.aws-region }}
522
+ role-arn: ${{ steps.setup-env.outputs.aws-role-arn }}
499
523
 
500
524
  - name: Setup Node.js and Cache
501
525
  uses: ./.github/actions/setup-node-and-cache
502
526
  with:
503
- node-version: 20
527
+ node-version: 24
504
528
 
505
529
  - name: Install and Build
506
530
  uses: ./.github/actions/npm-install-build
@@ -521,7 +545,7 @@ jobs:
521
545
  id: setup-cache
522
546
  uses: ./.github/actions/setup-node-and-cache
523
547
  with:
524
- node-version: 20
548
+ node-version: 24
525
549
 
526
550
  - name: Install dependencies
527
551
  if: steps.setup-cache.outputs.node-modules-cache-hit != 'true'
@@ -538,7 +562,7 @@ jobs:
538
562
  runs-on: ubuntu-latest
539
563
  strategy:
540
564
  matrix:
541
- node-version: [20.x, 22.x]
565
+ node-version: [22, 24]
542
566
  steps:
543
567
  - name: Checkout code
544
568
  uses: actions/checkout@v4
@@ -560,9 +584,9 @@ jobs:
560
584
  run: npm test
561
585
  ```
562
586
 
563
- ### deploy-production.yml
587
+ ### deploy-env-production.yml
564
588
 
565
- Deploys to production from version tags. Requires lint and test to pass. Does not cancel in-progress builds.
589
+ Deploys to production from version tags. Requires lint and test to pass.
566
590
 
567
591
  ```yaml
568
592
  name: Build to Production
@@ -575,8 +599,7 @@ on:
575
599
  - 'v1.*'
576
600
 
577
601
  concurrency:
578
- group: deploy-production
579
- cancel-in-progress: false
602
+ group: deploy-env-production
580
603
 
581
604
  jobs:
582
605
  deploy:
@@ -605,10 +628,10 @@ jobs:
605
628
  id: setup-env
606
629
  uses: ./.github/actions/setup-environment
607
630
  with:
631
+ aws-hosted-zone: ${{ vars.AWS_HOSTED_ZONE }}
608
632
  aws-region: ${{ vars.AWS_REGION }}
609
633
  aws-role-arn: ${{ vars.AWS_ROLE_ARN }}
610
634
  datadog-api-key-arn: ${{ vars.DATADOG_API_KEY_ARN }}
611
- aws-hosted-zone: ${{ vars.AWS_HOSTED_ZONE }}
612
635
  log-level: ${{ vars.LOG_LEVEL }}
613
636
  module-log-level: ${{ vars.MODULE_LOG_LEVEL }}
614
637
  project-env: ${{ vars.PROJECT_ENV }}
@@ -620,13 +643,13 @@ jobs:
620
643
  - name: Configure AWS Credentials
621
644
  uses: ./.github/actions/configure-aws
622
645
  with:
623
- role-arn: ${{ steps.setup-env.outputs.aws-role-arn }}
624
646
  aws-region: ${{ steps.setup-env.outputs.aws-region }}
647
+ role-arn: ${{ steps.setup-env.outputs.aws-role-arn }}
625
648
 
626
649
  - name: Setup Node.js and Cache
627
650
  uses: ./.github/actions/setup-node-and-cache
628
651
  with:
629
- node-version: 20
652
+ node-version: 24
630
653
 
631
654
  - name: Install and Build
632
655
  uses: ./.github/actions/npm-install-build
@@ -647,7 +670,7 @@ jobs:
647
670
  id: setup-cache
648
671
  uses: ./.github/actions/setup-node-and-cache
649
672
  with:
650
- node-version: 20
673
+ node-version: 24
651
674
 
652
675
  - name: Install dependencies
653
676
  if: steps.setup-cache.outputs.node-modules-cache-hit != 'true'
@@ -664,7 +687,7 @@ jobs:
664
687
  runs-on: ubuntu-latest
665
688
  strategy:
666
689
  matrix:
667
- node-version: [20.x, 22.x]
690
+ node-version: [22, 24]
668
691
  steps:
669
692
  - name: Checkout code
670
693
  uses: actions/checkout@v4
@@ -702,7 +725,6 @@ on:
702
725
 
703
726
  concurrency:
704
727
  group: check-production
705
- cancel-in-progress: true
706
728
 
707
729
  jobs:
708
730
  lint:
@@ -716,7 +738,7 @@ jobs:
716
738
  id: setup-cache
717
739
  uses: ./.github/actions/setup-node-and-cache
718
740
  with:
719
- node-version: 20
741
+ node-version: 24
720
742
 
721
743
  - name: Install dependencies
722
744
  if: steps.setup-cache.outputs.node-modules-cache-hit != 'true'
@@ -733,7 +755,7 @@ jobs:
733
755
  runs-on: ubuntu-latest
734
756
  strategy:
735
757
  matrix:
736
- node-version: [20.x, 22.x]
758
+ node-version: [22, 24]
737
759
  steps:
738
760
  - name: Checkout code
739
761
  uses: actions/checkout@v4
@@ -812,7 +834,7 @@ jobs:
812
834
  - name: Setup Node.js
813
835
  uses: actions/setup-node@v4
814
836
  with:
815
- node-version: 20
837
+ node-version: 24
816
838
 
817
839
  - name: Configure Git
818
840
  run: |
@@ -863,9 +885,17 @@ jobs:
863
885
  git push
864
886
  ```
865
887
 
866
- ## Step 3: Configure GitHub Environments
888
+ ## Step 3: Configure GitHub Variables
867
889
 
868
- Create environments in your GitHub repository settings. Each environment contains variables and secrets for that deployment target.
890
+ Variables are configured at different levels in GitHub Settings.
891
+
892
+ ### Variable Scoping
893
+
894
+ | Level | Variables | Where to Configure |
895
+ |-------|-----------|-------------------|
896
+ | Organization | AWS_REGION, LOG_LEVEL, MODULE_LOG_LEVEL, PROJECT_SPONSOR | Settings → Actions → Variables |
897
+ | Repository | AWS_HOSTED_ZONE, PROJECT_KEY, PROJECT_SERVICE | Settings → Actions secrets and variables → Variables |
898
+ | Environment | AWS_ROLE_ARN, DATADOG_API_KEY_ARN, PROJECT_ENV, PROJECT_NONCE | Settings → Environments → [env] → Variables |
869
899
 
870
900
  ### Creating an Environment
871
901
 
@@ -876,26 +906,26 @@ Create environments in your GitHub repository settings. Each environment contain
876
906
  5. Click **Configure environment**
877
907
  6. Under **Environment variables**, click **Add variable** for each variable
878
908
 
879
- ### Required Variables (per environment)
909
+ ### Required Variables (Environment Level)
880
910
 
881
911
  | Variable | Description | Example |
882
912
  |----------|-------------|---------|
883
913
  | `AWS_ROLE_ARN` | IAM role ARN for OIDC (deployment fails without this) | `arn:aws:iam::123456789:role/DeployRole` |
884
-
885
- ### Optional Variables (per environment)
886
-
887
- | Variable | Description | Default |
888
- |----------|-------------|---------|
889
- | `AWS_REGION` | AWS region | `us-east-1` |
890
- | `AWS_HOSTED_ZONE` | Route53 hosted zone | `example.com` |
891
- | `DATADOG_API_KEY_ARN` | Secrets Manager ARN for Datadog | (none) |
892
- | `LOG_LEVEL` | Application log level | `debug` |
893
- | `MODULE_LOG_LEVEL` | Module log level | `warn` |
894
- | `PROJECT_ENV` | Environment name | `sandbox` |
895
- | `PROJECT_KEY` | Project identifier | (from package.json name) |
896
- | `PROJECT_NONCE` | Unique identifier for resources | (random) |
897
- | `PROJECT_SERVICE` | Service name | (from package.json name) |
898
- | `PROJECT_SPONSOR` | Organization name | (from repository owner) |
914
+ | `PROJECT_ENV` | Environment identifier | `sandbox`, `development`, `production` |
915
+
916
+ ### Optional Variables
917
+
918
+ | Variable | Level | Description | Default |
919
+ |----------|-------|-------------|---------|
920
+ | `AWS_REGION` | Org | AWS region | `us-east-1` |
921
+ | `AWS_HOSTED_ZONE` | Repo | Route53 hosted zone | `example.com` |
922
+ | `DATADOG_API_KEY_ARN` | Env | Secrets Manager ARN for Datadog | (none) |
923
+ | `LOG_LEVEL` | Org | Application log level | `debug` |
924
+ | `MODULE_LOG_LEVEL` | Org | Module log level | `warn` |
925
+ | `PROJECT_KEY` | Repo | Project identifier | (from package.json name) |
926
+ | `PROJECT_NONCE` | Env | Unique identifier for resources | (random) |
927
+ | `PROJECT_SERVICE` | Repo | Service name | `stacks` |
928
+ | `PROJECT_SPONSOR` | Org | Organization name | (from repository owner) |
899
929
 
900
930
  ### Auto-Generated Variables
901
931
 
@@ -903,16 +933,42 @@ These variables are set automatically from GitHub context:
903
933
 
904
934
  | Variable | Source | Description |
905
935
  |----------|--------|-------------|
936
+ | `CDK_DEFAULT_ACCOUNT` | `${{ github.repository_owner }}` | Repository owner |
937
+ | `CDK_DEFAULT_REGION` | `AWS_REGION` | Same as AWS region |
906
938
  | `CDK_ENV_REPO` | `${{ github.repository }}` | Repository name (owner/repo) |
907
939
  | `PROJECT_COMMIT` | `${{ github.sha }}` | Current commit SHA |
908
940
  | `PROJECT_VERSION` | `package.json` | Version from package.json |
909
941
 
910
942
  ### Environment Secrets
911
943
 
912
- Add secrets for sensitive values. Secrets are passed to actions via `${{ secrets.SECRET_NAME }}`.
944
+ By default, no secrets are required. Dependencies add secrets as needed.
945
+
946
+ Secrets are passed to CDK via `JaypieEnvSecret` construct and made available at runtime.
913
947
 
914
948
  Navigate to: **Settings → Environments → [environment] → Environment secrets**
915
949
 
950
+ #### Example: Auth0 Integration
951
+
952
+ When adding Auth0 authentication:
953
+
954
+ **Environment Variables:**
955
+ - `AUTH0_AUDIENCE` - API identifier
956
+ - `AUTH0_CLIENT_ID` - Application client ID
957
+ - `AUTH0_DOMAIN` - Auth0 tenant domain
958
+
959
+ **Environment Secrets:**
960
+ - `AUTH0_CLIENT_SECRET` - Application client secret
961
+
962
+ Add to workflow:
963
+ ```yaml
964
+ - name: Deploy CDK Stack
965
+ uses: ./.github/actions/cdk-deploy
966
+ with:
967
+ stack-name: AppStack
968
+ env:
969
+ AUTH0_CLIENT_SECRET: ${{ secrets.AUTH0_CLIENT_SECRET }}
970
+ ```
971
+
916
972
  ### Deployment Protection Rules (Optional)
917
973
 
918
974
  You can add protection rules to any environment:
@@ -948,15 +1004,6 @@ jobs:
948
1004
  aws-region: ${{ steps.setup-env.outputs.aws-region }}
949
1005
  ```
950
1006
 
951
- The action uses bash parameter expansion to apply defaults:
952
-
953
- ```bash
954
- AWS_REGION="${{ inputs.aws-region }}"
955
- AWS_REGION="${AWS_REGION:-us-east-1}" # Default if empty
956
- echo "AWS_REGION=${AWS_REGION}" >> $GITHUB_ENV
957
- echo "aws-region=${AWS_REGION}" >> $GITHUB_OUTPUT
958
- ```
959
-
960
1007
  ### Environment Configuration by Target
961
1008
 
962
1009
  | Environment | `PROJECT_ENV` | `LOG_LEVEL` | Notes |
@@ -1080,7 +1127,6 @@ on:
1080
1127
 
1081
1128
  concurrency:
1082
1129
  group: deploy-personal-build-${{ github.actor }}
1083
- cancel-in-progress: true
1084
1130
 
1085
1131
  jobs:
1086
1132
  deploy:
@@ -1137,3 +1183,4 @@ export class AppStack extends JaypieAppStack { ... }
1137
1183
  - Verify variables are passed as inputs to `setup-environment`
1138
1184
  - Check the environment name in the job matches the GitHub environment name
1139
1185
  - Verify variable names match exactly (case-sensitive)
1186
+