99 type : string
1010
1111env :
12- IMAGE_NAME : mapping-service
1312 STAGING_PROJECT_ID : s3ns-staging-okeiro
1413 STAGING_REGISTRY : europe-west9-docker.pkg.dev
1514 STAGING_REGISTRY_NAME : preproduction-okeiro
@@ -72,25 +71,28 @@ jobs:
7271 run : |
7372 gcloud auth configure-docker ${{ env.STAGING_REGISTRY }} --quiet
7473
75- - name : Retag image from staging to production
74+ - name : Retag all images from staging to production
7675 env :
7776 VERSION : ${{ github.event.inputs.version }}
7877 run : |
79- STAGING_IMAGE="${{ env.STAGING_REGISTRY }}/${{ env.STAGING_PROJECT_ID }}/${{ env.STAGING_REGISTRY_NAME }}/${{ env.IMAGE_NAME }}:${VERSION}"
80- PROD_IMAGE_BASE="${{ env.PROD_REGISTRY }}/${{ env.PROD_PROJECT_ID }}/${{ env.PROD_REGISTRY_NAME }}/${{ env.IMAGE_NAME }}"
78+ SERVICES="mapping-service fhir-simulator-r4 fhir-simulator-r5"
8179
82- echo "Pulling staging image: $STAGING_IMAGE"
83- docker pull "$STAGING_IMAGE"
80+ for SERVICE in $SERVICES; do
81+ STAGING_IMAGE="${{ env.STAGING_REGISTRY }}/${{ env.STAGING_PROJECT_ID }}/${{ env.STAGING_REGISTRY_NAME }}/${SERVICE}:${VERSION}"
82+ PROD_IMAGE_BASE="${{ env.PROD_REGISTRY }}/${{ env.PROD_PROJECT_ID }}/${{ env.PROD_REGISTRY_NAME }}/${SERVICE}"
8483
85- echo "Tagging for production: "
86- docker tag "$STAGING_IMAGE" "${PROD_IMAGE_BASE}:${VERSION} "
87- docker tag "$STAGING_IMAGE" "${PROD_IMAGE_BASE}:latest "
84+ echo "--- Retagging ${SERVICE} --- "
85+ echo "Pulling: $STAGING_IMAGE "
86+ docker pull "$STAGING_IMAGE"
8887
89- echo "Pushing to production registry:"
90- docker push "${PROD_IMAGE_BASE}:${VERSION}"
91- docker push "${PROD_IMAGE_BASE}:latest"
88+ docker tag "$STAGING_IMAGE" "${PROD_IMAGE_BASE}:${VERSION}"
89+ docker tag "$STAGING_IMAGE" "${PROD_IMAGE_BASE}:latest"
9290
93- echo "Successfully retagged ${IMAGE_NAME}:${VERSION} to production"
91+ docker push "${PROD_IMAGE_BASE}:${VERSION}"
92+ docker push "${PROD_IMAGE_BASE}:latest"
93+
94+ echo "Done: ${SERVICE}:${VERSION}"
95+ done
9496
9597 cve-scan :
9698 name : CVE Scan Before Production Deploy
@@ -111,22 +113,29 @@ jobs:
111113
112114 - name : Pull image from registry
113115 run : |
114- docker pull "${{ env.PROD_REGISTRY }}/${{ env.PROD_PROJECT_ID }}/${{ env.PROD_REGISTRY_NAME }}/${{ env.IMAGE_NAME }} :${{ github.event.inputs.version }}"
116+ docker pull "${{ env.PROD_REGISTRY }}/${{ env.PROD_PROJECT_ID }}/${{ env.PROD_REGISTRY_NAME }}/mapping-service :${{ github.event.inputs.version }}"
115117
116118 - name : Trivy CVE Scan
117119 uses : ./.github/actions/trivy-scan
118120 with :
119- image : " ${{ env.PROD_REGISTRY }}/${{ env.PROD_PROJECT_ID }}/${{ env.PROD_REGISTRY_NAME }}/${{ env.IMAGE_NAME }} :${{ github.event.inputs.version }}"
121+ image : " ${{ env.PROD_REGISTRY }}/${{ env.PROD_PROJECT_ID }}/${{ env.PROD_REGISTRY_NAME }}/mapping-service :${{ github.event.inputs.version }}"
120122 fail-on-critical : ' true'
121123 max-high-cves : ' 5'
122124 block : ' true'
123125
124126 create-gitops-pr :
125- name : Create Production GitOps PR
127+ name : Create Production GitOps PR (${{ matrix.service }})
126128 needs : retag-and-push
127129 runs-on : ubuntu-latest
130+ strategy :
131+ fail-fast : false
132+ matrix :
133+ service :
134+ - mapping-service
135+ - fhir-simulator-r4
136+ - fhir-simulator-r5
128137 concurrency :
129- group : gitops-production-mapping- service
138+ group : gitops-production-${{ matrix. service }}
130139 cancel-in-progress : false
131140 steps :
132141 - name : Checkout code
@@ -136,8 +145,8 @@ jobs:
136145 uses : ./.github/actions/argocd-pr
137146 with :
138147 env-name : production
139- component-name : mapping- service
140- gitops-folder : production/mapping- service
148+ component-name : ${{ matrix. service }}
149+ gitops-folder : production/${{ matrix. service }}
141150 gitops-values-file : values.yaml
142151 image-tag-paths : ' ["deployment.imageRef.tag"]'
143152 image-tag : ${{ github.event.inputs.version }}
@@ -149,12 +158,6 @@ jobs:
149158 run : |
150159 echo "## Production Deployment Initiated" >> $GITHUB_STEP_SUMMARY
151160 echo "" >> $GITHUB_STEP_SUMMARY
152- echo "**Component:** mapping- service" >> $GITHUB_STEP_SUMMARY
161+ echo "**Component:** ${{ matrix. service }} " >> $GITHUB_STEP_SUMMARY
153162 echo "**Version:** ${{ github.event.inputs.version }}" >> $GITHUB_STEP_SUMMARY
154163 echo "**Triggered by:** @${{ github.actor }}" >> $GITHUB_STEP_SUMMARY
155- echo "" >> $GITHUB_STEP_SUMMARY
156- echo "### Next Steps" >> $GITHUB_STEP_SUMMARY
157- echo "1. Review the GitOps PR in the helm-charts repository" >> $GITHUB_STEP_SUMMARY
158- echo "2. **IMPORTANT:** Manually approve and merge the PR to deploy to production" >> $GITHUB_STEP_SUMMARY
159- echo "3. Monitor the deployment in the production cluster" >> $GITHUB_STEP_SUMMARY
160- echo "4. Validate production functionality after deployment" >> $GITHUB_STEP_SUMMARY
0 commit comments