fe5638393a
Update version references from 4.9.0 to 4.9.1 in documentation, __init__.py, AboutDialog, and main application window to prepare for new release.
3.8 KiB
3.8 KiB
YTSage CI/CD Workflow
This repository uses GitHub Actions to automatically build and release YTSage for multiple platforms when version tags are pushed.
How It Works
Trigger
The workflow is triggered when you push a git tag that starts with v (e.g., v4.9.1, v4.9.1).
Build Process
- Setup: Uses Python 3.13.6 on all platforms
- Builds: Creates platform-specific executables using cx_Freeze
- Packages: Generates native package formats for each platform
- Release: Creates a draft GitHub release with all artifacts
Usage
Creating a Release
-
Update version in your source code if needed
-
Commit your changes:
git add . git commit -m "Release v4.9.1" -
Create and push a tag:
git tag v4.9.1 git push origin v4.9.1 -
Watch the action: Go to Actions tab in GitHub to monitor progress
-
Review draft release: Once complete, check the Releases section for the draft
Release Artifacts
The workflow creates the following files based on the platform:
Windows
YTSage-v{version}-portable.zip- Standard portable versionYTSage-v{version}-ffmpeg-portable.zip- FFmpeg bundle portable
Linux
YTSage-v{version}-{arch}.AppImage- AppImage portableYTSage-v{version}-{arch}.rpm- RPM packageYTSage-v{version}-{arch}.deb- Debian package
macOS
YTSage-v{version}-{arch}.app.zip- Zipped application bundleYTSage-v{version}-{arch}.dmg- Disk image installer
Workflow Features
Multi-Platform Support
- Windows: Uses PowerShell scripts with cx_Freeze
- Linux: Uses Bash scripts with cx_Freeze, creates AppImage, RPM, and DEB
- macOS: Matrix build for both Intel (x64) and Apple Silicon (arm64)
Automatic Version Detection
- Extracts version from git tag (removes 'v' prefix)
- Names all artifacts consistently across platforms
Caching
- Python dependencies are cached to speed up builds
- Virtual environment is cached between runs
Error Handling
- Comprehensive error checking at each step
- Detailed logging for troubleshooting
- Artifact verification before upload
Security
- Uses official GitHub Actions
- No external dependencies
- Secure token handling
Manual Intervention
After Workflow Completion
- Review the draft release in GitHub
- Test the artifacts if needed
- Edit release notes if desired
- Publish the release when ready
Troubleshooting
If the workflow fails:
- Check the Actions logs for error details
- Ensure all required files are present
- Verify the tag format is correct (
v*) - Check that dependencies are properly listed
Configuration
Modifying the Workflow
The workflow files are located in .github/workflows/:
build-windows.yml- Windows buildsbuild-linux.yml- Linux buildsbuild-macos.yml- macOS builds
Key Configuration Options
PYTHON_VERSION: Python version (currently 3.13.6)- Artifact naming patterns
- Release note templates
- Build optimization settings
Adding New Build Types
To add new platform packages:
- Create or modify workflow files in
.github/workflows/ - Target the appropriate OS runner (windows-latest, ubuntu-latest, macos-latest)
- Use cx_Freeze or PyInstaller for packaging
- Package the build output in platform-native formats
- Upload the artifacts and include them in the release
Notes
- All builds use cx_Freeze for packaging
- FFmpeg binaries are bundled where needed
- Screenshots are removed from builds to reduce size
- Draft releases allow for review before publication
- macOS builds run on both Intel and Apple Silicon runners
Example Tag Commands
# For a new release
git tag v4.8.1
git push origin v4.8.1
# For a patch release
git tag v4.8.1
git push origin v4.8.1
# To delete a tag (if needed)
git tag -d v4.8.1
git push origin :refs/tags/v4.8.1