CursorTokenLogin/.github/workflows/build.yml
2026-06-16 16:30:36 +08:00

190 lines
5.4 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 Multi-Platform Release
on:
push:
tags:
- 'v*' # 当推送形如 v1.0.0 的 tag 时触发构建
workflow_dispatch: # 支持手动触发构建
jobs:
# 1. 编译 Windows 端 (.exe)
build-windows:
runs-on: windows-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
cache: 'pip'
- name: Install Dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
pip install pyinstaller
- name: Build EXE
run: |
python -m PyInstaller build.spec --clean
- name: Upload Windows Artifact
uses: actions/upload-artifact@v4
with:
name: CursorTokenLogin-Windows
path: dist/CursorTokenLogin.exe
# 2. 编译 macOS 端 (.app)
build-macos:
runs-on: macos-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
cache: 'pip'
- name: Install Dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
pip install pyinstaller
- name: Build App Bundle
run: |
python -m PyInstaller build.spec --clean
- name: Zip macOS App
run: |
# macOS app 实质上是文件夹,发布前需要打包成 zip
cd dist
zip -r CursorTokenLogin-macOS.zip CursorTokenLogin.app
- name: Upload macOS Artifact
uses: actions/upload-artifact@v4
with:
name: CursorTokenLogin-macOS
path: dist/CursorTokenLogin-macOS.zip
# 3. 编译 Linux 端并打包为 .deb 和 .rpm
build-linux:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
cache: 'pip'
- name: Install Dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
pip install pyinstaller
# 安装打包 deb 和 rpm 所需的系统工具
sudo apt-get update
sudo apt-get install -y dpkg rpm alien
- name: Build Linux Binary
run: |
python -m PyInstaller build.spec --clean
- name: Pack DEB Package
run: |
# 创建 deb 包目录结构
mkdir -p deb-package/DEBIAN
mkdir -p deb-package/usr/bin
mkdir -p deb-package/usr/share/applications
mkdir -p deb-package/usr/share/pixmaps
# 拷贝编译好的二进制文件
cp dist/CursorTokenLogin deb-package/usr/bin/cursortokenlogin
chmod +x deb-package/usr/bin/cursortokenlogin
# 拷贝图标
cp logo.png deb-package/usr/share/pixmaps/cursortokenlogin.png
# 创建控制文件
cat <<EOF > deb-package/DEBIAN/control
Package: cursortokenlogin
Version: 1.0.0
Section: utils
Priority: optional
Architecture: amd64
Maintainer: Yunzer
Description: Cursor Token Login Helper
EOF
# 创建桌面启动快捷方式
cat <<EOF > deb-package/usr/share/applications/cursortokenlogin.desktop
[Desktop Entry]
Name=CursorTokenLogin
Comment=Cursor Token Login Helper
Exec=/usr/bin/cursortokenlogin
Icon=cursortokenlogin
Terminal=false
Type=Application
Categories=Utility;Development;
EOF
# 构建 deb
dpkg-deb --build deb-package cursortokenlogin.deb
- name: Pack RPM Package (Convert from DEB using alien)
run: |
# 使用 alien 工具将 deb 快速转换为 rpm避免编写复杂的 spec 构建脚本
sudo alien --to-rpm --scripts cursortokenlogin.deb
# 重命名生成的 rpm 文件方便识别
mv *.rpm cursortokenlogin.rpm
- name: Upload Linux Artifacts
uses: actions/upload-artifact@v4
with:
name: CursorTokenLogin-Linux
path: |
cursortokenlogin.deb
cursortokenlogin.rpm
# 4. 自动创建 GitHub Release 并上传 4 个包
create-release:
needs: [build-windows, build-macos, build-linux]
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/v') # 仅在推送 tag 时执行 Release 发布
steps:
- name: Download Windows Artifact
uses: actions/download-artifact@v4
with:
name: CursorTokenLogin-Windows
path: ./release-files
- name: Download macOS Artifact
uses: actions/download-artifact@v4
with:
name: CursorTokenLogin-macOS
path: ./release-files
- name: Download Linux Artifacts
uses: actions/download-artifact@v4
with:
name: CursorTokenLogin-Linux
path: ./release-files
- name: Create Release
uses: softprops/action-gh-release@v2
with:
files: |
release-files/CursorTokenLogin.exe
release-files/CursorTokenLogin-macOS.zip
release-files/cursortokenlogin.deb
release-files/cursortokenlogin.rpm
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}