Skip to content

Commit

Permalink
refactor(cdk): Inject the build identifier
Browse files Browse the repository at this point in the history
This offers increased clarity.
  • Loading branch information
akash1810 committed Sep 18, 2024
1 parent 664d5c5 commit 8211507
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 6 deletions.
2 changes: 2 additions & 0 deletions cdk/bin/cdk.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,11 @@ import { App } from "aws-cdk-lib";
import { SecurityHQ } from "../lib/security-hq";

const app = new App();

new SecurityHQ(app, "security-hq", {
stack: "security",
stage: "PROD",
cloudFormationStackName: "security-hq-PROD",
env: { region: "eu-west-1" },
buildIdentifier: process.env.BUILD_NUMBER ?? "DEV"
});
2 changes: 0 additions & 2 deletions cdk/jest.setup.js
Original file line number Diff line number Diff line change
@@ -1,3 +1 @@
jest.mock("@guardian/cdk/lib/constants/tracking-tag");

process.env.BUILD_NUMBER = "TEST";
1 change: 1 addition & 0 deletions cdk/lib/security-hq.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ describe("HQ stack", () => {
const stack = new SecurityHQ(app, "security-hq", {
stack: "security",
stage: "PROD",
buildIdentifier: "TEST"
});
expect(Template.fromStack(stack).toJSON()).toMatchSnapshot();
});
Expand Down
16 changes: 12 additions & 4 deletions cdk/lib/security-hq.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,14 +41,24 @@ import {
StringParameter,
} from "aws-cdk-lib/aws-ssm";

interface SecurityHQProps extends GuStackProps {
/**
* Which application build to run.
* This will typically match the build number provided by CI.
*/
buildIdentifier: string;
}

export class SecurityHQ extends GuStack {
private static app: AppIdentity = {
app: "security-hq",
};

constructor(scope: App, id: string, props: GuStackProps) {
constructor(scope: App, id: string, props: SecurityHQProps) {
super(scope, id, props);

const { buildIdentifier } = props;

const table = new GuDynamoTable(this, "DynamoTable", {
tableName: `security-hq-iam`,
removalPolicy: RemovalPolicy.RETAIN,
Expand Down Expand Up @@ -86,15 +96,13 @@ export class SecurityHQ extends GuStack {

const domainName = "security-hq.gutools.co.uk";

const buildNumber = process.env.BUILD_NUMBER ?? "DEV";

const userData = UserData.forLinux();
userData.addCommands(`# setup security-hq
mkdir -p /etc/gu
aws --region eu-west-1 s3 cp s3://${distBucket.valueAsString}/security/${this.stage}/security-hq/security-hq.conf /etc/gu
aws --region eu-west-1 s3 cp s3://${distBucket.valueAsString}/security/${this.stage}/security-hq/security-hq-service-account-cert.json /etc/gu
aws --region eu-west-1 s3 cp s3://${distBucket.valueAsString}/security/${this.stage}/security-hq/security-hq-${buildNumber}.deb /tmp/installer.deb
aws --region eu-west-1 s3 cp s3://${distBucket.valueAsString}/security/${this.stage}/security-hq/security-hq-${buildIdentifier}.deb /tmp/installer.deb
dpkg -i /tmp/installer.deb`);

Expand Down

0 comments on commit 8211507

Please sign in to comment.