Skip to content

[envpool] Align Windows CI with test and release workflows #327

[envpool] Align Windows CI with test and release workflows

[envpool] Align Windows CI with test and release workflows #327

Workflow file for this run

name: Release PyPI Wheel
on:
pull_request:
push:
branches:
- main
tags:
- v*
jobs:
release-macos:
runs-on: macos-14
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
python-version: ["3.11", "3.12", "3.13"]
env:
HOMEBREW_NO_AUTO_UPDATE: "1"
steps:
- name: Cancel previous run
uses: styfle/cancel-workflow-action@0.11.0
with:
access_token: ${{ github.token }}
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: actions/setup-go@v5
with:
go-version: "1.22"
- uses: actions/setup-java@v4
with:
distribution: temurin
java-version: "17"
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install macOS dependencies
run: |
brew install swig qt@5
echo "BAZEL_RULES_QT_DIR=$(brew --prefix qt@5)" >> "$GITHUB_ENV"
- name: Install bazelisk
run: |
go install github.com/bazelbuild/bazelisk@latest
echo "$HOME/go/bin" >> "$GITHUB_PATH"
- name: Build
run: |
rm -rf dist
make RELEASE_PYTHON=${{ matrix.python-version }} bazel-release
pip3 install dist/*.whl --force-reinstall
- name: Test
run: |
make release-test
- name: Upload artifact
uses: actions/upload-artifact@v7
with:
name: wheel-macos-${{ matrix.python-version }}
path: dist/*.whl
if-no-files-found: error
release-linux:
runs-on: ubuntu-latest
container: quay.io/pypa/manylinux_2_28_x86_64
strategy:
fail-fast: false
matrix:
python-version: ["3.11", "3.12", "3.13"]
steps:
- name: Cancel previous run
uses: styfle/cancel-workflow-action@0.11.0
with:
access_token: ${{ github.token }}
- uses: actions/checkout@v3
- name: Install build dependencies
run: |
dnf install -y git curl wget zsh gcc gcc-c++ make tmux golang java-17-openjdk-devel qt5-qtbase-devel qt5-qtdeclarative-devel
dnf clean all
ln -sf "$(qmake-qt5 -query QT_INSTALL_HEADERS)" /usr/include/qt
go install github.com/bazelbuild/bazelisk@latest
ln -sf /root/go/bin/bazelisk /usr/local/bin/bazelisk
ln -sf /root/go/bin/bazelisk /usr/local/bin/bazel
- name: Set up Python ${{ matrix.python-version }}
shell: bash
run: |
case "${{ matrix.python-version }}" in
3.11) PYBIN=/opt/python/cp311-cp311/bin ;;
3.12) PYBIN=/opt/python/cp312-cp312/bin ;;
3.13) PYBIN=/opt/python/cp313-cp313/bin ;;
*) echo "unsupported python version: ${{ matrix.python-version }}" >&2; exit 1 ;;
esac
echo "$PYBIN" >> "$GITHUB_PATH"
"$PYBIN/python3" --version
- name: Build
run: |
make pypi-wheel
pip3 install dist/*.whl --force-reinstall
- name: Test
run: |
make release-test
- name: Upload artifact
uses: actions/upload-artifact@v7
with:
name: wheel-${{ matrix.python-version }}
path: wheelhouse/
if-no-files-found: error
release-windows:
runs-on: windows-2022
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
python-version: ["3.11", "3.12", "3.13"]
env:
BAZEL_SH: C:/Program Files/Git/usr/bin/bash.exe
MSYS2_ARG_CONV_EXCL: "*"
MSYS_NO_PATHCONV: "1"
USE_BAZEL_VERSION: "8.6.0"
steps:
- name: Cancel previous run
uses: styfle/cancel-workflow-action@0.11.0
with:
access_token: ${{ github.token }}
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: actions/setup-go@v5
with:
go-version: "1.22"
- uses: ilammy/msvc-dev-cmd@v1
- uses: actions/setup-java@v4
with:
distribution: temurin
java-version: "17"
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install Windows dependencies
shell: pwsh
run: |
choco install -y make ninja strawberryperl swig
- name: Install Qt 5
uses: jurplel/install-qt-action@v4
with:
version: "5.15.2"
arch: "win64_msvc2019_64"
set-env: "true"
- name: Export Qt location
shell: pwsh
run: |
Add-Content -Path $env:GITHUB_ENV -Value "BAZEL_RULES_QT_DIR=$env:QT_ROOT_DIR"
Add-Content -Path $env:GITHUB_PATH -Value "C:\Program Files\Git\usr\bin"
- name: Install bazelisk
shell: pwsh
run: |
go install github.com/bazelbuild/bazelisk@latest
Add-Content -Path $env:GITHUB_PATH -Value (Join-Path $HOME "go/bin")
- name: Build
shell: bash
run: |
rm -rf dist
make RELEASE_PYTHON=${{ matrix.python-version }} bazel-release
pip3 install dist/*.whl --force-reinstall
- name: Test
shell: bash
run: |
make release-test
- name: Upload artifact
uses: actions/upload-artifact@v7
with:
name: wheel-windows-${{ matrix.python-version }}
path: dist/*.whl
if-no-files-found: error
publish:
if: startsWith(github.ref, 'refs/tags')
runs-on: ubuntu-latest
needs: [release-linux, release-macos, release-windows]
steps:
- uses: actions/download-artifact@v8
with:
pattern: wheel-*
path: artifact
merge-multiple: true
- name: Move files so the next action can find them
run: |
mkdir dist && mv artifact/* dist/
ls dist/
- name: Publish distribution to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
password: ${{ secrets.PYPI_API_TOKEN }}