Skip to content

Commit ed1edb8

Browse files
committed
fix(ci): split release-please PR and release workflows
Separate PR creation from tag/release creation to avoid race conditions that generated untagged drafts and oversized follow-up release PRs. Made-with: Cursor
1 parent 6ff6b9c commit ed1edb8

2 files changed

Lines changed: 47 additions & 5 deletions

File tree

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
name: Release Please Tag and Release
2+
3+
# Handles only release finalization for merged release PRs:
4+
# - creates/pushes vX.Y.Z tag
5+
# - creates draft GitHub release
6+
# Build/upload/publish is still done by release.yml (tag-triggered workflow).
7+
8+
on:
9+
push:
10+
branches:
11+
- main
12+
# Release-PR merges modify only these metadata files.
13+
paths:
14+
- "CHANGELOG.md"
15+
- "package.json"
16+
- ".release-please-manifest.json"
17+
18+
permissions:
19+
contents: write
20+
pull-requests: write
21+
22+
concurrency:
23+
group: release-please-release-${{ github.ref }}
24+
cancel-in-progress: false
25+
26+
jobs:
27+
release-please-release:
28+
runs-on: ubuntu-latest
29+
steps:
30+
- uses: googleapis/release-please-action@v4
31+
with:
32+
config-file: release-please-config.json
33+
manifest-file: .release-please-manifest.json
34+
skip-github-pull-request: true
35+
# Use PAT so pushed tags can trigger downstream tag workflows.
36+
token: ${{ secrets.RELEASE_PLEASE_TOKEN || secrets.GITHUB_TOKEN }}

.github/workflows/release-please.yml

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,20 @@
1-
name: Release Please
1+
name: Release Please PR
22

33
# Opens / updates a "Release PR" whenever conventional-commits land on main.
4-
# On merge, release-please bumps `package.json`, updates `CHANGELOG.md`, creates
5-
# a GitHub Release and pushes a matching `v<version>` tag. The tag push then
6-
# triggers `.github/workflows/release.yml` which builds & uploads the desktop
7-
# installers. Release notes come from the conventional commit messages.
4+
# This workflow only manages the PR itself. The actual tag + draft release
5+
# creation is handled by `release-please-release.yml` on release-PR merge
6+
# commits, which avoids release/PR race conditions.
87

98
on:
109
push:
1110
branches:
1211
- main
12+
# Ignore release-PR merge commits (these only touch release metadata files).
13+
# They are handled by release-please-release.yml.
14+
paths-ignore:
15+
- "CHANGELOG.md"
16+
- "package.json"
17+
- ".release-please-manifest.json"
1318

1419
permissions:
1520
contents: write
@@ -27,6 +32,7 @@ jobs:
2732
with:
2833
config-file: release-please-config.json
2934
manifest-file: .release-please-manifest.json
35+
skip-github-release: true
3036
# IMPORTANT: tags created by GITHUB_TOKEN do NOT trigger other
3137
# workflows (GitHub deliberately breaks action→action chains). We
3238
# need release.yml to fire on the v* tag push so bins get built,

0 commit comments

Comments
 (0)