|
1 |
| -run_env = ParameterKey=RunEnvironment,ParameterValue |
2 |
| -set_application_prefix = ParameterKey=ApplicationPrefix,ParameterValue |
3 |
| -set_application_name = ParameterKey=ApplicationFriendlyName,ParameterValue |
4 |
| - |
5 | 1 | prod_aws_account = 298118738376
|
6 | 2 | dev_aws_account = 427040638965
|
7 | 3 | current_aws_account := $(shell aws sts get-caller-identity --query Account --output text)
|
8 | 4 |
|
9 | 5 | src_directory_root = src/
|
10 | 6 | dist_ui_directory_root = dist_ui/
|
11 | 7 | integration_test_directory_root = tests/live_integration/
|
12 |
| - |
13 |
| -# CHANGE ME (as needed) |
14 |
| -application_key=infra-core-api |
15 |
| -application_name="InfraCoreApi" |
16 |
| - |
17 |
| -region="us-east-1" |
18 |
| - |
19 |
| -# DO NOT CHANGE |
20 |
| -common_params = --no-confirm-changeset \ |
21 |
| - --no-fail-on-empty-changeset \ |
22 |
| - --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM CAPABILITY_AUTO_EXPAND \ |
23 |
| - --region $(region) \ |
24 |
| - --stack-name $(application_key) \ |
25 |
| - --tags "project=$(application_key)" "techlead=$(techlead)" \ |
26 |
| - --s3-prefix $(application_key) \ |
27 |
| - --resolve-s3 |
28 |
| - |
29 |
| -s3_bucket_prefix = "$(current_aws_account)-$(region)-$(application_key)" |
30 |
| -ui_s3_bucket = "$(s3_bucket_prefix)-ui" |
31 |
| -docs_s3_bucket = "$(s3_bucket_prefix)-docs" |
32 |
| - |
33 |
| - |
| 8 | +npm_install_params = --omit=dev --target_arch=arm64 --target_platform=linux --target_libc=glibc --cpu arm64 --os linux --arch=arm64 |
34 | 9 | GIT_HASH := $(shell git rev-parse --short HEAD)
|
35 |
| -ORIGIN_SECRET := $(shell openssl rand -hex 32) |
36 | 10 |
|
37 | 11 | .PHONY: clean
|
38 | 12 |
|
@@ -60,80 +34,49 @@ clean:
|
60 | 34 | build_swagger:
|
61 | 35 | cd src/api && npx tsx --experimental-loader=./mockLoader.mjs createSwagger.ts && cd ../..
|
62 | 36 |
|
63 |
| -build: src/ cloudformation/ |
| 37 | +build: src/ |
64 | 38 | yarn -D
|
65 | 39 | yarn build
|
66 | 40 | make build_swagger
|
67 | 41 | cp -r src/api/resources/ dist/api/resources
|
68 | 42 | rm -rf dist/lambda/sqs
|
69 |
| - sam build --template-file cloudformation/main.yml --use-container --parallel |
70 |
| - mkdir -p .aws-sam/build/AppApiLambdaFunction/node_modules/aws-crt/ |
71 |
| - cp -r node_modules/aws-crt/dist .aws-sam/build/AppApiLambdaFunction/node_modules/aws-crt |
72 |
| -## IF WE EVER CHANGE THE LAMBDA ARCH, BE SURE TO CHANGE THESE ## |
73 |
| - rm -rf .aws-sam/build/AppApiLambdaFunction/node_modules/aws-crt/dist/bin/darwin* |
74 |
| - rm -rf .aws-sam/build/AppApiLambdaFunction/node_modules/aws-crt/dist/bin/linux-x64* |
75 |
| - rm -rf .aws-sam/build/AppApiLambdaFunction/node_modules/aws-crt/dist/bin/linux-arm64-musl |
76 |
| - rm -rf .aws-sam/build/AppApiLambdaFunction/node_modules/argon2/prebuilds/darwin* |
77 |
| - rm -rf .aws-sam/build/AppApiLambdaFunction/node_modules/argon2/prebuilds/freebsd* |
78 |
| - rm -rf .aws-sam/build/AppApiLambdaFunction/node_modules/argon2/prebuilds/linux-arm |
79 |
| - rm -rf .aws-sam/build/AppApiLambdaFunction/node_modules/argon2/prebuilds/linux-x64* |
80 |
| - rm -rf .aws-sam/build/AppApiLambdaFunction/node_modules/argon2/prebuilds/win32-x64* |
81 |
| - rm -rf .aws-sam/build/AppApiLambdaFunction/node_modules/argon2/prebuilds/linux-arm64/argon2.armv8.musl.node |
| 43 | + docker run --rm -v "$(shell pwd)/dist/lambda":/var/task public.ecr.aws/sam/build-nodejs22.x:latest \ |
| 44 | + sh -c "npm install $(npm_install_params) && \ |
| 45 | + rm -rf node_modules/aws-crt/dist/bin/{darwin*,linux-x64*,linux-arm64-musl} && \ |
| 46 | + rm -rf node_modules/argon2/prebuilds/{darwin*,freebsd*,linux-arm,linux-x64*,win32-x64*} && \ |
| 47 | + rm -rf node_modules/argon2/prebuilds/linux-arm64/argon2.armv8.musl.node" |
| 48 | + |
| 49 | + docker run --rm -v "$(shell pwd)/dist/sqsConsumer":/var/task public.ecr.aws/sam/build-nodejs22.x:latest \ |
| 50 | + sh -c "npm install $(npm_install_params) && \ |
| 51 | + rm -rf node_modules/aws-crt/dist/bin/{darwin*,linux-x64*,linux-arm64-musl} && \ |
| 52 | + rm -rf node_modules/argon2/prebuilds/{darwin*,freebsd*,linux-arm,linux-x64*,win32-x64*} && \ |
| 53 | + rm -rf node_modules/argon2/prebuilds/linux-arm64/argon2.armv8.musl.node" |
82 | 54 |
|
83 | 55 | local:
|
84 | 56 | VITE_BUILD_HASH=$(GIT_HASH) yarn run dev
|
85 | 57 |
|
86 |
| - |
87 |
| -postdeploy: |
88 |
| - @echo "Syncing S3 UI bucket..." |
89 |
| - aws s3 sync $(dist_ui_directory_root) s3://$(ui_s3_bucket)/ --delete |
90 |
| - make invalidate_cloudfront |
91 |
| - |
92 | 58 | deploy_prod: check_account_prod
|
93 |
| - @echo "Deploying CloudFormation stack..." |
94 |
| - @sam deploy $(common_params) --parameter-overrides $(run_env)=prod $(set_application_prefix)=$(application_key) $(set_application_name)="$(application_name)" S3BucketPrefix="$(s3_bucket_prefix)" CloudfrontOriginSecret="$(ORIGIN_SECRET)" |
95 | 59 | @echo "Deploying Terraform..."
|
96 |
| - $(eval MAIN_DISTRIBUTION_ID := $(shell aws cloudformation describe-stacks --stack-name $(application_key) --query "Stacks[0].Outputs[?OutputKey=='CloudfrontDistributionId'].OutputValue" --output text)) |
97 | 60 | terraform -chdir=terraform/envs/prod init -lockfile=readonly
|
98 |
| - terraform -chdir=terraform/envs/prod apply -auto-approve -var main_cloudfront_distribution_id="$(MAIN_DISTRIBUTION_ID)" |
99 |
| - make postdeploy |
| 61 | + terraform -chdir=terraform/envs/prod apply -auto-approve |
100 | 62 |
|
101 | 63 | deploy_dev: check_account_dev
|
102 |
| - @echo "Deploying CloudFormation stack..." |
103 |
| - @sam deploy $(common_params) --parameter-overrides $(run_env)=dev $(set_application_prefix)=$(application_key) $(set_application_name)="$(application_name)" S3BucketPrefix="$(s3_bucket_prefix)" CloudfrontOriginSecret="$(ORIGIN_SECRET)" |
104 | 64 | @echo "Deploying Terraform..."
|
105 |
| - $(eval MAIN_DISTRIBUTION_ID := $(shell aws cloudformation describe-stacks --stack-name $(application_key) --query "Stacks[0].Outputs[?OutputKey=='CloudfrontDistributionId'].OutputValue" --output text)) |
106 | 65 | terraform -chdir=terraform/envs/qa init -lockfile=readonly
|
107 |
| - terraform -chdir=terraform/envs/qa apply -auto-approve -var main_cloudfront_distribution_id="$(MAIN_DISTRIBUTION_ID)" |
108 |
| - make postdeploy |
109 |
| - |
110 |
| -invalidate_cloudfront: |
111 |
| - @echo "Creating CloudFront invalidation..." |
112 |
| - $(eval DISTRIBUTION_ID := $(shell aws cloudformation describe-stacks --stack-name $(application_key) --query "Stacks[0].Outputs[?OutputKey=='CloudfrontDistributionId'].OutputValue" --output text)) |
113 |
| - $(eval DISTRIBUTION_ID_2 := $(shell aws cloudformation describe-stacks --stack-name $(application_key) --query "Stacks[0].Outputs[?OutputKey=='CloudfrontIcalDistributionId'].OutputValue" --output text)) |
114 |
| - $(eval INVALIDATION_ID := $(shell aws cloudfront create-invalidation --distribution-id $(DISTRIBUTION_ID) --paths "/*" --query 'Invalidation.Id' --output text --no-cli-page)) |
115 |
| - $(eval INVALIDATION_ID_2 := $(shell aws cloudfront create-invalidation --distribution-id $(DISTRIBUTION_ID_2) --paths "/*" --query 'Invalidation.Id' --output text --no-cli-page)) |
116 |
| - @echo "Triggered invalidation jobs $(INVALIDATION_ID) and $(INVALIDATION_ID_2)..." |
117 |
| - @echo "Waiting on job $(INVALIDATION_ID)..." |
118 |
| - aws cloudfront wait invalidation-completed --distribution-id $(DISTRIBUTION_ID) --id $(INVALIDATION_ID) |
119 |
| - @echo "Waiting on job $(INVALIDATION_ID_2)..." |
120 |
| - aws cloudfront wait invalidation-completed --distribution-id $(DISTRIBUTION_ID_2) --id $(INVALIDATION_ID_2) |
121 |
| - @echo "CloudFront invalidation completed!" |
| 66 | + terraform -chdir=terraform/envs/qa apply -auto-approve |
122 | 67 |
|
123 | 68 | init_terraform:
|
124 | 69 | terraform -chdir=terraform/envs/qa init
|
125 | 70 | terraform -chdir=terraform/envs/prod init
|
126 | 71 |
|
127 | 72 | install:
|
128 | 73 | yarn -D
|
129 |
| - pip install cfn-lint |
130 | 74 |
|
131 | 75 | test_live_integration: install
|
132 | 76 | yarn test:live
|
133 | 77 |
|
134 | 78 | test_unit: install
|
135 | 79 | yarn lint
|
136 |
| - cfn-lint cloudformation/**/* |
137 | 80 | terraform -chdir=terraform/envs/qa init -reconfigure -backend=false -upgrade
|
138 | 81 | terraform -chdir=terraform/envs/qa fmt -check
|
139 | 82 | terraform -chdir=terraform/envs/qa validate
|
|
0 commit comments