98 lines
2.4 KiB
YAML
98 lines
2.4 KiB
YAML
name: 🧀 打包所有平台
|
||
|
||
on:
|
||
# 手动触发
|
||
workflow_dispatch:
|
||
# 推送 tag 时触发
|
||
push:
|
||
tags:
|
||
- 'v*'
|
||
|
||
jobs:
|
||
build:
|
||
strategy:
|
||
matrix:
|
||
include:
|
||
# Windows 64位
|
||
- os: windows-latest
|
||
platform: win64
|
||
artifact_name: CheeseCloudTools-Windows-x64
|
||
|
||
# Windows 32位 (使用 32位 Python)
|
||
# - os: windows-latest
|
||
# platform: win32
|
||
# artifact_name: CheeseCloudTools-Windows-x86
|
||
# python_arch: x86
|
||
|
||
# macOS Intel
|
||
- os: macos-13
|
||
platform: mac_x64
|
||
artifact_name: CheeseCloudTools-macOS-Intel
|
||
|
||
# macOS Apple Silicon
|
||
- os: macos-latest
|
||
platform: mac_arm64
|
||
artifact_name: CheeseCloudTools-macOS-AppleSilicon
|
||
|
||
# Linux 64位
|
||
- os: ubuntu-latest
|
||
platform: linux64
|
||
artifact_name: CheeseCloudTools-Linux-x64
|
||
|
||
runs-on: ${{ matrix.os }}
|
||
|
||
steps:
|
||
- name: 📥 检出代码
|
||
uses: actions/checkout@v4
|
||
|
||
- name: 🐍 设置 Python
|
||
uses: actions/setup-python@v5
|
||
with:
|
||
python-version: '3.11'
|
||
architecture: ${{ matrix.python_arch || 'x64' }}
|
||
|
||
- name: 📦 安装依赖
|
||
run: |
|
||
python -m pip install --upgrade pip
|
||
pip install -r requirements.txt
|
||
pip install pyinstaller
|
||
|
||
- name: 🔨 执行打包
|
||
run: python build_app.py --platform ${{ matrix.platform }}
|
||
|
||
- name: 📤 上传构建产物
|
||
uses: actions/upload-artifact@v4
|
||
with:
|
||
name: ${{ matrix.artifact_name }}
|
||
path: dist/${{ matrix.platform }}/
|
||
retention-days: 30
|
||
|
||
# 创建 Release(仅在推送 tag 时)
|
||
release:
|
||
needs: build
|
||
runs-on: ubuntu-latest
|
||
if: startsWith(github.ref, 'refs/tags/')
|
||
|
||
steps:
|
||
- name: 📥 下载所有构建产物
|
||
uses: actions/download-artifact@v4
|
||
with:
|
||
path: artifacts/
|
||
|
||
- name: 📦 打包为 ZIP
|
||
run: |
|
||
cd artifacts
|
||
for dir in */; do
|
||
zip -r "${dir%/}.zip" "$dir"
|
||
done
|
||
|
||
- name: 🚀 创建 Release
|
||
uses: softprops/action-gh-release@v1
|
||
with:
|
||
files: artifacts/*.zip
|
||
draft: false
|
||
prerelease: false
|
||
env:
|
||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||
|