Skip to content

Commit 19b6e12

Browse files
authored
fix(ci): pre-create release so parallel publishers don't race (#2539)
1 parent 59a93d8 commit 19b6e12

1 file changed

Lines changed: 37 additions & 0 deletions

File tree

.github/workflows/code-release.yml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,42 @@ concurrency:
1010
cancel-in-progress: false
1111

1212
jobs:
13+
prepare-release:
14+
runs-on: ubuntu-latest
15+
permissions:
16+
contents: write
17+
steps:
18+
- name: Get app token
19+
id: app-token
20+
uses: getsentry/action-github-app-token@d4b5da6c5e37703f8c3b3e43abb5705b46e159cc # v3.0.0
21+
with:
22+
app_id: ${{ secrets.GH_APP_ARRAY_RELEASER_APP_ID }}
23+
private_key: ${{ secrets.GH_APP_ARRAY_RELEASER_PRIVATE_KEY }}
24+
25+
- name: Extract version from tag
26+
id: version
27+
run: |
28+
TAG_VERSION="${GITHUB_REF#refs/tags/v}"
29+
echo "version=$TAG_VERSION" >> "$GITHUB_OUTPUT"
30+
31+
- name: Create draft release if absent
32+
env:
33+
GH_TOKEN: ${{ steps.app-token.outputs.token }}
34+
APP_VERSION: ${{ steps.version.outputs.version }}
35+
run: |
36+
# Pre-create a single draft release so every parallel publish job uploads
37+
# into the same release. Without this, electron-forge's GitHub publisher
38+
# creates-if-missing from each job at once, producing multiple releases for
39+
# one tag and scattering assets (the orphans get left as drafts).
40+
if gh release view "v$APP_VERSION" --repo PostHog/code >/dev/null 2>&1; then
41+
echo "Release v$APP_VERSION already exists — reusing it"
42+
else
43+
gh release create "v$APP_VERSION" --repo PostHog/code --draft \
44+
--title "v$APP_VERSION" --notes "Release v$APP_VERSION (build in progress)"
45+
fi
46+
1347
publish-macos:
48+
needs: [prepare-release]
1449
strategy:
1550
fail-fast: false
1651
matrix:
@@ -164,6 +199,7 @@ jobs:
164199
run: pnpm --filter code exec electron-forge publish --from-dry-run
165200

166201
publish-windows:
202+
needs: [prepare-release]
167203
runs-on: windows-latest
168204
permissions:
169205
id-token: write
@@ -245,6 +281,7 @@ jobs:
245281
run: pnpm --filter code run publish
246282

247283
publish-linux:
284+
needs: [prepare-release]
248285
strategy:
249286
fail-fast: false
250287
matrix:

0 commit comments

Comments
 (0)