diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..fe9c431 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,117 @@ +name: Release + +on: + push: + branches: + - main + +jobs: + # 发布到 PyPI + publish-pypi: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Install uv + uses: astral-sh/setup-uv@v3 + with: + version: "latest" + + - name: Build + run: uv build + + - name: Publish to PyPI + run: uv publish --token ${{ secrets.PYPI_TOKEN }} + + # 构建 Windows 可执行文件 + build-windows: + needs: publish-pypi + runs-on: windows-latest + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-python@v5 + with: + python-version: '3.12' + + - name: Install dependencies + run: pip install nuitka py7zr tqdm zstandard + + - name: Build executable + run: | + python -m nuitka ` + --standalone --onefile ` + --output-filename=sbackup.exe ` + --include-package=sbackup ` + --include-data-dir=sbackup/locales=sbackup/locales ` + --include-package=py7zr ` + --include-package=tqdm ` + --include-package=zstandard ` + main.py + + - name: Upload to Release + uses: softprops/action-gh-release@v1 + with: + files: sbackup.exe + + # 构建 macOS 可执行文件 + build-macos: + needs: publish-pypi + runs-on: macos-latest + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-python@v5 + with: + python-version: '3.12' + + - name: Install dependencies + run: pip install nuitka py7zr tqdm zstandard + + - name: Build executable + run: | + python -m nuitka \ + --standalone --onefile \ + --output-filename=sbackup-macos \ + --include-package=sbackup \ + --include-data-dir=sbackup/locales=sbackup/locales \ + --include-package=py7zr \ + --include-package=tqdm \ + --include-package=zstandard \ + main.py + + - name: Upload to Release + uses: softprops/action-gh-release@v1 + with: + files: sbackup-macos + + # 构建 Linux 可执行文件 + build-linux: + needs: publish-pypi + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-python@v5 + with: + python-version: '3.12' + + - name: Install dependencies + run: pip install nuitka py7zr tqdm zstandard + + - name: Build executable + run: | + python -m nuitka \ + --standalone --onefile \ + --output-filename=sbackup-linux \ + --include-package=sbackup \ + --include-data-dir=sbackup/locales=sbackup/locales \ + --include-package=py7zr \ + --include-package=tqdm \ + --include-package=zstandard \ + main.py + + - name: Upload to Release + uses: softprops/action-gh-release@v1 + with: + files: sbackup-linux