Skip to content

Commit cabeda2

Browse files
committed
ci: workflow dispatch
1 parent 850eafd commit cabeda2

1 file changed

Lines changed: 53 additions & 13 deletions

File tree

.github/workflows/secure_nx_release.yml

Lines changed: 53 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,18 @@ on:
99
- '*-*'
1010
workflow_dispatch:
1111
inputs:
12-
dist-tag:
13-
description: "npm dist-tag to use (e.g. latest | next | canary)"
12+
release-type:
13+
description: "Version bump (patch/minor/major publish to npm 'latest'; prerelease uses 'preid')"
14+
required: false
15+
type: choice
16+
options:
17+
- prerelease
18+
- patch
19+
- minor
20+
- major
21+
default: prerelease
22+
preid:
23+
description: "Prerelease identifier (used only when release-type=prerelease; also becomes the npm dist-tag, e.g. next | canary)"
1424
required: false
1525
type: string
1626
default: next
@@ -83,23 +93,37 @@ jobs:
8393
set -euo pipefail
8494
8595
if [[ "${GITHUB_EVENT_NAME}" == "workflow_dispatch" ]]; then
86-
dist_tag="${{ inputs['dist-tag'] }}"
96+
release_type="${{ inputs['release-type'] }}"
97+
preid="${{ inputs['preid'] }}"
8798
scope="${{ inputs['release-group'] }}"
8899
dry_run="${{ inputs['dry-run'] }}"
89100
mode="dispatch"
101+
102+
# npm dist-tag follows release type: prerelease -> preid, stable -> latest
103+
if [[ "$release_type" == "prerelease" ]]; then
104+
dist_tag="$preid"
105+
else
106+
dist_tag="latest"
107+
fi
90108
elif [[ "${GITHUB_REF}" == refs/tags/* ]]; then
109+
release_type=""
110+
preid=""
91111
dist_tag=""
92112
scope=""
93113
dry_run="false"
94114
mode="tag"
95115
else
116+
release_type="prerelease"
117+
preid="next"
96118
dist_tag="next"
97119
scope=""
98120
dry_run="false"
99121
mode="main"
100122
fi
101123
102124
echo "mode=${mode}" >> "$GITHUB_OUTPUT"
125+
echo "release_type=${release_type}" >> "$GITHUB_OUTPUT"
126+
echo "preid=${preid}" >> "$GITHUB_OUTPUT"
103127
echo "dist_tag=${dist_tag}" >> "$GITHUB_OUTPUT"
104128
echo "scope=${scope}" >> "$GITHUB_OUTPUT"
105129
echo "dry_run=${dry_run}" >> "$GITHUB_OUTPUT"
@@ -195,42 +219,56 @@ jobs:
195219
if: ${{ steps.ctx.outputs.mode == 'main' && steps.affected.outputs.count == '0' }}
196220
run: echo "No affected release projects on main; skipping version + publish."
197221

198-
- name: nx release version (dispatch)
222+
# Orchestrated release: bumps versions, generates changelogs, commits + tags + pushes in one shot.
223+
# --skip-publish keeps publishing as a separate step below so the OIDC token-clearing logic still runs.
224+
- name: nx release version + changelog (dispatch)
199225
if: ${{ steps.ctx.outputs.mode == 'dispatch' && !inputs.dry-run }}
200226
shell: bash
201227
run: |
202228
set -euo pipefail
203229
204230
scope="${{ steps.ctx.outputs.scope }}"
231+
projects_arg=()
205232
if [[ -n "$scope" ]]; then
206233
projects_arg=(--projects "$scope")
207-
else
208-
projects_arg=()
209234
fi
210235
211-
npx nx release version prerelease \
212-
--preid "${{ steps.ctx.outputs.dist_tag }}" \
236+
release_type="${{ steps.ctx.outputs.release_type }}"
237+
preid_arg=()
238+
if [[ "$release_type" == "prerelease" ]]; then
239+
preid_arg=(--preid "${{ steps.ctx.outputs.preid }}")
240+
fi
241+
242+
npx nx release "$release_type" \
243+
"${preid_arg[@]}" \
213244
"${projects_arg[@]}" \
245+
--skip-publish \
214246
--git-commit \
215247
--git-push \
216248
--verbose
217249
218-
- name: nx release version (dispatch, dry-run)
250+
- name: nx release version + changelog (dispatch, dry-run)
219251
if: ${{ steps.ctx.outputs.mode == 'dispatch' && inputs.dry-run }}
220252
shell: bash
221253
run: |
222254
set -euo pipefail
223255
224256
scope="${{ steps.ctx.outputs.scope }}"
257+
projects_arg=()
225258
if [[ -n "$scope" ]]; then
226259
projects_arg=(--projects "$scope")
227-
else
228-
projects_arg=()
229260
fi
230261
231-
npx nx release version prerelease \
232-
--preid "${{ steps.ctx.outputs.dist_tag }}" \
262+
release_type="${{ steps.ctx.outputs.release_type }}"
263+
preid_arg=()
264+
if [[ "$release_type" == "prerelease" ]]; then
265+
preid_arg=(--preid "${{ steps.ctx.outputs.preid }}")
266+
fi
267+
268+
npx nx release "$release_type" \
269+
"${preid_arg[@]}" \
233270
"${projects_arg[@]}" \
271+
--skip-publish \
234272
--verbose \
235273
--dry-run
236274
@@ -406,6 +444,8 @@ jobs:
406444
407445
echo "Nx Release completed."
408446
echo "- mode: ${mode}"
447+
echo "- release-type: '${{ steps.ctx.outputs.release_type }}'"
448+
echo "- preid: '${{ steps.ctx.outputs.preid }}'"
409449
echo "- dist-tag: ${{ steps.ctx.outputs.mode == 'tag' && steps.taginfo.outputs.dist_tag || steps.ctx.outputs.dist_tag }}"
410450
echo "- scope: '${{ steps.ctx.outputs.scope }}'"
411451
echo "- next-prerelease-allowlist: ${NEXT_PRERELEASE_PROJECT_ALLOWLIST}"

0 commit comments

Comments
 (0)