@jaypie/mcp 0.2.12 → 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.
- package/README.md +62 -0
- package/dist/aws.d.ts +197 -0
- package/dist/index.js +1179 -9
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/prompts/Jaypie_CICD_with_GitHub_Actions.md +141 -14
- package/prompts/Jaypie_Init_CICD_with_GitHub_Actions.md +143 -96
- package/prompts/Jaypie_MCP_Package.md +249 -0
|
@@ -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: "
|
|
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:
|
|
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-
|
|
187
|
-
description: Project
|
|
198
|
+
project-sponsor:
|
|
199
|
+
description: Project sponsor (org-level)
|
|
188
200
|
required: false
|
|
189
|
-
|
|
190
|
-
|
|
201
|
+
# Repository-level variables
|
|
202
|
+
aws-hosted-zone:
|
|
203
|
+
description: Route53 hosted zone (repo-level)
|
|
191
204
|
required: false
|
|
192
|
-
project-
|
|
193
|
-
description: Project
|
|
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
|
-
|
|
199
|
-
|
|
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
|
-
#
|
|
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
|
-
|
|
238
|
-
|
|
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:-
|
|
264
|
+
PROJECT_SERVICE="${PROJECT_SERVICE:-stacks}"
|
|
248
265
|
|
|
249
|
-
|
|
250
|
-
|
|
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
|
-
|
|
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,8 +402,8 @@ 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
|
|
@@ -421,7 +446,7 @@ jobs:
|
|
|
421
446
|
runs-on: ubuntu-latest
|
|
422
447
|
strategy:
|
|
423
448
|
matrix:
|
|
424
|
-
node-version: [22
|
|
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,8 +518,8 @@ 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
|
|
@@ -538,7 +562,7 @@ jobs:
|
|
|
538
562
|
runs-on: ubuntu-latest
|
|
539
563
|
strategy:
|
|
540
564
|
matrix:
|
|
541
|
-
node-version: [22
|
|
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.
|
|
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,8 +643,8 @@ 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
|
|
@@ -664,7 +687,7 @@ jobs:
|
|
|
664
687
|
runs-on: ubuntu-latest
|
|
665
688
|
strategy:
|
|
666
689
|
matrix:
|
|
667
|
-
node-version: [22
|
|
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:
|
|
@@ -733,7 +755,7 @@ jobs:
|
|
|
733
755
|
runs-on: ubuntu-latest
|
|
734
756
|
strategy:
|
|
735
757
|
matrix:
|
|
736
|
-
node-version: [22
|
|
758
|
+
node-version: [22, 24]
|
|
737
759
|
steps:
|
|
738
760
|
- name: Checkout code
|
|
739
761
|
uses: actions/checkout@v4
|
|
@@ -863,9 +885,17 @@ jobs:
|
|
|
863
885
|
git push
|
|
864
886
|
```
|
|
865
887
|
|
|
866
|
-
## Step 3: Configure GitHub
|
|
888
|
+
## Step 3: Configure GitHub Variables
|
|
867
889
|
|
|
868
|
-
|
|
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 (
|
|
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
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
| `
|
|
891
|
-
| `
|
|
892
|
-
| `
|
|
893
|
-
| `
|
|
894
|
-
| `
|
|
895
|
-
| `PROJECT_KEY` | Project identifier | (from package.json name) |
|
|
896
|
-
| `PROJECT_NONCE` | Unique identifier for resources | (random) |
|
|
897
|
-
| `PROJECT_SERVICE` | Service 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
|
-
|
|
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
|
+
|