@@ -5,39 +5,57 @@ permissions:
55 contents : write
66 actions : write
77 pull-requests : write
8+ id-token : write
89
910on :
1011 pull_request :
1112 push :
1213 branches :
1314 - " main"
15+ release :
16+ types : [published]
1417
1518# We'd like to run the pipeline for Dependabot PRs sequentially, and all other PRs in parallel, but still only one action run for each PR.
1619# TODO: We won't need this anymore as soon as we get Merge Groups and could remove the concurrency again, which currently brings us pain regarding unstarted, non-self-healing dependabot pipelines
20+ # NOTE: Concurrency is disabled for release events as they should always run to completion
1721concurrency :
22+ # Creates a unique concurrency group identifier for release events using the git reference
1823 group : >-
1924 ${{
25+ github.event_name == 'release' &&
26+ format('release-{0}', github.ref) ||
2027 github.actor == 'dependabot[bot]' &&
2128 'dependabot' ||
2229 format('{0}-{1}', github.workflow, github.ref)
2330 }}
2431 cancel-in-progress : >-
2532 ${{
33+ github.event_name != 'release' &&
2634 github.actor != 'dependabot[bot]' &&
2735 github.ref != 'refs/heads/main'
2836 }}
2937
3038jobs :
3139 init :
40+ # Skip the entire pipeline for changeset release PRs as they only contain version bumps
41+ if : |
42+ !(
43+ github.event_name == 'pull_request' &&
44+ startsWith(github.head_ref, 'changeset-release/') &&
45+ github.event.pull_request.head.repo.full_name == github.repository &&
46+ github.event.pull_request.user.login == 'dbux-auto-merge-pr[bot]'
47+ )
3248 uses : ./.github/workflows/00-init.yml
3349 secrets : inherit
50+ with :
51+ release : ${{ github.event_name == 'release' }}
3452
3553 lint :
3654 uses : ./.github/workflows/01-lint-test.yml
3755 needs : [init]
3856
3957 cancel-on-failure-lint :
40- if : ${{ !cancelled() && needs.lint.result == 'failure' }}
58+ if : ${{ github.event_name != 'release' && !cancelled() && needs.lint.result == 'failure' }}
4159 uses : ./.github/workflows/00-cancel-workflow.yml
4260 secrets : inherit
4361 needs : [lint]
4765 needs : [init]
4866
4967 cancel-on-failure-build-packages :
50- if : ${{ !cancelled() && needs.build-packages.result == 'failure' }}
68+ if : ${{ github.event_name != 'release' && !cancelled() && needs.build-packages.result == 'failure' }}
5169 uses : ./.github/workflows/00-cancel-workflow.yml
5270 secrets : inherit
5371 needs : [build-packages]
7391 needs : [build-packages]
7492
7593 cancel-on-failure-build-outputs :
76- if : ${{ !cancelled() && needs.build-outputs.result == 'failure' }}
94+ if : ${{ github.event_name != 'release' && !cancelled() && needs.build-outputs.result == 'failure' }}
7795 uses : ./.github/workflows/00-cancel-workflow.yml
7896 secrets : inherit
7997 needs : [build-outputs]
@@ -130,7 +148,7 @@ jobs:
130148 showcase : stencil-showcase
131149
132150 cancel-on-failure-build-showcase-stencil :
133- if : ${{ !cancelled() && needs.build-showcase-stencil.result == 'failure' }}
151+ if : ${{ github.event_name != 'release' && !cancelled() && needs.build-showcase-stencil.result == 'failure' }}
134152 uses : ./.github/workflows/00-cancel-workflow.yml
135153 secrets : inherit
136154 needs : [build-showcase-stencil]
@@ -143,7 +161,7 @@ jobs:
143161 showcase : angular-showcase
144162
145163 cancel-on-failure-build-showcase-angular :
146- if : ${{ !cancelled() && needs.build-showcase-angular.result == 'failure' }}
164+ if : ${{ github.event_name != 'release' && !cancelled() && needs.build-showcase-angular.result == 'failure' }}
147165 uses : ./.github/workflows/00-cancel-workflow.yml
148166 secrets : inherit
149167 needs : [build-showcase-angular]
@@ -156,7 +174,7 @@ jobs:
156174 showcase : angular-ssr-showcase
157175
158176 cancel-on-failure-build-showcase-angular-ssr :
159- if : ${{ !cancelled() && needs.build-showcase-angular-ssr.result == 'failure' }}
177+ if : ${{ github.event_name != 'release' && !cancelled() && needs.build-showcase-angular-ssr.result == 'failure' }}
160178 uses : ./.github/workflows/00-cancel-workflow.yml
161179 secrets : inherit
162180 needs : [build-showcase-angular-ssr]
@@ -169,7 +187,7 @@ jobs:
169187 showcase : react-showcase
170188
171189 cancel-on-failure-build-showcase-react :
172- if : ${{ !cancelled() && needs.build-showcase-react.result == 'failure' }}
190+ if : ${{ github.event_name != 'release' && !cancelled() && needs.build-showcase-react.result == 'failure' }}
173191 uses : ./.github/workflows/00-cancel-workflow.yml
174192 secrets : inherit
175193 needs : [build-showcase-react]
@@ -182,7 +200,7 @@ jobs:
182200 showcase : next-showcase
183201
184202 cancel-on-failure-build-showcase-next :
185- if : ${{ !cancelled() && needs.build-showcase-next.result == 'failure' }}
203+ if : ${{ github.event_name != 'release' && !cancelled() && needs.build-showcase-next.result == 'failure' }}
186204 uses : ./.github/workflows/00-cancel-workflow.yml
187205 secrets : inherit
188206 needs : [build-showcase-next]
@@ -195,7 +213,7 @@ jobs:
195213 showcase : vue-showcase
196214
197215 cancel-on-failure-build-showcase-vue :
198- if : ${{ !cancelled() && needs.build-showcase-vue.result == 'failure' }}
216+ if : ${{ github.event_name != 'release' && !cancelled() && needs.build-showcase-vue.result == 'failure' }}
199217 uses : ./.github/workflows/00-cancel-workflow.yml
200218 secrets : inherit
201219 needs : [build-showcase-vue]
@@ -208,7 +226,7 @@ jobs:
208226 showcase : nuxt-showcase
209227
210228 cancel-on-failure-build-showcase-nuxt :
211- if : ${{ !cancelled() && needs.build-showcase-nuxt.result == 'failure' }}
229+ if : ${{ github.event_name != 'release' && !cancelled() && needs.build-showcase-nuxt.result == 'failure' }}
212230 uses : ./.github/workflows/00-cancel-workflow.yml
213231 secrets : inherit
214232 needs : [build-showcase-nuxt]
@@ -221,7 +239,7 @@ jobs:
221239 secrets : inherit
222240
223241 cancel-on-failure-build-showcase-patternhub :
224- if : ${{ !cancelled() && needs.build-showcase-patternhub.result == 'failure' }}
242+ if : ${{ github.event_name != 'release' && !cancelled() && needs.build-showcase-patternhub.result == 'failure' }}
225243 uses : ./.github/workflows/00-cancel-workflow.yml
226244 secrets : inherit
227245 needs : [build-showcase-patternhub]
@@ -266,23 +284,23 @@ jobs:
266284 baseUrl : ${{ needs.init.outputs.baseUrl }}
267285
268286 regenerate-snapshots-components :
269- if : ${{ !cancelled() && needs.test-components.result == 'failure' }}
287+ if : ${{ github.event_name != 'release' && !cancelled() && needs.test-components.result == 'failure' }}
270288 uses : ./.github/workflows/02-e2e-regenerate.yml
271289 with :
272290 version : ${{ needs.init.outputs.playwrightVersion }}
273291 type : components
274292 needs : [test-components, init]
275293
276294 regenerate-snapshots-foundations :
277- if : ${{ !cancelled() && needs.test-foundations.result == 'failure' }}
295+ if : ${{ github.event_name != 'release' && !cancelled() && needs.test-foundations.result == 'failure' }}
278296 uses : ./.github/workflows/02-e2e-regenerate.yml
279297 with :
280298 version : ${{ needs.init.outputs.playwrightVersion }}
281299 type : foundations
282300 needs : [test-foundations, init]
283301
284302 regenerate-snapshots-patternhub :
285- if : ${{ !cancelled() && needs.test-showcase-patternhub.result == 'failure' }}
303+ if : ${{ github.event_name != 'release' && !cancelled() && needs.test-showcase-patternhub.result == 'failure' }}
286304 uses : ./.github/workflows/02-e2e-regenerate.yml
287305 with :
288306 version : ${{ needs.init.outputs.playwrightVersion }}
@@ -291,8 +309,10 @@ jobs:
291309 needs : [build-showcase-patternhub, test-showcase-patternhub, init]
292310
293311 # This job runs only if aria-snapshots were changed compared to main or if it runs on main branch
312+ # For releases, it always runs
294313 test-screen-reader :
295314 if : |
315+ github.event_name == 'release' ||
296316 needs.init.outputs.test-ally == 'true' ||
297317 github.event.pull_request == null
298318 uses : ./.github/workflows/02-e2e-screen-reader.yml
@@ -302,7 +322,7 @@ jobs:
302322
303323 regenerate-snapshots :
304324 if : |
305- !cancelled() && !contains(github.actor,'[bot]') && (
325+ github.event_name != 'release' && !cancelled() && !contains(github.actor,'[bot]') && (
306326 needs.test-showcase-angular.result == 'failure' ||
307327 needs.test-showcase-react.result == 'failure' ||
308328 needs.test-showcase-vue.result == 'failure' ||
@@ -325,7 +345,7 @@ jobs:
325345 uses : ./.github/workflows/02-e2e-regenerated-snapshots-commit.yml
326346 secrets : inherit
327347 if : |
328- ${{ !cancelled() &&
348+ ${{ github.event_name != 'release' && !cancelled() &&
329349 ( needs.regenerate-snapshots-components.result == 'success' ||
330350 needs.regenerate-snapshots-foundations.result == 'success' ||
331351 needs.regenerate-snapshots-patternhub.result == 'success' ||
@@ -349,6 +369,8 @@ jobs:
349369 runs-on : ubuntu-24.04 # Use Ubuntu 24.04 explicitly
350370 steps :
351371 - name : 🎉 Checks done
372+ env :
373+ IS_RELEASE : ${{ github.event_name == 'release' }}
352374 run : |
353375 resultBuildStorybookComposition="${{ needs.build-storybook-composition.result }}"
354376 resultBuildStorybookAngular="${{ needs.build-storybook-angular.result }}"
@@ -371,12 +393,13 @@ jobs:
371393 resultTestShowcaseVue="${{ needs.test-showcase-vue.result }}"
372394 resultTestShowcasePatternhub="${{ needs.test-showcase-patternhub.result }}"
373395 resultTestScreenReader="${{ needs.test-screen-reader.result }}"
396+
374397 if [[ $resultBuildStorybookComposition == "success" ]] && \
375398 [[ $resultBuildStorybookAngular == "success" ]] && \
376399 [[ $resultBuildStorybookReact == "success" ]] && \
377400 [[ $resultBuildStorybookVue == "success" ]] && \
378401 [[ $resultTestFoundations == "success" ]] && \
379- [[ $resultTestScreenReader == "success" || $resultTestScreenReader == "skipped" ]] && \
402+ [[ $resultTestScreenReader == "success" || (github.event_name != 'release' && $resultTestScreenReader == "skipped") ]] && \
380403 [[ $resultTestShowcaseStencil == "success" ]] && \
381404 [[ $resultTestShowcaseAngular == "success" ]] && \
382405 [[ $resultTestShowcaseReact == "success" ]] && \
@@ -428,12 +451,12 @@ jobs:
428451 if : |
429452 ${{
430453 !cancelled() && github.actor != 'dependabot[bot]' &&
431- (github.event.pull_request == null || github.event.pull_request.head.repo.owner.login == 'db-ux-design-system')
454+ (github.event_name == 'release' || github. event.pull_request == null || github.event.pull_request.head.repo.owner.login == 'db-ux-design-system')
432455 }}
433456 needs : [checks-done, init]
434457 with :
435- release : false
436- preRelease : false
458+ release : ${{ needs.init.outputs.release }}
459+ preRelease : ${{ needs.init.outputs.preRelease }}
437460 name : ${{ needs.init.outputs.branchName }}
438461 repoName : ${{ needs.init.outputs.repoName }}
439462 repoOwner : ${{ needs.init.outputs.repoOwner }}
@@ -442,3 +465,13 @@ jobs:
442465 if : ${{ !cancelled() && github.event.pull_request != null }}
443466 needs : [deploy]
444467 uses : ./.github/workflows/03-preview-url-pr-description.yml
468+
469+ publishpackages :
470+ if : ${{ github.event_name == 'release' }}
471+ uses : ./.github/workflows/03-publish-packages.yml
472+ needs : [init, checks-done, build-outputs]
473+ secrets : inherit
474+ with :
475+ release : ${{ needs.init.outputs.release }}
476+ preRelease : ${{ needs.init.outputs.preRelease }}
477+ version : ${{ needs.init.outputs.version }}
0 commit comments