- Add GitHub Actions workflows for CI and releases - Create icon generation script and SVG source - Configure electron-builder for macOS, Windows, Linux - Add macOS entitlements for code signing - Add Linux post-install/remove scripts - Enhance package.json with publishing scripts - Add artifact naming convention
4.8 KiB
4.8 KiB
Commit 7: Packaging and Distribution
Summary
Set up comprehensive packaging and distribution infrastructure including CI/CD workflows, multi-platform build configuration, icon generation, and macOS code signing support.
Changes
GitHub Actions Workflows
.github/workflows/ci.yml (New)
Continuous Integration workflow for PRs and main branch:
- lint: ESLint validation
- typecheck: TypeScript type checking
- test: Unit test execution
- build: Multi-platform build verification (macOS, Windows, Linux)
.github/workflows/release.yml (New)
Release workflow triggered by version tags:
- Matrix builds for all platforms
- Artifact collection and upload
- GitHub Release creation with auto-generated notes
- Pre-release detection for alpha/beta versions
Build Configuration
electron-builder.yml
Enhanced configuration:
- Artifact naming with version, OS, and arch
- ASAR packaging with native module unpacking
- macOS: Universal binary, notarization ready, extended info
- Windows: NSIS installer with customization
- Linux: AppImage, DEB, RPM targets with dependencies
New features:
artifactNametemplate for consistent namingasarUnpackfor native modules- macOS
extendInfofor privacy permissions - DMG background and icon configuration
- Linux desktop entry with keywords
package.json
New scripts:
icons: Generate icons from SVG sourceclean: Remove build artifactspackage:mac:universal: Build universal macOS binarypublish: Build and publish to GitHubpublish:mac/win/linux: Platform-specific publishingrelease: Full release workflow
Icon Generation
resources/icons/icon.svg (New)
Vector source icon:
- Gradient background (#6366f1 to #8b5cf6)
- White claw symbol with "X" accent
- 200px corner radius on 1024px canvas
scripts/generate-icons.sh (New)
Icon generation script:
- Generates PNG at multiple sizes (16-1024px)
- Creates macOS
.icnsvia iconutil - Creates Windows
.icovia ImageMagick - Creates Linux PNG set
resources/icons/README.md (New)
Documentation for icon requirements and generation.
macOS Signing
entitlements.mac.plist (New)
macOS entitlements for:
- Unsigned executable memory (V8)
- JIT compilation
- Library validation disable
- Network client access
- Child process spawning (Gateway)
- File access permissions
Linux Packaging
scripts/linux/after-install.sh (New)
Post-installation script:
- Update desktop database
- Update icon cache
- Create CLI symlink
scripts/linux/after-remove.sh (New)
Post-removal script:
- Remove CLI symlink
- Update databases
Technical Details
Build Matrix
| Platform | Target | Architecture | Format |
|---|---|---|---|
| macOS | dmg, zip | universal | Intel + Apple Silicon |
| Windows | nsis | x64, arm64 | .exe installer |
| Linux | AppImage | x64, arm64 | Portable |
| Linux | deb | x64, arm64 | Debian package |
| Linux | rpm | x64 | Red Hat package |
Artifact Naming Convention
${productName}-${version}-${os}-${arch}.${ext}
Example: ClawX-1.0.0-mac-universal.dmg
Code Signing (Optional)
macOS:
env:
CSC_LINK: ${{ secrets.MAC_CERTS }}
CSC_KEY_PASSWORD: ${{ secrets.MAC_CERTS_PASSWORD }}
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }}
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
Windows:
env:
CSC_LINK: ${{ secrets.WIN_CERTS }}
CSC_KEY_PASSWORD: ${{ secrets.WIN_CERTS_PASSWORD }}
Release Process
- Update version in
package.json - Commit and push changes
- Create and push version tag:
git tag v1.0.0 && git push --tags - GitHub Actions builds all platforms
- Artifacts uploaded to GitHub Release
- Users receive update notification via electron-updater
CI Pipeline
Push/PR to main
|
v
┌────────────────┐
│ lint │
│ typecheck │──> Parallel
│ test │
│ build │
└────────────────┘
|
v
All Pass?
|
┌───┴───┐
No Yes
| |
v v
Fail Merge OK
Release Pipeline
Push tag v*
|
v
┌─────────────────────────────┐
│ Build (Matrix) │
│ ┌─────┬──────┬──────────┐ │
│ │ mac │ win │ linux │ │
│ └─────┴──────┴──────────┘ │
└─────────────────────────────┘
|
v
Upload Artifacts
|
v
Create GitHub Release
|
v
Auto-update available
Version
v0.1.0-alpha (incremental)