Skip to content

Commit 24dd2a1

Browse files
authored
Tagged prod releases (#1058)
* feat(ci): require tagged releases for deploy to prod * feat(ci): maintain scheduled dev-blue deploy as a separate workflow * chore(ci): bump everything to version 7 of checkout * refactor(ci): I don't think we actually need checkout? * refactor(ci): remove redundant workflow_call block.
1 parent 262ea45 commit 24dd2a1

6 files changed

Lines changed: 100 additions & 174 deletions

File tree

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
name: Scheduled deploy to dev-blue
2+
3+
on:
4+
schedule:
5+
- cron: "0 5 * * *"
6+
7+
permissions:
8+
contents: read # Needed to checkout repo
9+
10+
concurrency:
11+
group: deploy-dev-blue
12+
cancel-in-progress: true
13+
14+
jobs:
15+
call-workflow:
16+
name: Call MBTA deploy-ecs workflow
17+
permissions:
18+
contents: read # Needed to checkout repo
19+
id-token: write # Needed to access ECR and ECS
20+
uses: mbta/workflows/.github/workflows/deploy-ecs.yml@c76e5ccd9556fbea52bc41548f7ceed5985ad775 # v5.1.0
21+
with:
22+
app-name: api
23+
environment: dev-blue
24+
docker-additional-tags: dev-blue
25+
secrets:
26+
aws-role-arn: ${{ secrets.AWS_ROLE_ARN }}
27+
docker-repo: ${{ secrets.DOCKER_REPO }}
28+
slack-webhook: ${{ secrets.SLACK_WEBHOOK }}

.github/workflows/deploy-dev-blue.yml

Lines changed: 0 additions & 48 deletions
This file was deleted.

.github/workflows/deploy-dev-green.yml

Lines changed: 0 additions & 44 deletions
This file was deleted.

.github/workflows/deploy-dev.yml

Lines changed: 0 additions & 47 deletions
This file was deleted.
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
name: Deploy to lower environment (dev etc)
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
environment:
7+
type: environment
8+
default: dev
9+
required: true
10+
push:
11+
branches: master
12+
13+
permissions:
14+
contents: read # Needed to checkout repo
15+
16+
concurrency:
17+
group: deploy-${{ inputs.environment }}
18+
cancel-in-progress: true
19+
20+
jobs:
21+
check-env:
22+
name: Fail if production environment
23+
if: ${{ inputs.environment == 'prod' }}
24+
runs-on: ubuntu-latest
25+
steps:
26+
- run: |
27+
echo "Failing intentionally. Please use the 'Deploy to production' workflow."
28+
exit 1
29+
call-workflow:
30+
name: Call MBTA deploy-ecs workflow
31+
if: ${{ inputs.environment != 'prod' }}
32+
permissions:
33+
contents: read # Needed to checkout repo
34+
id-token: write # Needed to access ECR and ECS
35+
uses: mbta/workflows/.github/workflows/deploy-ecs.yml@c76e5ccd9556fbea52bc41548f7ceed5985ad775 # v5.1.0
36+
with:
37+
app-name: api
38+
environment: ${{ inputs.environment }}
39+
docker-additional-tags: ${{ inputs.environment }}
40+
secrets:
41+
aws-role-arn: ${{ secrets.AWS_ROLE_ARN }}
42+
docker-repo: ${{ secrets.DOCKER_REPO }}
43+
slack-webhook: ${{ secrets.SLACK_WEBHOOK }}

.github/workflows/deploy-prod.yml

Lines changed: 29 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,39 @@
1-
name: Deploy to Prod (ECS)
1+
name: Deploy to Prod
22

3-
on: workflow_dispatch
3+
on:
4+
workflow_dispatch:
5+
release:
6+
types:
7+
- released
48

5-
permissions: {}
9+
permissions:
10+
contents: read # Needed to checkout repo
611

712
concurrency:
813
group: deploy-prod
914
cancel-in-progress: true
1015

1116
jobs:
12-
deploy:
13-
name: Deploy
17+
check-ref:
18+
name: Fail if not a tag
19+
if: ${{ !startsWith(github.ref, 'refs/tags/') }}
1420
runs-on: ubuntu-latest
15-
permissions:
16-
id-token: write # Needed to communicate with AWS
17-
contents: read # Needed to check out code
18-
environment: prod
19-
concurrency: prod
20-
env:
21-
ECS_CLUSTER: api
22-
ECS_SERVICE: api-prod
23-
2421
steps:
25-
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
26-
with:
27-
persist-credentials: false
28-
- uses: mbta/actions/build-push-ecr@788f8e264e9ebb1b76b927c89e6466d5a162be80 # v2.24
29-
id: build-push
30-
with:
31-
role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
32-
docker-repo: ${{ secrets.DOCKER_REPO }}
33-
docker-additional-tags: prod
34-
- name: Deploy to ECS
35-
uses: mbta/actions/deploy-ecs@788f8e264e9ebb1b76b927c89e6466d5a162be80 # v2.24
36-
with:
37-
role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
38-
ecs-cluster: ${{ env.ECS_CLUSTER }}
39-
ecs-service: ${{ env.ECS_SERVICE }}
40-
docker-tag: ${{ steps.build-push.outputs.docker-tag }}
41-
- uses: mbta/actions/notify-slack-deploy@788f8e264e9ebb1b76b927c89e6466d5a162be80 # v2.24
42-
if: ${{ !cancelled() }}
43-
with:
44-
webhook-url: ${{ secrets.SLACK_WEBHOOK }}
45-
job-status: ${{ job.status }}
22+
- run: |
23+
echo "Failing intentionally. Only tags may be deployed to prod."
24+
exit 1
25+
call-workflow:
26+
name: Call MBTA deploy-ecs workflow
27+
if: ${{ startsWith(github.ref, 'refs/tags/') }}
28+
permissions:
29+
contents: read # Needed to checkout repo
30+
id-token: write # Needed to access ECR and ECS
31+
uses: mbta/workflows/.github/workflows/deploy-ecs.yml@c76e5ccd9556fbea52bc41548f7ceed5985ad775 # v5.1.0
32+
with:
33+
app-name: api
34+
environment: ${{ inputs.environment }}
35+
docker-additional-tags: ${{ inputs.environment }}
36+
secrets:
37+
aws-role-arn: ${{ secrets.AWS_ROLE_ARN }}
38+
docker-repo: ${{ secrets.DOCKER_REPO }}
39+
slack-webhook: ${{ secrets.SLACK_WEBHOOK }}

0 commit comments

Comments
 (0)