- Add cross-platform build workflow for macOS, Windows, Linux - Add CI workflow with Rust code quality checks - Add manual release workflow with automatic asset publishing - Add dependency management workflow with security monitoring - Update README with build status badges - Remove unused Prettier/ESLint configurations - Focus on Rust code quality and build verification
4.5 KiB
GitHub Actions Workflows
This directory contains GitHub Actions workflows for automated CI/CD processes.
Workflows Overview
🔨 build.yml
- Build Desktop App
Triggers: Push to main/develop, Pull Requests, Releases
Purpose: Builds the desktop application for all supported platforms (macOS, Windows, Linux)
Features:
- Cross-platform builds (macOS Universal, Windows x64, Linux x64)
- Automatic artifact uploads
- Release asset publishing
- Caching for faster builds
Artifacts:
- macOS: DMG installer and .app bundle
- Windows: MSI and NSIS installers
- Linux: DEB package and AppImage
🧪 ci.yml
- Continuous Integration
Triggers: Push to main/develop, Pull Requests
Purpose: Code quality checks and testing
Features:
- Frontend build verification
- Rust formatting and linting (rustfmt, clippy)
- Rust unit tests
- Security audits for both frontend and backend dependencies
🚀 release.yml
- Manual Release
Triggers: Manual workflow dispatch
Purpose: Create tagged releases with built applications
Features:
- Manual version input
- Pre-release option
- Automatic release notes generation
- Cross-platform builds and uploads
- Comprehensive installation instructions
Usage:
- Go to Actions tab in GitHub
- Select "Release" workflow
- Click "Run workflow"
- Enter version (e.g., v1.0.0)
- Choose if it's a pre-release
- Click "Run workflow"
🔄 dependencies.yml
- Dependency Management
Triggers: Weekly schedule (Mondays 9 AM UTC), Manual dispatch
Purpose: Automated dependency updates and security monitoring
Features:
- Weekly dependency updates
- Automatic PR creation for updates
- Security vulnerability detection
- Automatic issue creation for security alerts
Setup Requirements
Repository Secrets
No additional secrets are required beyond the default GITHUB_TOKEN
.
Branch Protection (Recommended)
Configure branch protection rules for main
branch:
- Require status checks to pass before merging
- Require branches to be up to date before merging
- Include status checks:
lint-and-test
,security-audit
Release Process
Automated (Recommended)
- Merge changes to
main
branch - Use the manual release workflow to create a new release
- The workflow will automatically build and upload all platform binaries
Manual
- Create a new tag:
git tag v1.0.0
- Push the tag:
git push origin v1.0.0
- Create a release on GitHub
- The build workflow will automatically attach binaries
Platform-Specific Notes
macOS
- Builds universal binaries (Intel + Apple Silicon)
- Requires macOS 13.0 or later
- DMG installer includes code signing (if certificates are configured)
Windows
- Builds for x64 architecture
- Provides both MSI and NSIS installers
- Compatible with Windows 10 and later
Linux
- Builds for x64 architecture
- Provides DEB package for Debian/Ubuntu
- Provides AppImage for universal Linux compatibility
- Requires WebKit2GTK and other system dependencies
Troubleshooting
Build Failures
- Check the specific platform logs in the Actions tab
- Ensure all dependencies are properly declared
- Verify Tauri configuration is correct
Security Audit Failures
- Review the security report in the workflow logs
- Update vulnerable dependencies
- Consider using
pnpm audit --fix
for frontend issues - Use
cargo update
for Rust dependency updates
Cache Issues
If builds are failing due to cache corruption:
- Go to Actions tab
- Click on "Caches" in the sidebar
- Delete relevant caches
- Re-run the workflow
Customization
Adding New Platforms
To add support for additional platforms, modify the matrix
section in build.yml
:
matrix:
include:
- platform: 'macos-latest'
args: '--target aarch64-apple-darwin'
target: 'aarch64-apple-darwin'
Modifying Build Steps
Each workflow can be customized by:
- Adding new steps
- Modifying existing commands
- Adding environment variables
- Configuring different Node.js/Rust versions
Adding Code Quality Tools (Optional)
If you want to add code quality tools in the future:
- ESLint: Add ESLint configuration and dependencies for JavaScript/TypeScript linting
- Prettier: Add Prettier for consistent code formatting
- TypeScript strict checking: Enable stricter TypeScript rules and type checking
Changing Schedule
Modify the cron
expression in dependencies.yml
to change the update frequency:
schedule:
- cron: '0 9 * * 1' # Every Monday at 9 AM UTC