name: Build Executables on: push: branches: [ "main", "master" ] # 只在主分支推送时触发 tags: - 'v*' # 添加标签触发条件,匹配 v1.0.0 这样的标签 jobs: build-windows: runs-on: windows-latest steps: - uses: actions/checkout@v2 - name: Set up Python uses: actions/setup-python@v2 with: python-version: '3.x' - name: Install dependencies run: | python -m pip install --upgrade pip pip install pyinstaller pip install -r requirements.txt - name: Build EXE run: | pyinstaller CursorKeepAlive.spec - name: Upload Windows artifact uses: actions/upload-artifact@v4 with: name: CursorPro-Windows path: dist/CursorPro.exe build-macos-arm64: runs-on: macos-latest steps: - uses: actions/checkout@v2 - name: Set up Python uses: actions/setup-python@v2 with: python-version: '3.x' - name: Install dependencies run: | python -m pip install --upgrade pip pip install pyinstaller pip install -r requirements.txt - name: Build MacOS ARM executable run: | pyinstaller CursorKeepAlive.spec - name: Upload MacOS ARM artifact uses: actions/upload-artifact@v4 with: name: CursorPro-MacOS-ARM64 path: dist/CursorPro build-linux: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Set up Python uses: actions/setup-python@v2 with: python-version: '3.x' - name: Install dependencies run: | python -m pip install --upgrade pip pip install pyinstaller pip install -r requirements.txt - name: Build Linux executable run: | pyinstaller CursorKeepAlive.spec - name: Upload Linux artifact uses: actions/upload-artifact@v4 with: name: CursorPro-Linux path: dist/CursorPro create-release: needs: [build-windows, build-macos-arm64, build-linux] # 等待其他构建任务完成 runs-on: ubuntu-latest # 只在推送标签时创建发布 if: startsWith(github.ref, 'refs/tags/') steps: - name: Create Release id: create_release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ github.ref }} release_name: Release ${{ github.ref }} draft: false prerelease: false - name: Download all artifacts uses: actions/download-artifact@v4 - name: Upload Release Assets uses: softprops/action-gh-release@v1 with: files: | CursorPro-Windows/CursorPro.exe CursorPro-MacOS-ARM64/CursorPro CursorPro-Linux/CursorPro env: GITHUB_TOKEN: ${{ secrets.token }}