Files
docutranslate/.github/workflows/build-macos-x86.yml
2025-08-25 12:33:20 +08:00

108 lines
3.9 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
name: Build macOS X86 Application
on:
# 允许手动触发工作流
workflow_dispatch:
# 当在 GitHub 上创建新的 release 时自动触发
release:
types: [created]
jobs:
build-macos:
# 步骤 1: 指定运行环境为 macOS 14 (Intel)
# 使用 xlarge runner 确保是 Intel 架构
runs-on: macos-14
steps:
# 步骤 2: 检出你的代码库
- name: Checkout repository
uses: actions/checkout@v4
# 步骤 3: 设置 Python 环境
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
# 步骤 4: 安装 uv (一个快速的 Python 包安装器)
- name: Install uv
run: |
curl -LsSf https://astral.sh/uv/install.sh | sh
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
# 步骤 5: 使用 uv 安装项目依赖
- name: Install dependencies with uv
run: uv sync
# 步骤 6: 安装 UPX (用于压缩可执行文件)
- name: Install UPX
run: |
brew install upx
# 步骤 7: 运行 PyInstaller 构建 x86_64 应用
- name: Build the x86_64 application with PyInstaller
run: |
uv run pyinstaller lite_mac_x86_64.spec --noconfirm
# 步骤 8: 从代码中获取应用版本号
- name: Get application version
id: get_version
run: |
VERSION=$(python -c "import docutranslate; print(docutranslate.__version__)")
echo "VERSION=$VERSION" >> $GITHUB_ENV
echo "version=$VERSION" >> $GITHUB_OUTPUT
# 步骤 9: 创建标准的 macOS .app 包结构
- name: Create macOS app bundle structure
run: |
# 创建必要的目录
mkdir -p dist/DocuTranslate.app/Contents/MacOS
mkdir -p dist/DocuTranslate.app/Contents/Resources
# 移动可执行文件到 .app 包中(注意文件名包含 -intel
mv dist/DocuTranslate-*-mac-intel dist/DocuTranslate.app/Contents/MacOS/DocuTranslate
chmod +x dist/DocuTranslate.app/Contents/MacOS/DocuTranslate
# 复制应用图标
cp DocuTranslate.icns dist/DocuTranslate.app/Contents/Resources/
# 动态创建 Info.plist 文件,明确指定 x86_64 架构
cat > dist/DocuTranslate.app/Contents/Info.plist << EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleExecutable</key>
<string>DocuTranslate</string>
<key>CFBundleIconFile</key>
<string>DocuTranslate.icns</string>
<key>CFBundleIdentifier</key>
<string>com.yourcompany.DocuTranslate</string>
<key>CFBundleName</key>
<string>DocuTranslate</string>
<key>CFBundleVersion</key>
<string>${{ github.run_number }}</string>
<key>CFBundleShortVersionString</key>
<string>${{ env.VERSION }}</string>
<key>LSArchitecturePriority</key>
<array>
<string>x86_64</string>
</array>
<key>NSHighResolutionCapable</key>
<true/>
</dict>
</plist>
EOF
shell: bash
# 步骤 10: 将 .app 文件打包成 .dmg 磁盘映像
- name: Create DMG Disk Image with version
run: |
hdiutil create -volname "DocuTranslate Installer" -srcfolder dist/DocuTranslate.app -ov -format UDZO "dist/DocuTranslate-${{ env.VERSION }}-macOS-x86_64.dmg"
# 步骤 11: 上传 .dmg 文件作为构建产物
- name: Upload macOS DMG
uses: actions/upload-artifact@v4
with:
name: DocuTranslate-macOS-x86_64
path: dist/DocuTranslate-${{ env.VERSION }}-macOS-x86_64.dmg