@@ -55,15 +55,13 @@ jobs:
55
55
56
56
- name : Push to ECR
57
57
run : |
58
- docker tag ${{ vars.ECR_URL }}:$SHA ${{ vars.ECR_URL }}:staging.latest
59
- docker tag ${{ vars.ECR_URL }}:$SHA ${{ vars.ECR_URL }}:production.latest
58
+ docker tag ${{ vars.ECR_URL }}:$SHA
60
59
docker push ${{ vars.ECR_URL }}:$SHA
61
- docker push ${{ vars.ECR_URL }}:staging.latest
62
- docker push ${{ vars.ECR_URL }}:production.latest
63
60
64
61
deploy-staging :
65
62
runs-on : ubuntu-latest
66
63
needs : build
64
+ environment : staging
67
65
68
66
env :
69
67
KUBE_NAMESPACE : ${{ secrets.KUBE_NAMESPACE }}
80
78
build_tag=$PREFIX-$branch-$short_sha
81
79
echo "build_tag=$build_tag" >> $GITHUB_OUTPUT
82
80
81
+ - name : Tag build and push to ECR
82
+ run : |
83
+ docker tag ${{ vars.ECR_URL }}:$SHA ${{ vars.ECR_URL }}:staging.latest
84
+ docker push ${{ vars.ECR_URL }}:staging.latest
85
+
83
86
- name : Authenticate to the cluster
84
87
env :
85
88
KUBE_CERT : ${{ secrets.KUBE_CERT }}
95
98
- name : Rollout restart deployment
96
99
run : |
97
100
kubectl set image -n ${KUBE_NAMESPACE} \
98
- deployment/disclosure-checker-deployment- staging \
101
+ config/kubernetes/ staging \
99
102
webapp="${{ vars.ECR_URL }}:$SHA"
100
103
101
104
- name : Send deploy notification to product Slack channel
@@ -128,6 +131,79 @@ jobs:
128
131
SLACK_WEBHOOK_URL : ${{ secrets.SLACK_WEBHOOK_URL }}
129
132
SLACK_WEBHOOK_TYPE : INCOMING_WEBHOOK
130
133
134
+ deploy-qa :
135
+ runs-on : ubuntu-latest
136
+ needs : build
137
+ environment : qa
138
+
139
+ env :
140
+ KUBE_NAMESPACE : ${{ secrets.KUBE_NAMESPACE }}
141
+
142
+ steps :
143
+ - name : Checkout
144
+ uses : actions/checkout@v4
145
+
146
+ - name : Store build tag
147
+ id : vars
148
+ run : |
149
+ branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}
150
+ short_sha=$(git rev-parse --short $SHA)
151
+ build_tag=$PREFIX-$branch-$short_sha
152
+ echo "build_tag=$build_tag" >> $GITHUB_OUTPUT
153
+
154
+ - name : Tag build and push to ECR
155
+ run : |
156
+ docker tag ${{ vars.ECR_URL }}:$SHA ${{ vars.ECR_URL }}:qa.latest
157
+ docker push ${{ vars.ECR_URL }}:qa.latest
158
+
159
+ - name : Authenticate to the cluster
160
+ env :
161
+ KUBE_CERT : ${{ secrets.KUBE_CERT }}
162
+ KUBE_TOKEN : ${{ secrets.KUBE_TOKEN }}
163
+ KUBE_CLUSTER : ${{ secrets.KUBE_CLUSTER }}
164
+ run : |
165
+ echo "${KUBE_CERT}" > ca.crt
166
+ kubectl config set-cluster ${KUBE_CLUSTER} --certificate-authority=./ca.crt --server=https://${KUBE_CLUSTER}
167
+ kubectl config set-credentials deploy-user --token=${KUBE_TOKEN}
168
+ kubectl config set-context ${KUBE_CLUSTER} --cluster=${KUBE_CLUSTER} --user=deploy-user --namespace=${KUBE_NAMESPACE}
169
+ kubectl config use-context ${KUBE_CLUSTER}
170
+
171
+ - name : Rollout restart deployment
172
+ run : |
173
+ kubectl set image -n ${KUBE_NAMESPACE} \
174
+ config/kubernetes/qa \
175
+ webapp="${{ vars.ECR_URL }}:$SHA"
176
+
177
+ - name : Send deploy notification to product Slack channel
178
+ uses : slackapi/slack-github-action@v1.25.0
179
+ with :
180
+ payload : |
181
+ {
182
+ "attachments": [
183
+ {
184
+ "color": "#1d990c",
185
+ "text": "${{ github.actor }} deployed *${{ steps.vars.outputs.build_tag }}* to *QA*",
186
+ "fields": [
187
+ {
188
+ "title": "Project",
189
+ "value": "Disclosure Checker",
190
+ "short": true
191
+ }
192
+ ],
193
+ "actions": [
194
+ {
195
+ "text": "Visit Job",
196
+ "type": "button",
197
+ "url": "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
198
+ }
199
+ ]
200
+ }
201
+ ]
202
+ }
203
+ env :
204
+ SLACK_WEBHOOK_URL : ${{ secrets.SLACK_WEBHOOK_URL }}
205
+ SLACK_WEBHOOK_TYPE : INCOMING_WEBHOOK
206
+
131
207
deploy-production :
132
208
runs-on : ubuntu-latest
133
209
needs : deploy-staging
@@ -149,6 +225,11 @@ jobs:
149
225
build_tag=$PREFIX-$branch-$short_sha
150
226
echo "build_tag=$build_tag" >> $GITHUB_OUTPUT
151
227
228
+ - name : Tag build and push to ECR
229
+ run : |
230
+ docker tag ${{ vars.ECR_URL }}:$SHA ${{ vars.ECR_URL }}:production.latest
231
+ docker push ${{ vars.ECR_URL }}:production.latest
232
+
152
233
- name : Authenticate to the cluster
153
234
env :
154
235
KUBE_CERT : ${{ secrets.KUBE_PROD_CERT }}
@@ -164,7 +245,7 @@ jobs:
164
245
- name : Rollout restart deployment
165
246
run : |
166
247
kubectl set image -n ${KUBE_NAMESPACE} \
167
- deployment/disclosure-checker-deployment- production \
248
+ config/kubernetes/ production \
168
249
webapp="${{ vars.ECR_URL }}:$SHA"
169
250
170
251
- name : Send deploy notification to product Slack channel
0 commit comments