Skip to content

Commit 065a81b

Browse files
BCDA-9671: Update deploy-all worker version check (#1286)
## 🎫 Ticket https://jira.cms.gov/browse/BCDA-9671 ## 🛠 Changes <!-- What was added, updated, or removed in this PR? --> - re-enable the worker version check in the deploy-all workflow - update the worker version check to check the version of the tag used by the worker service ## ℹ️ Context <!-- Why were these changes made? Add background context suitable for a non-technical audience. --> There are checks for each service that ensure the correct version of the service has been deployed. The api and ssas services have endpoints that provide this info, but the worker version must be fetched another way. This PR intends to re-enable this version check and update it to grab the version from the image associated with the service's running task. <!-- If any of the following security implications apply, this PR must not be merged without Stephen Walter's approval. Explain in this section and add @SJWalter11 as a reviewer. - Adds a new software dependency or dependencies. - Modifies or invalidates one or more of our security controls. - Stores or transmits data that was not stored or transmitted before. - Requires additional review of security implications for other reasons. --> ## 🧪 Validation <!-- How were the changes verified? Did you fully test the acceptance criteria in the ticket? Provide reproducible testing instructions and screenshots if applicable. --> Tested with [deployment to dev](https://github.com/CMSgov/bcda-app/actions/runs/20601880004)
1 parent 19b5423 commit 065a81b

File tree

1 file changed

+43
-74
lines changed

1 file changed

+43
-74
lines changed

.github/workflows/deploy-all.yml

Lines changed: 43 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,6 @@ env:
9191
ENV_MODIFIER: ${{ inputs.env || 'dev' }}
9292
TEST_ACO: ${{ inputs.test_aco || 'dev' }}
9393
TENV_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
94-
VERIFICATION_RETRIES: 90 # 90 retries with 10s sleep = max 900s or 15m. Verification jobs run in parallel.
95-
VERIFICATION_SLEEP: 10
9694

9795
jobs:
9896
migrate_db:
@@ -155,9 +153,9 @@ jobs:
155153
# FARGATE FIXUP: Can remove this step
156154
- name: Get AMIs
157155
run: |
158-
export BCDA_AMI=`aws ec2 describe-images --region ${{ vars.AWS_REGION }} --filters 'Name=tag:app,Values=bcda-app' 'Name=tag:version,Values=${{ env.RELEASE_VERSION }}' --query 'Images[*][CreationDate,ImageId] | reverse(sort_by(@,&[0])) | [0][1]' --output text`
156+
export BCDA_AMI=$(aws ec2 describe-images --region ${{ vars.AWS_REGION }} --filters 'Name=tag:app,Values=bcda-app' 'Name=tag:version,Values=${{ env.RELEASE_VERSION }}' --query 'Images[*][CreationDate,ImageId] | reverse(sort_by(@,&[0])) | [0][1]' --output text)
159157
echo "BCDA_AMI=$BCDA_AMI" >> $GITHUB_ENV
160-
export WORKER_AMI=`aws ec2 describe-images --region ${{ vars.AWS_REGION }} --filters 'Name=tag:app,Values=bcda-worker' 'Name=tag:version,Values=${{ env.RELEASE_VERSION }}' --query 'Images[*][CreationDate,ImageId] | reverse(sort_by(@,&[0])) | [0][1]' --output text`
158+
export WORKER_AMI=$(aws ec2 describe-images --region ${{ vars.AWS_REGION }} --filters 'Name=tag:app,Values=bcda-worker' 'Name=tag:version,Values=${{ env.RELEASE_VERSION }}' --query 'Images[*][CreationDate,ImageId] | reverse(sort_by(@,&[0])) | [0][1]' --output text)
161159
echo "WORKER_AMI=$WORKER_AMI" >> $GITHUB_ENV
162160
- name: Install Cosign to verify tenv and tofu installs
163161
uses: sigstore/cosign-installer@d58896d6a1865668819e1d91763c7751a165e159 # v3.9.2
@@ -199,84 +197,56 @@ jobs:
199197
runs-on: codebuild-bcda-app-${{github.run_id}}-${{github.run_attempt}}
200198
environment: ${{ inputs.env != '0' && inputs.env || 'dev' }}
201199
steps:
200+
- uses: aws-actions/configure-aws-credentials@v4
201+
with:
202+
aws-region: ${{ vars.AWS_REGION }}
203+
role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/delegatedadmin/developer/${{ vars.AWS_ROLE_TO_ASSUME }}
202204
- run: |
203-
TRY=1
204-
205-
until [ $TRY -gt $VERIFICATION_RETRIES ]; do
206-
BCDA_API_VERSION=`curl https://${{ vars.API_BASE_URL }}/_version | jq -R '. as $line | try (fromjson | .version) catch $line' | tr -d "\"'"`
207-
208-
if [[ $BCDA_API_VERSION != ${{ env.RELEASE_VERSION }} ]]; then
209-
echo "BCDA API expected release version: ${{ env.RELEASE_VERSION }} did not match curled version: ${BCDA_API_VERSION}."
210-
TRY=$(($TRY + 1))
211-
if [ $TRY -gt $VERIFICATION_RETRIES ]; then
212-
exit 1
213-
else
214-
sleep $VERIFICATION_SLEEP
215-
fi
216-
else
217-
break
218-
fi
219-
done
205+
aws ecs wait services-stable --cluster bcda-${{ env.RELEASE_ENV }} --services bcda-${{ env.RELEASE_ENV }}-api
206+
BCDA_API_VERSION=$(curl -Ss https://${{ vars.API_BASE_URL }}/_version | jq -R '. as $line | try (fromjson | .version) catch $line' | tr -d "\"'")
207+
if [[ $BCDA_API_VERSION != ${{ env.RELEASE_VERSION }} ]]; then
208+
echo "BCDA API expected release version: ${{ env.RELEASE_VERSION }} did not match curled version: ${BCDA_API_VERSION}."
209+
exit 1
210+
fi
220211
221212
verify_ssas_version:
222213
needs: [deploy]
223214
runs-on: codebuild-bcda-app-${{github.run_id}}-${{github.run_attempt}}
224215
environment: ${{inputs.env != '0' && inputs.env || 'dev' }}
225216
steps:
217+
- uses: aws-actions/configure-aws-credentials@v4
218+
with:
219+
aws-region: ${{ vars.AWS_REGION }}
220+
role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/delegatedadmin/developer/${{ vars.AWS_ROLE_TO_ASSUME }}
226221
- run: |
227-
TRY=1
228-
229-
until [ $TRY -gt $VERIFICATION_RETRIES ]; do
230-
BCDA_SSAS_VERSION=`curl https://${{ vars.API_BASE_URL }}/_auth | jq -R '. as $line | try (fromjson | .version) catch $line' | tr -d "\"'"`
231-
232-
if [[ $BCDA_SSAS_VERSION != ${{ env.SSAS_RELEASE_VERSION }} ]]; then
233-
echo "BCDA SSAS expected release version: ${{ env.SSAS_RELEASE_VERSION }} did not match curled version: ${BCDA_SSAS_VERSION}."
234-
TRY=$(($TRY + 1))
235-
if [ $TRY -gt $VERIFICATION_RETRIES ]; then
236-
exit 1
237-
else
238-
sleep $VERIFICATION_SLEEP
239-
fi
240-
else
241-
break
242-
fi
243-
done
222+
aws ecs wait services-stable --cluster bcda-${{ env.RELEASE_ENV }} --services bcda-${{ env.RELEASE_ENV }}-ssas
223+
BCDA_SSAS_VERSION=$(curl -Ss https://${{ vars.API_BASE_URL }}/_auth | jq -R '. as $line | try (fromjson | .version) catch $line' | tr -d "\"'")
224+
if [[ $BCDA_SSAS_VERSION != ${{ env.SSAS_RELEASE_VERSION }} ]]; then
225+
echo "BCDA SSAS expected release version: ${{ env.SSAS_RELEASE_VERSION }} did not match curled version: ${BCDA_SSAS_VERSION}."
226+
exit 1
227+
fi
244228
245-
# Temporarily we need to manually verify worker is on correct version
246-
247-
# # FARGATE FIXUP:
248-
# This needs the 'image_tag' tag to be added to each service before this will work
249-
# verify_worker_version:
250-
# needs: [deploy]
251-
# runs-on: codebuild-bcda-app-${{github.run_id}}-${{github.run_attempt}}
252-
# environment: ${{ inputs.env != '0' && inputs.env || 'dev' }}
253-
# steps:
254-
# - uses: aws-actions/configure-aws-credentials@v4
255-
# with:
256-
# aws-region: ${{ vars.AWS_REGION }}
257-
# role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/delegatedadmin/developer/${{ vars.AWS_ROLE_TO_ASSUME }}
258-
# - run: |
259-
# TRY=1
260-
261-
# until [ $TRY -gt $VERIFICATION_RETRIES ]; do
262-
# WORKER_VERSION=`aws ecs --resource-arn list-tags-for-resource arn:aws:ecs:${{ vars.AWS_REGION }}:${{ secrets.AWS_ACCOUNT_ID }}:service/bcda-${{ env.RELEASE_ENV }}/bcda-${{ env.RELEASE_ENV }}-api --query "tags[?key=='image_tag'].value | [0]" --output text`
263-
264-
# if [[ $WORKER_VERSION != ${{ env.RELEASE_VERSION }} ]]; then
265-
# echo "BCDA Worker expected release version: ${{ env.RELEASE_VERSION }} did not match AWS version: ${WORKER_VERSION}."
266-
# TRY=$(($TRY + 1))
267-
# if [ $TRY -gt $VERIFICATION_RETRIES ]; then
268-
# exit 1
269-
# else
270-
# sleep $VERIFICATION_SLEEP
271-
# fi
272-
# else
273-
# break
274-
# fi
275-
# done
229+
verify_worker_version:
230+
needs: [deploy]
231+
runs-on: codebuild-bcda-app-${{github.run_id}}-${{github.run_attempt}}
232+
environment: ${{ inputs.env != '0' && inputs.env || 'dev' }}
233+
steps:
234+
- uses: aws-actions/configure-aws-credentials@v4
235+
with:
236+
aws-region: ${{ vars.AWS_REGION }}
237+
role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/delegatedadmin/developer/${{ vars.AWS_ROLE_TO_ASSUME }}
238+
- run: |
239+
aws ecs wait services-stable --cluster bcda-${{ env.RELEASE_ENV }} --services bcda-${{ env.RELEASE_ENV }}-worker
240+
WORKER_ARN=$(aws ecs list-tasks --cluster=bcda-${{ env.RELEASE_ENV }} --service-name=bcda-${{ env.RELEASE_ENV }}-worker --query 'taskArns[0]' --output text)
241+
WORKER_IMAGE=$(aws ecs describe-tasks --cluster=bcda-${{ env.RELEASE_ENV }} --tasks=$WORKER_ARN --query="tasks[0].containers[0].image" --output=text)
242+
WORKER_VERSION=${WORKER_IMAGE#*:}
243+
if [[ $WORKER_VERSION != ${{ env.RELEASE_VERSION }} ]]; then
244+
echo "BCDA Worker expected release version: ${{ env.RELEASE_VERSION }} did not match AWS version: ${WORKER_VERSION}."
245+
exit 1
246+
fi
276247
277248
smoketests:
278-
# needs: [migrate_db, migrate_ssas_db, deploy, verify_api_version, verify_ssas_version, verify_worker_version]
279-
needs: [migrate_db, migrate_ssas_db, deploy, verify_api_version, verify_ssas_version]
249+
needs: [migrate_db, migrate_ssas_db, deploy, verify_api_version, verify_ssas_version, verify_worker_version]
280250
uses: ./.github/workflows/smoke-tests.yml
281251
with:
282252
release_version: ${{ inputs.release_version || 'main' }}
@@ -290,8 +260,7 @@ jobs:
290260
secrets: inherit
291261

292262
notify_newrelic:
293-
# needs: [migrate_db, migrate_ssas_db, deploy, verify_api_version, verify_ssas_version, verify_worker_version]
294-
needs: [migrate_db, migrate_ssas_db, deploy, verify_api_version, verify_ssas_version]
263+
needs: [migrate_db, migrate_ssas_db, deploy, verify_api_version, verify_ssas_version, verify_worker_version]
295264
environment: ${{ inputs.env || 'dev' }}
296265
runs-on: codebuild-bcda-app-${{github.run_id}}-${{github.run_attempt}}
297266
steps:
@@ -322,7 +291,7 @@ jobs:
322291
- name: Notify NewRelic (Dev)
323292
if: ${{ env.RELEASE_ENV == 'dev' }}
324293
run: |
325-
export BCDA_AMI=`aws ec2 describe-images --region ${{ vars.AWS_REGION }} --filters 'Name=tag:app,Values=bcda-app' 'Name=tag:version,Values=${{ env.RELEASE_VERSION }}' --query 'Images[*][CreationDate,ImageId] | reverse(sort_by(@,&[0])) | [0][1]' --output text`
294+
export BCDA_AMI=$(aws ec2 describe-images --region ${{ vars.AWS_REGION }} --filters 'Name=tag:app,Values=bcda-app' 'Name=tag:version,Values=${{ env.RELEASE_VERSION }}' --query 'Images[*][CreationDate,ImageId] | reverse(sort_by(@,&[0])) | [0][1]' --output text)
326295
python3 scripts/mark_deployment.py \
327296
--app_id ${{ env.NEWRELIC_APP_ID }} \
328297
--api_key ${{ env.NEWRELIC_API_KEY }} \

0 commit comments

Comments
 (0)