Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 61 additions & 0 deletions .github/workflows/push-load-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
name: Push Load Test

on:
# Invoked via another workflow, value passed in by string
workflow_call:
inputs:
deployment-env:
description: "Environment to deploy to (dev-green or dev-blue only)"
required: true
type: string
options:
- dev-green
- dev-blue
secrets:
aws-role-arn:
required: true
description: "AWS_ROLE_ARN value"
aws-account-id:
required: true
description: "TID_AWS_ACCOUNT_ID value"

concurrency:
group: deploy-load-test-${{ inputs.deployment-env }}
cancel-in-progress: true

jobs:
check:
name: Check for changes in load test setup
runs-on: ubuntu-latest
needs: validate
outputs:
changed: ${{ steps.changes.outputs.load_test == 'true' }}
steps:
- name: Checkout
uses: actions/checkout@v6
- uses: dorny/paths-filter@v4
id: changes
with:
filters: |
load_test:
- 'deploy/load_test/**'
- 'integration/load_tests/**'

push:
name: Deploy new version
runs-on: ubuntu-latest
needs: check
if: ${{ needs.check.outputs.changed }}
permissions:
id-token: write
contents: read
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Build, tag, and push image to Amazon ECR
id: ecr
uses: mbta/actions/build-push-ecr@v2
with:
docker-repo: "${{ secrets.aws-account-id || secrets.TID_AWS_ACCOUNT_ID }}.dkr.ecr.us-east-1.amazonaws.com/dotcom-load-tests"
dockerfile-path: "-f ./deploy/load_test/Dockerfile ."
role-to-assume: ${{ secrets.aws-role-arn || secrets.AWS_ROLE_ARN }}
8 changes: 8 additions & 0 deletions .github/workflows/use-deploy-ecs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -179,3 +179,11 @@ jobs:
secrets:
aws-account-id: ${{ secrets.aws-account-id }}
aws-role-arn: ${{ secrets.aws-role-arn }}
load-test:
uses: ./.github/workflows/push-load-test.yml
if: ${{ inputs.deployment-env == 'dev-green' || inputs.deployment-env == 'dev-blue' }}
with:
deployment-env: ${{ inputs.deployment-env }}
secrets:
aws-account-id: ${{ secrets.aws-account-id }}
aws-role-arn: ${{ secrets.aws-role-arn }}
10 changes: 10 additions & 0 deletions deploy/load_test/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
FROM debian:trixie-20260223-slim

WORKDIR /app

RUN apt-get update && apt-get install -y curl git make build-essential inotify-tools nodejs npm

RUN npm install -g artillery@2.0.33
COPY ../../integration/load_tests/homepage-heavy-load.yml ./test.yml

CMD npx artillery run -e ${ENVIRONMENT} ./test.yml
8 changes: 4 additions & 4 deletions integration/load_tests/homepage-heavy-load.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ config:
duration: 300
arrivalRate: 100
environments:
green:
target: "http://dev-green.mbtace.com"
blue:
target: "http://dev-blue.mbtace.com"
dev-green:
target: "https://dev-green.mbtace.com"
dev-blue:
target: "https://dev-blue.mbtace.com"
scenarios:
- name: "Stress test single page"
flow:
Expand Down
8 changes: 4 additions & 4 deletions integration/load_tests/homepage-light-load.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ config:
duration: 60
arrivalRate: 3
environments:
green:
target: "http://dev-green.mbtace.com"
blue:
target: "http://dev-blue.mbtace.com"
dev-green:
target: "https://dev-green.mbtace.com"
dev-blue:
target: "https://dev-blue.mbtace.com"
scenarios:
- name: "Stress test single page"
flow:
Expand Down
Loading