Skip to content

Commit 50df230

Browse files
RealZSTclaude
andcommitted
ci: parallelize Linux/Windows builds with separate create-release job
Split release workflow so macOS, Linux, and Windows build concurrently after a lightweight create-release job. Saves ~10-15 min per release. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 2025fa9 commit 50df230

1 file changed

Lines changed: 55 additions & 35 deletions

File tree

.github/workflows/release.yml

Lines changed: 55 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,58 @@ env:
99
MACOSX_DEPLOYMENT_TARGET: "12.0"
1010

1111
jobs:
12-
release:
12+
create-release:
13+
runs-on: ubuntu-latest
14+
permissions:
15+
contents: write
16+
outputs:
17+
release_id: ${{ steps.create.outputs.release_id }}
18+
changelog: ${{ steps.changelog.outputs.body }}
19+
steps:
20+
- uses: actions/checkout@v4
21+
with:
22+
fetch-depth: 0
23+
24+
- name: Generate changelog
25+
id: changelog
26+
env:
27+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
28+
run: |
29+
PREV_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "")
30+
if [ -n "$PREV_TAG" ]; then
31+
BODY=$(gh api repos/${{ github.repository }}/releases/generate-notes \
32+
-f tag_name="${{ github.ref_name }}" \
33+
-f previous_tag_name="$PREV_TAG" \
34+
--jq '.body')
35+
else
36+
BODY=$(gh api repos/${{ github.repository }}/releases/generate-notes \
37+
-f tag_name="${{ github.ref_name }}" \
38+
--jq '.body')
39+
fi
40+
if [ -z "$BODY" ]; then
41+
BODY="Bug fixes and improvements."
42+
fi
43+
{
44+
echo "body<<CHANGELOG_EOF"
45+
echo "$BODY"
46+
echo "CHANGELOG_EOF"
47+
} >> "$GITHUB_OUTPUT"
48+
49+
- name: Create draft release
50+
id: create
51+
env:
52+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
53+
run: |
54+
RELEASE_ID=$(gh api repos/${{ github.repository }}/releases \
55+
-f tag_name="${{ github.ref_name }}" \
56+
-f name="HarnessKit ${{ github.ref_name }}" \
57+
-f body="${{ steps.changelog.outputs.body }}" \
58+
-F draft=true \
59+
--jq '.id')
60+
echo "release_id=$RELEASE_ID" >> "$GITHUB_OUTPUT"
61+
62+
release-desktop:
63+
needs: create-release
1364
strategy:
1465
matrix:
1566
include:
@@ -63,33 +114,6 @@ jobs:
63114
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k actions build.keychain
64115
rm certificate.p12
65116
66-
- name: Generate changelog
67-
id: changelog
68-
env:
69-
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
70-
run: |
71-
# Use GitHub's auto-generated release notes (includes PR titles,
72-
# authors, commit links, and "New Contributors" section).
73-
PREV_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "")
74-
if [ -n "$PREV_TAG" ]; then
75-
BODY=$(gh api repos/${{ github.repository }}/releases/generate-notes \
76-
-f tag_name="${{ github.ref_name }}" \
77-
-f previous_tag_name="$PREV_TAG" \
78-
--jq '.body')
79-
else
80-
BODY=$(gh api repos/${{ github.repository }}/releases/generate-notes \
81-
-f tag_name="${{ github.ref_name }}" \
82-
--jq '.body')
83-
fi
84-
if [ -z "$BODY" ]; then
85-
BODY="Bug fixes and improvements."
86-
fi
87-
{
88-
echo "body<<CHANGELOG_EOF"
89-
echo "$BODY"
90-
echo "CHANGELOG_EOF"
91-
} >> "$GITHUB_OUTPUT"
92-
93117
- name: Build desktop app
94118
uses: tauri-apps/tauri-action@v0
95119
env:
@@ -101,11 +125,7 @@ jobs:
101125
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
102126
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
103127
with:
104-
tagName: ${{ github.ref_name }}
105-
releaseName: "HarnessKit ${{ github.ref_name }}"
106-
releaseBody: ${{ steps.changelog.outputs.body || 'Bug fixes and improvements.' }}
107-
releaseDraft: true
108-
prerelease: false
128+
releaseId: ${{ needs.create-release.outputs.release_id }}
109129
tauriScript: cargo tauri
110130
args: --target ${{ matrix.target }}
111131

@@ -122,7 +142,7 @@ jobs:
122142
gh release upload "${{ github.ref_name }}" "hk-macos-${{ matrix.arch }}" --clobber
123143
124144
release-cli-linux:
125-
needs: release
145+
needs: create-release
126146
runs-on: ubuntu-22.04
127147
permissions:
128148
contents: write
@@ -165,7 +185,7 @@ jobs:
165185
gh release upload "${{ github.ref_name }}" hk-linux-x64 --clobber
166186
167187
release-cli-windows:
168-
needs: release
188+
needs: create-release
169189
runs-on: windows-latest
170190
permissions:
171191
contents: write

0 commit comments

Comments
 (0)