@@ -80,9 +80,140 @@ jobs:
8080 artifact : ' deploy-changes-$(kube_namespace)'
8181 publishLocation : ' pipeline'
8282
83- - job : Deploy
83+ - job : ValidateImages
8484 dependsOn : Summarize
8585 condition : succeeded()
86+ displayName : Validate all container images
87+ pool :
88+ vmImage : ' ubuntu-latest'
89+
90+ strategy :
91+ matrix :
92+ account :
93+ serviceName : account
94+ repoName : account
95+
96+ admin :
97+ serviceName : admin
98+ repoName : admin
99+
100+ admin-ui :
101+ serviceName : admin-ui
102+ repoName : admin-ui
103+
104+ audit :
105+ serviceName : audit
106+ repoName : audit
107+
108+ automation :
109+ serviceName : automation
110+ repoName : automation
111+
112+ census :
113+ serviceName : census
114+ repoName : census
115+
116+ data-acquisition :
117+ serviceName : data-acquisition
118+ repoName : dataacquisition
119+
120+ data-acquisition-worker :
121+ serviceName : data-acquisition-worker
122+ repoName : dataacquisition-worker
123+
124+ measure-eval :
125+ serviceName : measure
126+ repoName : measureeval
127+
128+ normalization :
129+ serviceName : normalization
130+ repoName : normalization
131+
132+ query-dispatch :
133+ serviceName : query-dispatch
134+ repoName : querydispatch
135+
136+ report :
137+ serviceName : report
138+ repoName : report
139+
140+ submission :
141+ serviceName : submission
142+ repoName : submission
143+
144+ tenant :
145+ serviceName : tenant
146+ repoName : tenant
147+
148+ terminology :
149+ serviceName : terminology
150+ repoName : terminology
151+
152+ validation :
153+ serviceName : validation
154+ repoName : validation
155+
156+ mock-dmrp :
157+ serviceName : mock-dmrp
158+ repoName : mock-dmrp
159+
160+ steps :
161+
162+ - task : Bash@3
163+ displayName : ' Determine image tag'
164+ inputs :
165+ targetType : inline
166+ script : |
167+ set -e
168+
169+ GIT_COMMIT=$(git rev-parse --short HEAD)
170+ IMAGE_TAG="$(Build.SourceBranchName)-${GIT_COMMIT}"
171+
172+ echo "Git commit: ${GIT_COMMIT}"
173+ echo "Image tag: ${IMAGE_TAG}"
174+
175+ echo "##vso[task.setvariable variable=GIT_COMMIT]${GIT_COMMIT}"
176+ echo "##vso[task.setvariable variable=IMAGE_TAG]${IMAGE_TAG}"
177+
178+ - task : AzureCLI@2
179+ displayName : ' Validate image exists for $(serviceName)'
180+ inputs :
181+ azureSubscription : ' NHSNLink-RG ARM'
182+ scriptType : bash
183+ scriptLocation : inlineScript
184+ inlineScript : |
185+ set -e
186+
187+ IMAGE_REPO="link-$(repoName)"
188+ IMAGE_TAG="$(IMAGE_TAG)"
189+
190+ echo "=========================================="
191+ echo "Validating container image"
192+ echo "=========================================="
193+ echo "Service: $(serviceName)"
194+ echo "Repository: ${IMAGE_REPO}"
195+ echo "Tag: ${IMAGE_TAG}"
196+ echo "Full image: $(containerRegistry)/${IMAGE_REPO}:${IMAGE_TAG}"
197+ echo "=========================================="
198+
199+ if ! az acr repository show \
200+ --name "$(containerRegistry)" \
201+ --image "${IMAGE_REPO}:${IMAGE_TAG}" \
202+ --output none; then
203+
204+ echo "##vso[task.logissue type=error]Image does NOT exist in ACR:"
205+ echo "##vso[task.logissue type=error]$(containerRegistry)/${IMAGE_REPO}:${IMAGE_TAG}"
206+ echo "##vso[task.logissue type=error]Deployment has been stopped for $(serviceName)."
207+
208+ exit 1
209+ fi
210+
211+ echo "Image exists in ACR."
212+
213+
214+ - job : Deploy
215+ dependsOn : ValidateImages
216+ condition : succeeded()
86217 displayName : Deploy multiple services
87218 pool :
88219 vmImage : ' ubuntu-latest'
0 commit comments