name: Package exe with PyInstaller - Windows on: push: branches: [main, dev] jobs: build: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 # Wine Python (not Linux) runs PyInstaller; altgraph needs pkg_resources — reinstall setuptools after all deps. - name: Prepare requirements for Wine (setuptools last) run: | set -euo pipefail cp pyinstaller/requirements.txt pyinstaller/requirements-wine.txt { echo "" echo "# CI: setuptools last so pkg_resources exists for PyInstaller/altgraph in Wine" echo "setuptools==70.0.0" } >> pyinstaller/requirements-wine.txt - name: PyInstaller Windows Build uses: JackMcKew/pyinstaller-action-windows@main with: path: pyinstaller requirements: requirements-wine.txt - name: Upload PyInstaller Binary to Workflow as Artifact if: success() uses: actions/upload-artifact@v4 with: name: maigret_standalone_win32 path: pyinstaller/dist/windows - name: Download PyInstaller Binary if: success() uses: actions/download-artifact@v4 with: name: maigret_standalone_win32 - name: Create New Release and Upload PyInstaller Binary to Release if: success() uses: ncipollo/release-action@v1.14.0 id: create_release with: allowUpdates: true draft: false prerelease: false artifactErrorsFailBuild: true makeLatest: true replacesArtifacts: true artifacts: maigret_standalone.exe name: Development Windows Release [${{ github.ref_name }}] tag: ${{ github.ref_name }} body: | This is a development release built from the **${{ github.ref_name }}** branch. Take into account that `dev` releases may be unstable. Please, use [the development release](https://github.com/soxoj/maigret/releases/tag/main) build from the **main** branch. Instructions: - Download the attached file `maigret_standalone.exe` to get the Windows executable. - Video guide on how to run it: https://youtu.be/qIgwTZOmMmM - For detailed documentation, visit: https://maigret.readthedocs.io/en/latest/ env: GITHUB_TOKEN: ${{ github.token }}