Skip to content

Commit dbfa12c

Browse files
committed
chore: clean up mise aws deploy tasks
1 parent 7e12267 commit dbfa12c

8 files changed

Lines changed: 101 additions & 5 deletions

File tree

mise.toml

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -143,14 +143,30 @@ depends = ["env:setup"]
143143
run = "./scripts/test-services.sh --max-retries 5 --retry-delay 10"
144144

145145
# =============================================================================
146-
# aws: AWS tasks
146+
# aws: AWS deployment tasks
147+
#
148+
# Deployment modes are controlled via the DEPLOY_MODE environment variable:
149+
# - local: Build containers from local Dockerfiles (DEPLOY_MODE=local)
150+
# - release: Pull prebuilt images from GHCR tagged "latest" (DEPLOY_MODE=release)
151+
# - (unset): Falls back to COMMIT_SHA env var, or "latest" if not set
152+
#
153+
# DEPLOY_MODE is NOT stored in .env, so it propagates naturally through
154+
# subprocess calls. CDK's SharedProps reads DEPLOY_MODE and sets the
155+
# appropriate image tag. Services can define their own aws:deploy:local
156+
# and aws:deploy:release tasks that set DEPLOY_MODE and delegate to aws:deploy.
157+
#
158+
# To deploy a specific tagged version from the registry (e.g., a CI-built
159+
# image), set COMMIT_SHA to the desired tag and run aws:deploy directly
160+
# without setting DEPLOY_MODE. For example:
161+
# COMMIT_SHA=abc123 npx cdk deploy (from infra/aws directory)
147162
# =============================================================================
148163

149164
[tasks."aws:deploy:local"]
150165
description = "Deploy to AWS (build containers locally)"
151166
depends = ["env:setup"]
167+
env = { DEPLOY_MODE = "local" }
152168
run = """
153-
echo "=== Deploying Stickerlandia to AWS: $ENV (COMMIT_SHA=$COMMIT_SHA) ==="
169+
echo "=== Deploying Stickerlandia to AWS: $ENV (DEPLOY_MODE=$DEPLOY_MODE) ==="
154170
mise run //shared:aws:deploy
155171
mise run //user-management:aws:deploy
156172
mise run //sticker-award:aws:deploy
@@ -163,9 +179,9 @@ echo "=== Deployment complete! ==="
163179
[tasks."aws:deploy:release"]
164180
description = "Deploy to AWS using prebuilt GHCR images"
165181
depends = ["env:setup"]
166-
env = { COMMIT_SHA = "latest" }
182+
env = { DEPLOY_MODE = "release" }
167183
run = """
168-
echo "=== Deploying Stickerlandia to AWS: $ENV (COMMIT_SHA=$COMMIT_SHA) ==="
184+
echo "=== Deploying Stickerlandia to AWS: $ENV (DEPLOY_MODE=$DEPLOY_MODE) ==="
169185
mise run //shared:aws:deploy
170186
mise run //user-management:aws:deploy
171187
mise run //sticker-award:aws:deploy

