@@ -2,6 +2,18 @@ name: Regression test run
22
33on :
44 workflow_call :
5+ inputs :
6+ github_ref :
7+ description : The git reference for deploying containerized mavis application
8+ type : string
9+ required : false
10+ secrets :
11+ HTTP_AUTH_TOKEN_FOR_TESTS :
12+ description : HTTP Basic Auth token for the environment under test
13+ required : true
14+ MAVIS_TESTING_REPO_ACCESS_TOKEN :
15+ description : Access token for the manage-vaccinations-in-schools-testing repository
16+ required : true
517
618permissions : { }
719
3749 id-token : write
3850 steps :
3951 - name : Checkout code
40- uses : actions/checkout@v5
52+ uses : actions/checkout@v6
53+ with :
54+ ref : ${{ inputs.github_ref || github.ref }}
55+ repository : nhsuk/manage-vaccinations-in-schools
4156 - name : Configure AWS Credentials
4257 uses : aws-actions/configure-aws-credentials@v5
4358 with :
@@ -71,24 +86,31 @@ jobs:
7186 with :
7287 role-to-assume : arn:aws:iam::393416225559:role/GitHubAssuranceTestRole
7388 aws-region : eu-west-2
74- - name : Render task definition
75- id : render-task-definition
89+ - name : Render task definition 1
90+ id : render-task-definition-1
7691 uses : aws-actions/amazon-ecs-render-task-definition@v1
7792 with :
7893 task-definition-family : " assurance-testing-regression-task-definition-template"
79- container-name : " mavis-regression"
94+ container-name : " mavis-regression-web"
95+ image : " 393416225559.dkr.ecr.eu-west-2.amazonaws.com/mavis/regression:${{ github.sha }}"
96+ - name : Render task definition 2
97+ id : render-task-definition-2
98+ uses : aws-actions/amazon-ecs-render-task-definition@v1
99+ with :
100+ task-definition : ${{ steps.render-task-definition-1.outputs.task-definition }}
101+ container-name : " mavis-regression-sidekiq"
80102 image : " 393416225559.dkr.ecr.eu-west-2.amazonaws.com/mavis/regression:${{ github.sha }}"
81103 - name : Prepare deployment
82104 id : prepare-deployment
83105 run : |
84106 file_path="assurance-testing-regression-task-definition.json"
85107 family_name="assurance-testing-regression-task-definition"
86- echo "$(jq --arg f "$family_name" '.family = $f' "${{ steps.render-task-definition.outputs.task-definition }}")" > "$file_path"
108+ echo "$(jq --arg f "$family_name" '.family = $f' "${{ steps.render-task-definition-2 .outputs.task-definition }}")" > "$file_path"
87109 cat "$file_path" #TODO: Debugging, remove later
88-
110+
89111 subnet_id=$(aws ec2 describe-subnets --filters Name=tag:Name,Values=assurance-testing-subnet --query 'Subnets[0].SubnetId' --output text)
90112 security_group_id=$(aws ec2 describe-security-groups --filters Name=group-name,Values=assurance-testing-regression-sg --query 'SecurityGroups[0].GroupId' --output text)
91-
113+
92114 echo "run-task-subnets=$subnet_id" >> $GITHUB_OUTPUT
93115 echo "run-task-security-groups=$security_group_id" >> $GITHUB_OUTPUT
94116 - name : Deploy task definition
@@ -176,9 +198,12 @@ jobs:
176198 run : |
177199 TASK_ARN=$(echo '${{ needs.launch-dockerized-devimage.outputs.run_task_arn }}' | jq -r '.[0]')
178200 TASK_ID=$(sed 's:^.*/::' <<< $TASK_ARN)
179- CLOUDWATCH_URL="https://eu-west-2.console.aws.amazon.com/cloudwatch/home?region=eu-west-2#logsV2:log-groups/log-group/assurance-testing-ecs/log-events/assurance-testing-logs\$252Fmavis-regression\$252F${TASK_ID}\$3Fstart\$3D$(date +%s)000\$26end\$3D$(date -d '+30 minutes' +%s)000"
201+ WEB_CLOUDWATCH_URL="https://eu-west-2.console.aws.amazon.com/cloudwatch/home?region=eu-west-2#logsV2:log-groups/log-group/assurance-testing-ecs/log-events/assurance-testing-logs\$252Fmavis-regression-web\$252F${TASK_ID}\$3Fstart\$3D$(date +%s)000\$26end\$3D$(date -d '+30 minutes' +%s)000"
202+ SIDEKIQ_CLOUDWATCH_URL="https://eu-west-2.console.aws.amazon.com/cloudwatch/home?region=eu-west-2#logsV2:log-groups/log-group/assurance-testing-ecs/log-events/assurance-testing-logs\$252Fmavis-regression-sidekiq\$252F${TASK_ID}\$3Fstart\$3D$(date +%s)000\$26end\$3D$(date -d '+30 minutes' +%s)000"
180203 echo "**Task ID:** $TASK_ID" >> $GITHUB_STEP_SUMMARY
181- echo "**Container Logs:** $CLOUDWATCH_URL" >> $GITHUB_STEP_SUMMARY
204+ echo "**Container Logs:** " >> $GITHUB_STEP_SUMMARY
205+ echo " * WEB logs: $WEB_CLOUDWATCH_URL" >> $GITHUB_STEP_SUMMARY
206+ echo " * SIDEKIQ logs: $SIDEKIQ_CLOUDWATCH_URL" >> $GITHUB_STEP_SUMMARY
182207 NETWORK_INTERFACE=$(aws ecs describe-tasks \
183208 --cluster assurance-testing \
184209 --tasks "$TASK_ARN" \
@@ -190,30 +215,39 @@ jobs:
190215 echo "container_ip=$CONTAINER_IP" >> $GITHUB_OUTPUT
191216 echo "task_arn=$TASK_ARN" >> $GITHUB_OUTPUT
192217 echo "Started task: $TASK_ARN"
193- echo "Logs for server: ${CLOUDWATCH_URL}"
218+ echo "Logs for server: [web](${WEB_CLOUDWATCH_URL}) and [sidekiq](${SIDEKIQ_CLOUDWATCH_URL})"
219+ find-correct-test-branch :
220+ needs : [wait-for-task-stability]
221+ if : ${{ !cancelled() && needs.wait-for-task-stability.result == 'success'}}
222+ runs-on : ubuntu-latest
223+ permissions :
224+ contents : read
225+ outputs :
226+ test_branch : ${{ steps.check-branch.outputs.test_branch }}
227+ steps :
228+ - name : Check if branch exists
229+ id : check-branch
230+ run : |
231+ if git ls-remote --exit-code --heads https://github.com/NHSDigital/manage-vaccinations-in-schools-testing.git "$BRANCH_TO_CHECK" > /dev/null 2>&1; then
232+ echo "test_branch=$BRANCH_TO_CHECK" >> $GITHUB_OUTPUT
233+ else
234+ echo "test_branch=main" >> $GITHUB_OUTPUT
235+ fi
236+ env :
237+ BRANCH_TO_CHECK : ${{ github.head_ref }}
194238 call-functional-tests :
195- needs : [launch-dockerized-devimage, wait-for-task-stability]
239+ needs : [launch-dockerized-devimage, wait-for-task-stability, find-correct-test-branch ]
196240 if : ${{ !cancelled() && needs.launch-dockerized-devimage.result == 'success' && needs.wait-for-task-stability.result == 'success'}}
197- uses : NHSDigital/manage-vaccinations-in-schools-testing/.github/workflows/functional_selected_device.yaml@make-workflow-callable # TODO: Change once this is in main
241+ uses : NHSDigital/manage-vaccinations-in-schools-testing/.github/workflows/functional_selected_device.yaml@containerized_regression_tests_for_PRs # TODO: Change once this is in main
198242 permissions :
199243 contents : write
200244 with :
201- tests : ' '
202- device : ' Desktop Chrome'
203- programmes : ' FLU,HPV,MENACWY,MMR,TD_IPV'
204- endpoint : " http://${{ needs.wait-for-task-stability.outputs.container_ip }}:4000"
205- screenshot_all_steps : ' false'
206- enable_reruns : ' true'
207- test_workers : ' 4'
208- set_feature_flags : ' false'
209- additional_feature_flags : ' '
245+ cross_service_tests : false
246+ github_ref : ${{ needs.find-correct-test-branch.outputs.test_branch }}
247+ endpoint : ' http://${{ needs.wait-for-task-stability.outputs.container_ip }}:4000'
210248 secrets :
211249 HTTP_AUTH_TOKEN_FOR_TESTS : ${{ secrets.HTTP_AUTH_TOKEN_FOR_TESTS }}
212- # IMMS_API_KEY: ${{ secrets.IMMS_API_KEY }}
213- # IMMS_API_KID: ${{ secrets.IMMS_API_KID }}
214- # IMMS_API_PEM: ${{ secrets.IMMS_API_PEM }}
215- # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
216- #
250+ MAVIS_TESTING_REPO_ACCESS_TOKEN : ${{ secrets.MAVIS_TESTING_REPO_ACCESS_TOKEN }}
217251 stop-docker-environment :
218252 needs : [call-functional-tests, launch-dockerized-devimage, wait-for-task-stability]
219253 if : ${{ always() && needs.launch-dockerized-devimage.result != 'skipped'}}
@@ -227,4 +261,4 @@ jobs:
227261 role-to-assume : arn:aws:iam::393416225559:role/GitHubAssuranceTestRole
228262 aws-region : eu-west-2
229263 - name : Stop dockerized dev image
230- run : aws ecs stop-task --cluster assurance-testing --task ${{ needs.wait-for-task-stability.outputs.task_arn }}
264+ run : aws ecs stop-task --cluster assurance-testing --task ${{ needs.wait-for-task-stability.outputs.task_arn }}
0 commit comments