Skip to content

v59.5.0

Compare
Choose a tag to compare
@guardian-ci guardian-ci released this 17 Sep 13:48
· 90 commits to main since this release
3d81b92

Minor Changes

feat(experimental-ec2-pattern): Pattern to deploy ASG updates w/CFN (#2417)

Included in this update is a new experimental pattern GuEc2AppExperimental, which can be used in place of a GuEc2App:

import { GuEc2AppExperimental } from "@guardian/cdk/lib/experimental/patterns/ec2-app";

This pattern will add an AutoScalingRollingUpdate policy to the autoscaling group.This allows application updates to be performed like a standard CloudFormation update, and using the custom logic provided by Riff-Raff's autoscaling deployment type is unnecessary.

This experimental pattern has few requirements.

Add the build number to the application artifact

This change requires versioned artifacts.

The easiest way to achieve this is by adding the build number to the filename of the artifact:

import { UserData } from "aws-cdk-lib/aws-ec2";
// Use a GitHub Actions provided environment variable
const buildNumber = process.env.GITHUB_RUN_NUMBER ?? "DEV";

const userData = UserData.forLinux();
userData.addCommands(`aws s3 cp s3://dist-bucket/path/to/artifact-${buildNumber}.deb /tmp/artifact.deb`);
userData.addCommands(`dpkg -i /tmp/artifact.dep`);
riff-raff.yaml

The riff-raff.yaml file should remove the deploy action of the autoscaling deployment type.
Though including it shouldn't break anything, it would result in a longer deployment time as instance will be rotated by both CloudFormation and Riff-Raff's custom logic.

The uploadArtifacts step of the autoscaling deployment type should still be included, with the cloud-formation deployment type depending on it. This step uploads the versioned artifact to S3.

Tip

An auto-generated riff-raff.yaml file meets this requirement.