2026-06-26 15:06:30 -04:00
|
|
|
#!/usr/bin/env node
|
|
|
|
|
import "source-map-support/register";
|
|
|
|
|
import * as cdk from "aws-cdk-lib";
|
2026-06-29 12:39:23 -04:00
|
|
|
import { ACCOUNT, REGION, bootstrapQualifier } from "../lib/config";
|
2026-06-26 15:06:30 -04:00
|
|
|
import { OpenSweIamStack } from "../lib/open-swe-iam-stack";
|
|
|
|
|
import { OpenSweStack } from "../lib/open-swe-stack";
|
|
|
|
|
import { KebabNamingAspect } from "../lib/aspects/kebab-naming-aspect";
|
|
|
|
|
|
|
|
|
|
const app = new cdk.App();
|
|
|
|
|
const env = { account: ACCOUNT, region: REGION };
|
|
|
|
|
|
|
|
|
|
// Account-level shared OIDC deploy roles (singletons). Deployed FIRST.
|
|
|
|
|
new OpenSweIamStack(app, "OpenSweIamStack", {
|
|
|
|
|
stackName: "open-swe-iam",
|
|
|
|
|
env,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// The two env stacks — explicit kebab-case stackName (never let CDK default to
|
|
|
|
|
// PascalCase), env-parameterised so resources are `open-swe-<env>-*`.
|
2026-06-29 12:39:23 -04:00
|
|
|
//
|
|
|
|
|
// B-1 / OSWE-IAC-01: dev synthesizes against its OWN bootstrap qualifier
|
|
|
|
|
// (`oswedev`), so it deploys via the cdk-oswedev-* roles the dev infra role is
|
|
|
|
|
// scoped to — and NOT the default hnb659fds bootstrap roles that deploy prod.
|
|
|
|
|
// Prod stays on the default qualifier (no synthesizer override).
|
2026-06-26 15:06:30 -04:00
|
|
|
new OpenSweStack(app, "OpenSweDevStack", {
|
|
|
|
|
stackName: "open-swe-dev",
|
|
|
|
|
env,
|
|
|
|
|
envName: "dev",
|
2026-06-29 12:39:23 -04:00
|
|
|
synthesizer: new cdk.DefaultStackSynthesizer({
|
|
|
|
|
qualifier: bootstrapQualifier("dev"),
|
|
|
|
|
}),
|
2026-06-26 15:06:30 -04:00
|
|
|
});
|
|
|
|
|
|
|
|
|
|
new OpenSweStack(app, "OpenSweProdStack", {
|
|
|
|
|
stackName: "open-swe-prod",
|
|
|
|
|
env,
|
|
|
|
|
envName: "prod",
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// Fail synth on any non-kebab-case explicit resource/stack name.
|
|
|
|
|
cdk.Aspects.of(app).add(new KebabNamingAspect());
|
|
|
|
|
|
|
|
|
|
app.synth();
|