@@ -3,10 +3,15 @@ name: End To End test run
33on :
44 workflow_call :
55 inputs :
6- github_ref :
6+ git_reference_for_application_image :
77 description : The git reference for deploying containerized mavis application
88 type : string
99 required : false
10+ git_reference_for_database_image :
11+ description : The environment to build the base image against
12+ type : string
13+ required : false
14+ default : " next"
1015 secrets :
1116 HTTP_AUTH_TOKEN_FOR_TESTS :
1217 description : HTTP Basic Auth token for the environment under test
1823permissions : { }
1924
2025jobs :
21- check-image-presence :
26+ check-development- image-presence :
2227 name : Check if docker image already exists
2328 runs-on : ubuntu-latest
2429 permissions :
2530 id-token : write
2631 outputs :
2732 build-needed : ${{ steps.check-image.outputs.build-needed }}
28- next-git-sha : ${{ steps.get-next-git-sha.outputs.git-sha }}
2933 steps :
3034 - name : Configure AWS Credentials
3135 uses : aws-actions/configure-aws-credentials@v5
@@ -37,21 +41,22 @@ jobs:
3741 run : |
3842 if aws ecr describe-images --repository-name mavis/development --image-ids imageTag=${{ github.sha }} > /dev/null 2>&1; then
3943 echo "Docker image with given tag already exists"
44+ echo "build-needed=false" >> $GITHUB_OUTPUT
4045 else
4146 echo "Docker image does not exist. Build needed"
4247 echo "build-needed=true" >> $GITHUB_OUTPUT
4348 fi
4449 build-and-push-development-image :
45- needs : [check-image-presence]
46- if : needs.check-image-presence.outputs.build-needed == 'true'
50+ needs : [ check-development- image-presence ]
51+ if : needs.check-development- image-presence.outputs.build-needed == 'true'
4752 runs-on : ubuntu-latest
4853 permissions :
4954 id-token : write
5055 steps :
5156 - name : Checkout code
5257 uses : actions/checkout@v6
5358 with :
54- ref : ${{ inputs.github_ref || github.ref }}
59+ ref : ${{ inputs.git_reference_for_application_image || github.ref }}
5560 repository : nhsuk/manage-vaccinations-in-schools
5661 - name : Configure AWS Credentials
5762 uses : aws-actions/configure-aws-credentials@v5
@@ -69,12 +74,49 @@ jobs:
6974 -t "393416225559.dkr.ecr.eu-west-2.amazonaws.com/mavis/development:${{ github.sha }}" \
7075 .
7176 docker push "393416225559.dkr.ecr.eu-west-2.amazonaws.com/mavis/development:${{ github.sha }}"
77+ check-database-image-presence :
78+ name : Check if docker image already exists
79+ runs-on : ubuntu-latest
80+ permissions :
81+ id-token : write
82+ outputs :
83+ build-needed : ${{ steps.check-image.outputs.build-needed }}
84+ steps :
85+ - name : Configure AWS Credentials
86+ uses : aws-actions/configure-aws-credentials@v5
87+ with :
88+ role-to-assume : arn:aws:iam::393416225559:role/GitHubAssuranceTestRole
89+ aws-region : eu-west-2
90+ - name : Check if image exists
91+ id : check-image
92+ run : |
93+ if aws ecr describe-images --repository-name mavis/development --image-ids imageTag=${{ github.event.pull_request.base.ref }} > /dev/null 2>&1; then
94+ echo "Docker image with given tag already exists"
95+ echo "build-needed=false" >> $GITHUB_OUTPUT
96+ else
97+ echo "Docker image does not exist. Build needed"
98+ echo "build-needed=true" >> $GITHUB_OUTPUT
99+ fi
100+ build-and-push-database-image :
101+ needs : [ check-database-image-presence ]
102+ if : needs.check-database-image-presence.outputs.build-needed == 'true'
103+ permissions :
104+ id-token : write
105+ contents : read
106+ uses : ./.github/workflows/create_dockerized_db.yml
107+ with :
108+ github_ref : ${{ inputs.git_reference_for_database_image }}
72109 launch-dockerized-devimage :
73- needs : [ check-image-presence, build-and-push-development-image ]
110+ needs : [ check-development-image-presence,
111+ build-and-push-development-image,
112+ check-database-image-presence,
113+ build-and-push-database-image ]
74114 if : ${{ !cancelled() &&
75115 (needs.build-and-push-development-image.result == 'success' ||
76- (needs.check-image-presence.result == 'success' && needs.build-and-push-development-image.result == 'skipped')
77- ) }}
116+ (needs.check-development-image-presence.result == 'success' && needs.build-and-push-development-image.result == 'skipped')) &&
117+ (needs.build-and-push-database-image.result == 'success' ||
118+ (needs.check-database-image-presence.result == 'success' && needs.build-and-push-database-image.result == 'skipped'))
119+ }}
78120 runs-on : ubuntu-latest
79121 permissions :
80122 id-token : write
@@ -86,26 +128,33 @@ jobs:
86128 with :
87129 role-to-assume : arn:aws:iam::393416225559:role/GitHubAssuranceTestRole
88130 aws-region : eu-west-2
89- - name : Render task definition 1
90- id : render-task-definition-1
131+ - name : Render task definition web
132+ id : render-task-definition-web
91133 uses : aws-actions/amazon-ecs-render-task-definition@v1
92134 with :
93135 task-definition-family : " assurance-testing-mavis-development-task-definition-template"
94136 container-name : " mavis-development-web"
95137 image : " 393416225559.dkr.ecr.eu-west-2.amazonaws.com/mavis/development:${{ github.sha }}"
96- - name : Render task definition 2
97- id : render-task-definition-2
138+ - name : Render task definition database
139+ id : render-task-definition-database
140+ uses : aws-actions/amazon-ecs-render-task-definition@v1
141+ with :
142+ task-definition : ${{ steps.render-task-definition-web.outputs.task-definition }}
143+ container-name : " mavis-development-db"
144+ image : " 393416225559.dkr.ecr.eu-west-2.amazonaws.com/mavis/development/postgres_db:${{ github.event.pull_request.base.ref }}"
145+ - name : Render task definition sidekiq
146+ id : render-task-definition-sidekiq
98147 uses : aws-actions/amazon-ecs-render-task-definition@v1
99148 with :
100- task-definition : ${{ steps.render-task-definition-1 .outputs.task-definition }}
149+ task-definition : ${{ steps.render-task-definition-database .outputs.task-definition }}
101150 container-name : " mavis-development-sidekiq"
102151 image : " 393416225559.dkr.ecr.eu-west-2.amazonaws.com/mavis/development:${{ github.sha }}"
103152 - name : Prepare deployment
104153 id : prepare-deployment
105154 run : |
106155 file_path="assurance-testing-mavis-development-task-definition.json"
107156 family_name="assurance-testing-mavis-development-task-definition"
108- echo "$(jq --arg f "$family_name" '.family = $f' "${{ steps.render-task-definition-2 .outputs.task-definition }}")" > "$file_path"
157+ echo "$(jq --arg f "$family_name" '.family = $f' "${{ steps.render-task-definition-sidekiq .outputs.task-definition }}")" > "$file_path"
109158 cat "$file_path" #TODO: Debugging, remove later
110159
111160 subnet_id=$(aws ec2 describe-subnets --filters Name=tag:Name,Values=assurance-testing-subnet --query 'Subnets[0].SubnetId' --output text)
@@ -220,7 +269,7 @@ jobs:
220269 echo "task_arn=$TASK_ARN" >> $GITHUB_OUTPUT
221270 echo "Started task: $TASK_ARN"
222271 find-correct-test-branch :
223- needs : [wait-for-task-stability]
272+ needs : [ wait-for-task-stability ]
224273 if : ${{ !cancelled() && needs.wait-for-task-stability.result == 'success'}}
225274 runs-on : ubuntu-latest
226275 permissions :
@@ -239,7 +288,7 @@ jobs:
239288 env :
240289 BRANCH_TO_CHECK : ${{ github.head_ref }}
241290 call-functional-tests :
242- needs : [launch-dockerized-devimage, wait-for-task-stability, find-correct-test-branch]
291+ needs : [ launch-dockerized-devimage, wait-for-task-stability, find-correct-test-branch ]
243292 if : ${{ !cancelled() && needs.launch-dockerized-devimage.result == 'success' && needs.wait-for-task-stability.result == 'success'}}
244293 uses : NHSDigital/manage-vaccinations-in-schools-testing/.github/workflows/functional_selected_device.yaml@main
245294 permissions :
@@ -252,7 +301,7 @@ jobs:
252301 HTTP_AUTH_TOKEN_FOR_TESTS : ${{ secrets.HTTP_AUTH_TOKEN_FOR_TESTS }}
253302 MAVIS_TESTING_REPO_ACCESS_TOKEN : ${{ secrets.MAVIS_TESTING_REPO_ACCESS_TOKEN }}
254303 stop-docker-environment :
255- needs : [call-functional-tests, launch-dockerized-devimage, wait-for-task-stability]
304+ needs : [ call-functional-tests, launch-dockerized-devimage, wait-for-task-stability ]
256305 if : ${{ always() && needs.launch-dockerized-devimage.result != 'skipped'}}
257306 runs-on : ubuntu-latest
258307 permissions :
0 commit comments