1313 default : patch
1414
1515jobs :
16- # ── Detect release mode ──────────────────────────────────────────────────
17- # Reads the merged PR's labels to decide dev vs release, and which semver
18- # component to bump. workflow_dispatch always triggers a release.
19- detect-mode :
20- name : Detect release mode
21- runs-on : ubuntu-latest
22- outputs :
23- release-mode : ${{ steps.check.outputs.mode }}
24- bump-type : ${{ steps.check.outputs.bump-type }}
25- steps :
26- - name : Check trigger and PR labels
27- id : check
28- env :
29- GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
30- run : |
31- # workflow_dispatch always triggers a release with the chosen bump type.
32- if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
33- echo "mode=release" >> "$GITHUB_OUTPUT"
34- echo "bump-type=${{ inputs.bump-type }}" >> "$GITHUB_OUTPUT"
35- exit 0
36- fi
37-
38- # For push events, check the merged PR's labels to decide dev vs release.
39- # NOTE: relies on merge commits (not squash/rebase) so github.sha matches
40- # the PR's merge commit SHA in the search results.
41- LABELS=$(gh pr list \
42- --state merged \
43- --base main \
44- --search "${{ github.sha }}" \
45- --json labels \
46- --jq '.[0].labels[].name' 2>/dev/null || true)
47-
48- # Match "release" or "release:<type>" but not unrelated labels like
49- # "release-blocker" or "release-notes".
50- if echo "$LABELS" | grep -qE "^release(:|$)"; then
51- echo "mode=release" >> "$GITHUB_OUTPUT"
52- if echo "$LABELS" | grep -q "release:major"; then
53- echo "bump-type=major" >> "$GITHUB_OUTPUT"
54- elif echo "$LABELS" | grep -q "release:minor"; then
55- echo "bump-type=minor" >> "$GITHUB_OUTPUT"
56- else
57- echo "bump-type=patch" >> "$GITHUB_OUTPUT"
58- fi
59- else
60- echo "mode=dev" >> "$GITHUB_OUTPUT"
61- echo "bump-type=patch" >> "$GITHUB_OUTPUT"
62- fi
16+ # ── Dev publish ──────────────────────────────────────────────────────────
17+ # Every push to main publishes a pre-release dev build. Releases are
18+ # triggered manually via workflow_dispatch when the team is ready to ship.
19+ publish-dev :
20+ name : Publish dev build
21+ if : github.event_name == 'push'
22+ uses : datum-cloud/actions/.github/workflows/publish-npm-package.yaml@v1.13.0
23+ with :
24+ package-name : " @datum-cloud/activity-ui"
25+ package-path : ui
26+ release-mode : dev
27+ secrets : inherit
6328
6429 # ── Bump version ─────────────────────────────────────────────────────────
65- # Runs only for release mode . Bumps the version in package.json, commits,
30+ # Runs only on manual dispatch . Bumps the version in package.json, commits,
6631 # creates the git tag, and pushes to main. All downstream jobs read the
6732 # version from this job's output — the npm publish workflow receives it
6833 # already set in package.json.
6934 bump-version :
7035 name : Bump version
71- needs : detect-mode
72- if : needs.detect-mode.outputs.release-mode == 'release'
36+ if : github.event_name == 'workflow_dispatch'
7337 runs-on : ubuntu-latest
7438 permissions :
7539 contents : write
10266 id : bump
10367 working-directory : ui
10468 env :
105- BUMP_TYPE : ${{ needs.detect-mode.outputs .bump-type }}
69+ BUMP_TYPE : ${{ inputs .bump-type }}
10670 run : |
10771 if [[ "$BUMP_TYPE" != "major" && "$BUMP_TYPE" != "minor" && "$BUMP_TYPE" != "patch" ]]; then
10872 echo "::error::Invalid bump-type '$BUMP_TYPE'. Must be major, minor, or patch."
@@ -113,24 +77,22 @@ jobs:
11377 echo "new-version=${NEW_VERSION}" >> "$GITHUB_OUTPUT"
11478 git push origin main --follow-tags
11579
116- # ── Publish to npm ───────────────────────────────────────────────────────
117- # For release: package.json already has the bumped version from bump-version.
118- # For dev: the reusable workflow computes a pre-release version from the SHA.
119- publish :
120- needs : [detect-mode, bump-version]
121- if : always() && !failure() && !cancelled() && needs.detect-mode.result == 'success'
80+ # ── Publish release to npm ───────────────────────────────────────────────
81+ # Runs after bump-version. package.json already has the bumped version.
82+ publish-release :
83+ name : Publish release
84+ needs : bump-version
12285 uses : datum-cloud/actions/.github/workflows/publish-npm-package.yaml@v1.13.0
12386 with :
12487 package-name : " @datum-cloud/activity-ui"
12588 package-path : ui
126- release-mode : ${{ needs.detect-mode.outputs. release-mode }}
89+ release-mode : release
12790 secrets : inherit
12891
12992 # ── Create GitHub Release ────────────────────────────────────────────────
13093 create-release :
13194 name : Create GitHub Release
132- needs : [bump-version, publish]
133- if : needs.bump-version.result == 'success'
95+ needs : [bump-version, publish-release]
13496 runs-on : ubuntu-latest
13597 permissions :
13698 contents : write
0 commit comments