Add Windows and macOS builds to showcase release workflow
- Add desktop-windows job (NSIS installer + portable exe) - Add desktop-macos job (dmg + zip, unsigned, x64 + arm64) - Update create-release to collect artifacts from all platforms - Update release notes with all artifact types Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
104
.github/workflows/showcase-release.yml
vendored
104
.github/workflows/showcase-release.yml
vendored
@@ -60,6 +60,81 @@ jobs:
|
|||||||
packages/showcase/desktop/release/*.deb
|
packages/showcase/desktop/release/*.deb
|
||||||
retention-days: 30
|
retention-days: 30
|
||||||
|
|
||||||
|
# ─── Desktop Windows Build ──────────────────────────────────────
|
||||||
|
desktop-windows:
|
||||||
|
if: inputs.build_desktop
|
||||||
|
runs-on: windows-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 22
|
||||||
|
cache: npm
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm ci
|
||||||
|
|
||||||
|
- name: Build design system packages
|
||||||
|
run: npx turbo run build --filter='@dangerousthings/tokens' --filter='@dangerousthings/web'
|
||||||
|
|
||||||
|
- name: Build desktop showcase
|
||||||
|
working-directory: packages/showcase/desktop
|
||||||
|
run: npm run build
|
||||||
|
|
||||||
|
- name: Package desktop (Windows)
|
||||||
|
working-directory: packages/showcase/desktop
|
||||||
|
run: npx electron-builder --win
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Upload desktop artifacts
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: desktop-windows
|
||||||
|
path: |
|
||||||
|
packages/showcase/desktop/release/*.exe
|
||||||
|
retention-days: 30
|
||||||
|
|
||||||
|
# ─── Desktop macOS Build ────────────────────────────────────────
|
||||||
|
desktop-macos:
|
||||||
|
if: inputs.build_desktop
|
||||||
|
runs-on: macos-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 22
|
||||||
|
cache: npm
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm ci
|
||||||
|
|
||||||
|
- name: Build design system packages
|
||||||
|
run: npx turbo run build --filter='@dangerousthings/tokens' --filter='@dangerousthings/web'
|
||||||
|
|
||||||
|
- name: Build desktop showcase
|
||||||
|
working-directory: packages/showcase/desktop
|
||||||
|
run: npm run build
|
||||||
|
|
||||||
|
- name: Package desktop (macOS)
|
||||||
|
working-directory: packages/showcase/desktop
|
||||||
|
run: npx electron-builder --mac --x64 --arm64
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
# No CSC_LINK / CSC_KEY_PASSWORD = unsigned build
|
||||||
|
# Users will need to right-click > Open to bypass Gatekeeper
|
||||||
|
|
||||||
|
- name: Upload desktop artifacts
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: desktop-macos
|
||||||
|
path: |
|
||||||
|
packages/showcase/desktop/release/*.dmg
|
||||||
|
packages/showcase/desktop/release/*.zip
|
||||||
|
retention-days: 30
|
||||||
|
|
||||||
# ─── Mobile Android Build ──────────────────────────────────────
|
# ─── Mobile Android Build ──────────────────────────────────────
|
||||||
mobile-android:
|
mobile-android:
|
||||||
if: inputs.build_mobile
|
if: inputs.build_mobile
|
||||||
@@ -112,8 +187,8 @@ jobs:
|
|||||||
|
|
||||||
# ─── Create GitHub Release ─────────────────────────────────────
|
# ─── Create GitHub Release ─────────────────────────────────────
|
||||||
create-release:
|
create-release:
|
||||||
needs: [desktop-linux, mobile-android]
|
needs: [desktop-linux, desktop-windows, desktop-macos, mobile-android]
|
||||||
if: always() && (needs.desktop-linux.result == 'success' || needs.mobile-android.result == 'success')
|
if: always() && (needs.desktop-linux.result == 'success' || needs.desktop-windows.result == 'success' || needs.desktop-macos.result == 'success' || needs.mobile-android.result == 'success')
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: write
|
||||||
@@ -131,7 +206,7 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
mkdir -p final-artifacts
|
mkdir -p final-artifacts
|
||||||
|
|
||||||
# Desktop artifacts — replace 0.0.0 with release version
|
# Desktop Linux artifacts
|
||||||
if [ -d release-artifacts/desktop-linux ]; then
|
if [ -d release-artifacts/desktop-linux ]; then
|
||||||
for f in release-artifacts/desktop-linux/*; do
|
for f in release-artifacts/desktop-linux/*; do
|
||||||
filename=$(basename "$f")
|
filename=$(basename "$f")
|
||||||
@@ -140,7 +215,25 @@ jobs:
|
|||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Mobile APK — give it a descriptive name
|
# Desktop Windows artifacts
|
||||||
|
if [ -d release-artifacts/desktop-windows ]; then
|
||||||
|
for f in release-artifacts/desktop-windows/*; do
|
||||||
|
filename=$(basename "$f")
|
||||||
|
newname=$(echo "$filename" | sed "s/0\.0\.0/${RELEASE_VERSION}/g")
|
||||||
|
cp "$f" "final-artifacts/$newname"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Desktop macOS artifacts
|
||||||
|
if [ -d release-artifacts/desktop-macos ]; then
|
||||||
|
for f in release-artifacts/desktop-macos/*; do
|
||||||
|
filename=$(basename "$f")
|
||||||
|
newname=$(echo "$filename" | sed "s/0\.0\.0/${RELEASE_VERSION}/g")
|
||||||
|
cp "$f" "final-artifacts/$newname"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Mobile APK
|
||||||
if [ -f release-artifacts/mobile-android/app-release.apk ]; then
|
if [ -f release-artifacts/mobile-android/app-release.apk ]; then
|
||||||
cp release-artifacts/mobile-android/app-release.apk \
|
cp release-artifacts/mobile-android/app-release.apk \
|
||||||
"final-artifacts/dt-showcase-mobile-${RELEASE_VERSION}.apk"
|
"final-artifacts/dt-showcase-mobile-${RELEASE_VERSION}.apk"
|
||||||
@@ -160,6 +253,9 @@ jobs:
|
|||||||
### Desktop (Electron)
|
### Desktop (Electron)
|
||||||
- **AppImage** (Linux, portable) — download and `chmod +x` to run
|
- **AppImage** (Linux, portable) — download and `chmod +x` to run
|
||||||
- **deb** (Debian/Ubuntu) — install with `sudo dpkg -i <file>.deb`
|
- **deb** (Debian/Ubuntu) — install with `sudo dpkg -i <file>.deb`
|
||||||
|
- **exe** (Windows) — NSIS installer + portable exe
|
||||||
|
- **dmg** (macOS) — unsigned, right-click > Open to bypass Gatekeeper
|
||||||
|
- **zip** (macOS) — portable archive
|
||||||
|
|
||||||
### Mobile (Android)
|
### Mobile (Android)
|
||||||
- **APK** — sideload on any Android device (Settings > Install unknown apps)
|
- **APK** — sideload on any Android device (Settings > Install unknown apps)
|
||||||
|
|||||||
Reference in New Issue
Block a user