shared/lib/shared-constructs/lib/shared-props.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,15 @@ export class SharedProps {
4343
enableDatadog: boolean = true
4444
) {
4545
const environment = process.env.ENV || "dev";
46-
const version = process.env.COMMIT_SHA || "latest";
46+
const deployMode = process.env.DEPLOY_MODE;
47+
let version: string;
48+
if (deployMode === "local") {
49+
version = "LOCAL";
50+
} else if (deployMode === "release") {
51+
version = "latest";
52+
} else {
53+
version = process.env.COMMIT_SHA || "latest";
54+
}
4755
const commitSha = process.env.COMMIT_SHA_FULL || "";
4856

4957
this.datadog = {

shared/mise.toml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,18 @@ dir = "infra/aws"
2020
depends = ["lib:install", "infra:install"]
2121
run = "npx cdk deploy --require-approval never"
2222

23+
[tasks."aws:deploy:local"]
24+
description = "Deploy shared infrastructure (local mode)"
25+
depends = ["//:env:setup"]
26+
env = { DEPLOY_MODE = "local" }
27+
run = "mise run aws:deploy"
28+
29+
[tasks."aws:deploy:release"]
30+
description = "Deploy shared infrastructure (release mode)"
31+
depends = ["//:env:setup"]
32+
env = { DEPLOY_MODE = "release" }
33+
run = "mise run aws:deploy"
34+
2335
[tasks."aws:down"]
2436
description = "Destroy shared infrastructure on AWS"
2537
dir = "infra/aws"

sticker-award/mise.toml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,18 @@ dir = "infra/aws"
3131
depends = ["infra:install", "//shared:aws:deploy"]
3232
run = "npx cdk deploy --require-approval never"
3333

34+
[tasks."aws:deploy:local"]
35+
description = "Deploy to AWS (build container locally)"
36+
depends = ["//:env:setup", "//shared:aws:deploy:local", "//user-management:aws:deploy:local"]
37+
env = { DEPLOY_MODE = "local" }
38+
run = "mise run aws:deploy"
39+
40+
[tasks."aws:deploy:release"]
41+
description = "Deploy to AWS using prebuilt GHCR images"
42+
depends = ["//:env:setup", "//shared:aws:deploy:release", "//user-management:aws:deploy:release"]
43+
env = { DEPLOY_MODE = "release" }
44+
run = "mise run aws:deploy"
45+
3446
[tasks."aws:down"]
3547
description = "Destroy AWS stack"
3648
dir = "infra/aws"

sticker-catalogue/mise.toml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,18 @@ dir = "infra/aws"
3131
depends = ["infra:install", "//shared:aws:deploy"]
3232
run = "npx cdk deploy --require-approval never"
3333

34+
[tasks."aws:deploy:local"]
35+
description = "Deploy to AWS (build container locally)"
36+
depends = ["//:env:setup", "//shared:aws:deploy:local", "//user-management:aws:deploy:local"]
37+
env = { DEPLOY_MODE = "local" }
38+
run = "mise run aws:deploy"
39+
40+
[tasks."aws:deploy:release"]
41+
description = "Deploy to AWS using prebuilt GHCR images"
42+
depends = ["//:env:setup", "//shared:aws:deploy:release", "//user-management:aws:deploy:release"]
43+
env = { DEPLOY_MODE = "release" }
44+
run = "mise run aws:deploy"
45+
3446
[tasks."aws:down"]
3547
description = "Destroy AWS stack"
3648
dir = "infra/aws"

user-management/mise.toml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,18 @@ dir = "infra/aws"
3535
depends = ["infra:install", "//shared:aws:deploy"]
3636
run = "npx cdk deploy --require-approval never"
3737

38+
[tasks."aws:deploy:local"]
39+
description = "Deploy to AWS (build container locally)"
40+
depends = ["//:env:setup", "//shared:aws:deploy:local"]
41+
env = { DEPLOY_MODE = "local" }
42+
run = "mise run aws:deploy"
43+
44+
[tasks."aws:deploy:release"]
45+
description = "Deploy to AWS using prebuilt GHCR images"
46+
depends = ["//:env:setup", "//shared:aws:deploy:release"]
47+
env = { DEPLOY_MODE = "release" }
48+
run = "mise run aws:deploy"
49+
3850
[tasks."aws:down"]
3951
description = "Destroy AWS stack"
4052
dir = "infra/aws"

web-backend/mise.toml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,18 @@ dir = "infra/aws"
3131
depends = ["infra:install", "//shared:aws:deploy"]
3232
run = "npx cdk deploy --require-approval never"
3333

34+
[tasks."aws:deploy:local"]
35+
description = "Deploy to AWS (build container locally)"
36+
depends = ["//:env:setup", "//shared:aws:deploy:local", "//user-management:aws:deploy:local"]
37+
env = { DEPLOY_MODE = "local" }
38+
run = "mise run aws:deploy"
39+
40+
[tasks."aws:deploy:release"]
41+
description = "Deploy to AWS using prebuilt GHCR images"
42+
depends = ["//:env:setup", "//shared:aws:deploy:release", "//user-management:aws:deploy:release"]
43+
env = { DEPLOY_MODE = "release" }
44+
run = "mise run aws:deploy"
45+
3446
[tasks."aws:down"]
3547
description = "Destroy AWS stack"
3648
dir = "infra/aws"

web-frontend/mise.toml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,18 @@ dir = "infra/aws"
3838
depends = ["infra:install", "build:local", "//shared:aws:deploy"]
3939
run = "npx cdk deploy --require-approval never"
4040

41+
[tasks."aws:deploy:local"]
42+
description = "Deploy frontend to AWS (local mode)"
43+
depends = ["//:env:setup", "//shared:aws:deploy:local", "//user-management:aws:deploy:local"]
44+
env = { DEPLOY_MODE = "local" }
45+
run = "mise run aws:deploy"
46+
47+
[tasks."aws:deploy:release"]
48+
description = "Deploy frontend to AWS (release mode)"
49+
depends = ["//:env:setup", "//shared:aws:deploy:release", "//user-management:aws:deploy:release"]
50+
env = { DEPLOY_MODE = "release" }
51+
run = "mise run aws:deploy"
52+
4153
[tasks."aws:down"]
4254
description = "Destroy AWS stack"
4355
dir = "infra/aws"

0 commit comments

Comments
 (0)