3737 pipeline_identifier : ${{ github.run_id }}
3838 service_version : ${{ steps.read-version.outputs.service_version }}
3939 service_major_version : ${{ steps.read-version.outputs.service_major_version }}
40+ is_revert : ${{ steps.revert-check.outputs.is_revert }}
41+ revert_image_tag : ${{ steps.revert-check.outputs.revert_image_tag }}
42+ revert_major_version : ${{ steps.revert-check.outputs.revert_major_version }}
4043 steps :
4144 - uses : actions/checkout@v5
4245 with :
6467 echo "service_version=$version" >> $GITHUB_OUTPUT
6568 major=$(echo "$version" | cut -d. -f1)
6669 echo "service_major_version=M$major" >> $GITHUB_OUTPUT
70+ - name : Detect revert and find previous stable tag
71+ id : revert-check
72+ env :
73+ GH_TOKEN : ${{ secrets.TOKEN_GITHUB_YENKINS }}
74+ run : |
75+ is_revert=false
76+ revert_image_tag=""
77+ title="${{ github.event.pull_request.title }}"
78+ body="${{ github.event.pull_request.body }}"
79+
80+ if [[ "$title" == Revert* ]]; then
81+ is_revert=true
82+ original_pr=$(echo "$body" | grep -oP 'Reverts [^#]+#\K[0-9]+')
83+ if [[ -n "$original_pr" ]]; then
84+ merge_sha=$(gh pr view "$original_pr" --json mergeCommit -q '.mergeCommit.oid')
85+ prev_version=$(git show "${merge_sha}^1:VERSION" | tr -d '\n')
86+ revert_image_tag="${prev_version}"
87+ prev_major=$(echo "$prev_version" | cut -d. -f1)
88+ revert_major_version="M${prev_major}"
89+ fi
90+ fi
91+
92+ echo "is_revert=$is_revert" >> $GITHUB_OUTPUT
93+ echo "revert_image_tag=$revert_image_tag" >> $GITHUB_OUTPUT
94+ echo "revert_major_version=$revert_major_version" >> $GITHUB_OUTPUT
6795
6896 dockerfiles-validation :
6997 needs : [ prepare-build ]
@@ -174,30 +202,31 @@ jobs:
174202 ecr-url : ' ${{ secrets.ECR_URL }}'
175203 dry-run : ${{ !inputs.deploy }}
176204
177- register-bricks-staging :
178- runs-on :
179- group : infra1-runners-arc
180- labels : runners-small
181- needs : [ prepare-build, services-build ]
182- if : |
183- !cancelled() &&
184- !contains(needs.*.result, 'failure') &&
185- needs.prepare-build.outputs.images != '[]' &&
186- needs.prepare-build.outputs.images != ''
187- steps :
188- - name : Checkout repository
189- uses : actions/checkout@v5
190- - name : Register bricks to staging
191- uses : ./.github/actions/rundeck
192- with :
193- server : ' ${{ secrets.RUNDECK_URL }}'
194- project : stg1-ansible
195- job-group : ansible/msf/hotfix
196- job-name : stg1_lcm_pipeline_component_tool
197- vault-url : ${{ secrets.VAULT_ADDRESS }}
205+ # register-bricks-staging:
206+ # runs-on:
207+ # group: infra1-runners-arc
208+ # labels: runners-small
209+ # needs: [ prepare-build, services-build ]
210+ # if: |
211+ # !cancelled() &&
212+ # !contains(needs.*.result, 'failure') &&
213+ # needs.prepare-build.outputs.images != '[]' &&
214+ # needs.prepare-build.outputs.images != ''
215+ # steps:
216+ # - name: Checkout repository
217+ # uses: actions/checkout@v5
218+ # - name: Register bricks to staging
219+ # uses: ./.github/actions/rundeck
220+ # with:
221+ # server: '${{ secrets.RUNDECK_URL }}'
222+ # project: stg1-ansible
223+ # job-group: ansible/msf/hotfix
224+ # job-name: stg1_lcm_pipeline_component_tool
225+ # vault-url: ${{ secrets.VAULT_ADDRESS }}
198226
199227 build-helmreleases :
200- needs : [ prepare-build, services-build, helm-charts-build, register-bricks-staging ]
228+ # needs: [ prepare-build, services-build, helm-charts-build, register-bricks-staging ]
229+ needs : [ prepare-build, services-build, helm-charts-build ]
201230 if : |
202231 !cancelled() &&
203232 !contains(needs.*.result, 'failure') &&
@@ -242,11 +271,15 @@ jobs:
242271 pipeline_identifier : ${{ needs.prepare-build.outputs.pipeline_identifier }}
243272
244273 lcm-integration-e2e :
245- needs : [ prepare-build, register-bricks-staging, build-helmreleases, wait-for-deployment ]
274+ needs : [ prepare-build, build-helmreleases, wait-for-deployment ]
275+ # needs: [ prepare-build, register-bricks-staging, build-helmreleases, wait-for-deployment ]
276+ # if: |
277+ # !cancelled() &&
278+ # !contains(needs.*.result, 'failure') &&
279+ # needs.register-bricks-staging.result == 'success'
246280 if : |
247281 !cancelled() &&
248- !contains(needs.*.result, 'failure') &&
249- needs.register-bricks-staging.result == 'success'
282+ !contains(needs.*.result, 'failure')
250283 uses : ./.github/workflows/lcm-integration-e2e.yaml
251284 secrets : inherit
252285 permissions :
@@ -288,34 +321,54 @@ jobs:
288321 image_tag : ${{ needs.prepare-build.outputs.service_major_version }}
289322 secrets : inherit
290323
291- register-bricks-prod :
324+ promote-revert-to-stable :
325+ needs : [ prepare-build ]
326+ if : |
327+ !cancelled() &&
328+ needs.prepare-build.outputs.is_revert == 'true' &&
329+ needs.prepare-build.outputs.revert_image_tag != '' &&
330+ inputs.deploy
331+ uses : ./.github/workflows/promote-to-stable.yaml
332+ with :
333+ images : ${{ needs.prepare-build.outputs.images }}
334+ charts : ' {}'
335+ image_tag : ${{ needs.prepare-build.outputs.revert_image_tag }}
336+ stable_tag : ${{ needs.prepare-build.outputs.revert_major_version }}
337+ latest_tag : ${{ needs.prepare-build.outputs.revert_image_tag }}
338+ secrets : inherit
339+
340+ notify-image-available :
292341 runs-on :
293342 group : infra1-runners-arc
294343 labels : runners-small
295- needs : [ prepare-build, promote-to-stable ]
344+ needs : [ prepare-build ]
345+ permissions :
346+ pull-requests : write
296347 if : |
297348 !cancelled() &&
298349 !contains(needs.*.result, 'failure') &&
299350 needs.prepare-build.outputs.images != '[]' &&
300351 needs.prepare-build.outputs.images != '' &&
301352 inputs.deploy
302- strategy :
303- matrix :
304- cluster : [ na1, ca2, perf1, bom1, syd1, na3, eu1, fra1 ]
305353 steps :
306- - name : Checkout repository
307- uses : actions/checkout@v5
308- - name : Register bricks to ${{ matrix.cluster }}
309- uses : ./.github/actions/rundeck
310- with :
311- server : ' ${{ secrets.RUNDECK_URL }}'
312- project : ${{ matrix.cluster }}-ansible
313- job-group : ansible/msf/hotfix
314- job-name : ${{ matrix.cluster }}_lcm_pipeline_component_tool
315- vault-url : ${{ secrets.VAULT_ADDRESS }}
354+ - name : Comment on PR
355+ run : |
356+ gh pr comment ${{ inputs.pr_number }} \
357+ --repo ${{ github.repository }} \
358+ --body "## LCM bricks image available
359+
360+ New image \`stable/lcm-bricks\` available and tagged for all prod clusters.
361+ Please, manually run the respective rundeck job for each: ${{ secrets.RUNDECK_URL }}
362+
363+ | | |
364+ |---|---|
365+ | **Version** | \`${{ needs.prepare-build.outputs.service_version }}\` |
366+ | **Build tag** | \`${{ needs.prepare-build.outputs.image_tag }}\` |
367+ env :
368+ GH_TOKEN : ${{ secrets.TOKEN_GITHUB_YENKINS }}
316369
317370 create-auto-merge-prod-pr :
318- needs : [ prepare-build, build-helmreleases, register-bricks-prod ]
371+ needs : [ prepare-build, build-helmreleases ]
319372 if : |
320373 !cancelled() &&
321374 !contains(needs.*.result, 'failure') &&
@@ -335,7 +388,7 @@ jobs:
335388 secrets : inherit
336389
337390 create-manual-merge-prod-pr :
338- needs : [ prepare-build, build-helmreleases, register-bricks-prod ]
391+ needs : [ prepare-build, build-helmreleases ]
339392 if : |
340393 !cancelled() &&
341394 !contains(needs.*.result, 'failure') &&
0 commit comments