From 40b9a8ec79b5e84fe1a7bb309bd9328ea2afced7 Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 3 Sep 2025 23:17:33 +0300 Subject: [PATCH] Update CI/CD README for multi-platform support Expanded documentation to cover Windows, Linux, and macOS build and release processes. Updated artifact descriptions, workflow configuration, and instructions for adding new platforms. Clarified use of cx_Freeze, platform-specific packaging, and multi-architecture support. --- .github/CI_CD_README.md | 57 ++++++++++++++++++++++++++++------------- 1 file changed, 39 insertions(+), 18 deletions(-) diff --git a/.github/CI_CD_README.md b/.github/CI_CD_README.md index b2c418b..0373f80 100644 --- a/.github/CI_CD_README.md +++ b/.github/CI_CD_README.md @@ -1,6 +1,6 @@ # YTSage CI/CD Workflow -This repository uses GitHub Actions to automatically build and release YTSage for Windows when version tags are pushed. +This repository uses GitHub Actions to automatically build and release YTSage for multiple platforms when version tags are pushed. ## How It Works @@ -8,9 +8,9 @@ This repository uses GitHub Actions to automatically build and release YTSage fo The workflow is triggered when you push a git tag that starts with `v` (e.g., `v4.8.0`, `v4.9.1`). ### Build Process -1. **Setup**: Uses Python 3.12.10 on Windows -2. **Builds**: Creates both Standard and FFmpeg versions -3. **Packages**: Generates ZIP portable versions only (no MSI) +1. **Setup**: Uses Python 3.13.6 on all platforms +2. **Builds**: Creates platform-specific executables using cx_Freeze +3. **Packages**: Generates native package formats for each platform 4. **Release**: Creates a draft GitHub release with all artifacts ## Usage @@ -36,16 +36,31 @@ The workflow is triggered when you push a git tag that starts with `v` (e.g., `v ### Release Artifacts -The workflow creates the following files: +The workflow creates the following files based on the platform: -- `YTSage-v.zip` - Standard portable version -- `YTSage-v-ffmpeg.zip` - FFmpeg bundle portable +#### Windows +- `YTSage-v{version}-portable.zip` - Standard portable version +- `YTSage-v{version}-ffmpeg-portable.zip` - FFmpeg bundle portable + +#### Linux +- `YTSage-v{version}-{arch}.AppImage` - AppImage portable +- `YTSage-v{version}-{arch}.rpm` - RPM package +- `YTSage-v{version}-{arch}.deb` - Debian package + +#### macOS +- `YTSage-v{version}-{arch}.app.zip` - Zipped application bundle +- `YTSage-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 (ZIPs) +- Names all artifacts consistently across platforms ### Caching - Python dependencies are cached to speed up builds @@ -79,27 +94,33 @@ If the workflow fails: ## Configuration ### Modifying the Workflow -The workflow file is located at `.github/workflows/build-windows.yml`. +The workflow files are located in `.github/workflows/`: +- `build-windows.yml` - Windows builds +- `build-linux.yml` - Linux builds +- `build-macos.yml` - macOS builds -Key configuration options: -- `PYTHON_VERSION`: Python version to use +### 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 (e.g., .dmg for macOS, .deb for Linux): -1. Add separate jobs in `.github/workflows/build-windows.yml` (or a new workflow) targeting the OS (macos-latest, ubuntu-latest). -2. Build the executable with cx_Freeze or PyInstaller for that platform. -3. Package the build output (e.g., create DMG on macOS, DEB on Ubuntu) using platform tools. -4. Upload the artifacts and include them in the release. +To add new platform packages: +1. Create or modify workflow files in `.github/workflows/` +2. Target the appropriate OS runner (windows-latest, ubuntu-latest, macos-latest) +3. Use cx_Freeze or PyInstaller for packaging +4. Package the build output in platform-native formats +5. Upload the artifacts and include them in the release ## Notes -- The workflow only runs on Windows - All builds use cx_Freeze for packaging -- FFmpeg binaries are expected in standard locations +- 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