41
41
description : The git commit SHA to deploy.
42
42
required : true
43
43
type : string
44
+ app_version :
45
+ description : The git ref to deploy (branch, tag, or commit SHA).
46
+ required : false
47
+ type : string
44
48
45
49
permissions : {}
46
50
52
56
&& 'arn:aws:iam::820242920762:role/GithubDeployMavisAndInfrastructure'
53
57
|| 'arn:aws:iam::393416225559:role/GithubDeployMavisAndInfrastructure' }}
54
58
aws_account_id : ${{ inputs.environment == 'production' && '820242920762' || '393416225559' }}
55
- web_codedeploy_application : mavis-${{ inputs.environment }}
56
- web_codedeploy_group : blue-green-group-${{ inputs.environment }}
57
59
cluster_name : mavis-${{ inputs.environment }}
58
- good_job_service : mavis-${{ inputs.environment }}-good-job
59
- web_service : mavis-${{ inputs.environment }}-web
60
+ app_version : ${{ inputs.app_version == '' && 'unknown' || inputs.app_version }}
60
61
61
62
jobs :
62
63
prepare-deployment :
77
78
with :
78
79
role-to-assume : ${{ env.aws-role }}
79
80
aws-region : eu-west-2
81
+ - name : Setup python
82
+ uses : actions/setup-python@v4
83
+ with :
84
+ python-version : 3.12.3
85
+ cache : pip
86
+ - name : Install Python dependencies
87
+ run : python3 -m pip install -r script/requirements.txt
80
88
- name : Get image digest
81
89
id : get-image-digest
82
90
run : |
@@ -92,33 +100,39 @@ jobs:
92
100
parsed_env_vars=$(yq -r '.environments.${{ inputs.environment }} | to_entries | .[] | .key + "=" + .value' config/container_variables.yml)
93
101
echo "parsed_env_vars=$parsed_env_vars" >> $GITHUB_OUTPUT
94
102
- name : Populate web task definition
95
- if : inputs.server_types == 'web' || inputs.server_types == 'all'
103
+ if : ${{ inputs.server_types == 'web' || inputs.server_types == 'all' }}
96
104
id : create-web-task-definition
97
105
uses : aws-actions/amazon-ecs-render-task-definition@v1
98
106
with :
99
107
task-definition-family : " mavis-web-task-definition-${{ inputs.environment }}"
100
108
container-name : " application"
101
109
image : " ${{ env.aws_account_id }}.dkr.ecr.eu-west-2.amazonaws.com/mavis/webapp@${{ steps.get-image-digest.outputs.digest }}"
102
110
environment-variables : ${{ steps.parse-environment-variables.outputs.parsed_env_vars }}
103
- secrets : | # We can define secrets here too if we want
104
- RAILS_MASTER_KEY=/copilot/mavis/secrets/STAGING_RAILS_MASTER_KEY
105
111
- name : Populate good-job task definition
106
- if : inputs.server_types == 'good-job' || inputs.server_types == 'all'
112
+ if : ${{ inputs.server_types == 'good-job' || inputs.server_types == 'all' }}
107
113
id : create-good-job-task-definition
108
114
uses : aws-actions/amazon-ecs-render-task-definition@v1
109
115
with :
110
116
task-definition-family : " mavis-good-job-task-definition-${{ inputs.environment }}"
111
117
container-name : " application"
112
118
image : " ${{ env.aws_account_id }}.dkr.ecr.eu-west-2.amazonaws.com/mavis/webapp@${{ steps.get-image-digest.outputs.digest }}"
113
119
environment-variables : ${{ steps.parse-environment-variables.outputs.parsed_env_vars }}
120
+ - name : Populate SSM parameters for web service
121
+ if : ${{ inputs.server_types == 'web' || inputs.server_types == 'all' }}
122
+ run : |
123
+ python3 script/populate_ssm_parameters.py ${{ inputs.environment }} web --app-version ${{ env.app_version }}
124
+ - name : Populate SSM parameters for good-job service
125
+ if : ${{ inputs.server_types == 'good-job' || inputs.server_types == 'all' }}
126
+ run : |
127
+ python3 script/populate_ssm_parameters.py ${{ inputs.environment }} good-job --app-version ${{ env.app_version }}
114
128
- name : Upload artifact for web task definition
115
- if : inputs.server_types == 'web' || inputs.server_types == 'all'
129
+ if : ${{ inputs.server_types == 'web' || inputs.server_types == 'all' }}
116
130
uses : actions/upload-artifact@v4
117
131
with :
118
132
name : ${{ inputs.environment }}-web-task-definition
119
133
path : ${{ steps.create-web-task-definition.outputs.task-definition }}
120
134
- name : Upload artifact for good-job task definition
121
- if : inputs.server_types == 'good-job' || inputs.server_types == 'all'
135
+ if : ${{ inputs.server_types == 'good-job' || inputs.server_types == 'all' }}
122
136
uses : actions/upload-artifact@v4
123
137
with :
124
138
name : ${{ inputs.environment }}-good-job-task-definition
@@ -134,7 +148,7 @@ jobs:
134
148
deploy-web :
135
149
name : Deploy web service
136
150
runs-on : ubuntu-latest
137
- if : inputs.server_types == 'web' || inputs.server_types == 'all'
151
+ if : ${{ inputs.server_types == 'web' || inputs.server_types == 'all' }}
138
152
needs : [ prepare-deployment, approve-deployments ]
139
153
permissions :
140
154
id-token : write
@@ -166,9 +180,9 @@ jobs:
166
180
task-definition : ${{ needs.prepare-deployment.outputs.web-task-definition-path }}
167
181
codedeploy-appspec : appspec.yaml
168
182
cluster : ${{ env.cluster_name }}
169
- service : ${{ env.web_service }}
170
- codedeploy-application : ${{ env.web_codedeploy_application }}
171
- codedeploy-deployment-group : ${{ env.web_codedeploy_group }}
183
+ service : mavis- ${{ inputs.environment }}-web
184
+ codedeploy-application : mavis- ${{ inputs.environment }}
185
+ codedeploy-deployment-group : blue-green-group- ${{ inputs.environment }}
172
186
- name : Wait for deployment to complete
173
187
run : |
174
188
echo "Waiting for CodeDeploy deployment ${{ steps.deploy-web-service.outputs.codedeploy-deployment-id }} to complete..."
@@ -178,7 +192,7 @@ jobs:
178
192
deploy-good-job :
179
193
name : Deploy good-job service
180
194
runs-on : ubuntu-latest
181
- if : inputs.server_types == 'good-job' || inputs.server_types == 'all'
195
+ if : ${{ inputs.server_types == 'good-job' || inputs.server_types == 'all' }}
182
196
needs : [ prepare-deployment, approve-deployments ]
183
197
permissions :
184
198
id-token : write
@@ -198,6 +212,6 @@ jobs:
198
212
with :
199
213
task-definition : ${{ needs.prepare-deployment.outputs.good-job-task-definition-path }}
200
214
cluster : ${{ env.cluster_name }}
201
- service : ${{ env.good_job_service }}
215
+ service : mavis- ${{ inputs.environment }}-good-job
202
216
force-new-deployment : true
203
217
wait-for-service-stability : true
0 commit comments