Add showcase release workflow and gitignore build artifacts

- Remove 541MB of committed Electron build artifacts from git
- Add .gitignore patterns for release/, *.apk, *.aab, *.ipa
- Add GitHub Actions workflow for building showcase releases
  (manual dispatch with version input, builds Linux desktop +
  Android APK, creates GitHub Release with attached artifacts)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
michael
2026-03-04 10:55:21 -08:00
parent baf8cd3b2a
commit 1b0d09313c
2 changed files with 178 additions and 0 deletions

171
.github/workflows/showcase-release.yml vendored Normal file
View File

@@ -0,0 +1,171 @@
name: Showcase Release
on:
workflow_dispatch:
inputs:
version:
description: 'Release version (e.g., 0.1.0)'
required: true
type: string
build_desktop:
description: 'Build desktop (Electron) artifacts'
required: false
type: boolean
default: true
build_mobile:
description: 'Build mobile (Android APK) artifact'
required: false
type: boolean
default: true
concurrency:
group: showcase-release
cancel-in-progress: false
jobs:
# ─── Desktop Linux Build ───────────────────────────────────────
desktop-linux:
if: inputs.build_desktop
runs-on: ubuntu-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 (Linux)
working-directory: packages/showcase/desktop
run: npx electron-builder --linux
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload desktop artifacts
uses: actions/upload-artifact@v4
with:
name: desktop-linux
path: |
packages/showcase/desktop/release/*.AppImage
packages/showcase/desktop/release/*.deb
retention-days: 30
# ─── Mobile Android Build ──────────────────────────────────────
mobile-android:
if: inputs.build_mobile
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
cache: npm
- uses: actions/setup-java@v4
with:
distribution: temurin
java-version: '17'
- name: Setup Android SDK
uses: android-actions/setup-android@v3
- name: Install dependencies
run: npm ci
- name: Build design system packages
run: npx turbo run build --filter='@dangerousthings/tokens'
- name: Expo prebuild
working-directory: packages/showcase/mobile
run: npx expo prebuild --clean --platform android
- name: Cache Gradle
uses: actions/cache@v4
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: gradle-${{ hashFiles('packages/showcase/mobile/android/**/*.gradle*', 'packages/showcase/mobile/android/gradle/wrapper/gradle-wrapper.properties') }}
restore-keys: gradle-
- name: Build release APK
working-directory: packages/showcase/mobile/android
run: ./gradlew assembleRelease
- name: Upload APK artifact
uses: actions/upload-artifact@v4
with:
name: mobile-android
path: packages/showcase/mobile/android/app/build/outputs/apk/release/app-release.apk
retention-days: 30
# ─── Create GitHub Release ─────────────────────────────────────
create-release:
needs: [desktop-linux, mobile-android]
if: always() && (needs.desktop-linux.result == 'success' || needs.mobile-android.result == 'success')
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: release-artifacts
- name: Rename artifacts with version
env:
RELEASE_VERSION: ${{ inputs.version }}
run: |
mkdir -p final-artifacts
# Desktop artifacts — replace 0.0.0 with release version
if [ -d release-artifacts/desktop-linux ]; then
for f in release-artifacts/desktop-linux/*; do
filename=$(basename "$f")
newname=$(echo "$filename" | sed "s/0\.0\.0/${RELEASE_VERSION}/g")
cp "$f" "final-artifacts/$newname"
done
fi
# Mobile APK — give it a descriptive name
if [ -f release-artifacts/mobile-android/app-release.apk ]; then
cp release-artifacts/mobile-android/app-release.apk \
"final-artifacts/dt-showcase-mobile-${RELEASE_VERSION}.apk"
fi
echo "Release artifacts:"
ls -lh final-artifacts/
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
tag_name: showcase-v${{ inputs.version }}
name: Showcase v${{ inputs.version }}
body: |
## DT Design System Showcase v${{ inputs.version }}
### Desktop (Electron)
- **AppImage** (Linux, portable) — download and `chmod +x` to run
- **deb** (Debian/Ubuntu) — install with `sudo dpkg -i <file>.deb`
### Mobile (Android)
- **APK** — sideload on any Android device (Settings > Install unknown apps)
---
Built from commit ${{ github.sha }}
files: final-artifacts/*
draft: false
prerelease: false

7
.gitignore vendored
View File

@@ -25,3 +25,10 @@ Thumbs.db
# Logs
*.log
npm-debug.log*
# Showcase build artifacts
release/
*.apk
*.aab
*.ipa
*.xcarchive