Skip to content

[GH Actions] fprettify source code #494

[GH Actions] fprettify source code

[GH Actions] fprettify source code #494

name: Build and Publish Python wheels to PyPI and TestPyPI
on:
push:
paths: # Push events containing matching files
- "src/suews/**"
- "src/supy/**"
- "src/supy_driver/**"
- ".github/workflows/build-publish_to_pypi.yml"
- "test/**"
pull_request:
paths: # PR events containing matching files
- "src/suews/**"
- "src/supy/**"
- "src/supy_driver/**"
- ".github/workflows/build-publish_to_pypi.yml"
jobs:
build_wheels:
name: Build wheel for ${{ matrix.python }}-${{ matrix.buildplat[1] }} ${{ matrix.buildplat[2] }}
runs-on: ${{ matrix.buildplat[0] }}
strategy:
matrix:
buildplat:
- [ubuntu-latest, manylinux, x86_64]
- [macos-13, macosx, x86_64]
- [macos-latest, macosx, arm64]
- [windows-2019, win, AMD64]
python: ["cp310", "cp311", "cp312"]
fail-fast: false
env:
IS_32_BIT: ${{ matrix.buildplat[2] == 'x86' }}
WHEEL_NAME: ${{ matrix.python }}-${{ matrix.buildplat[1] }}-${{ matrix.buildplat[2] }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: 3.12
- name: Build wheels
uses: pypa/[email protected]
env:
CIBW_BUILD: ${{ matrix.python }}-${{ matrix.buildplat[1] }}*
CIBW_ARCHS: ${{ matrix.buildplat[2] }}
CIBW_ENVIRONMENT_PASS_LINUX: RUNNER_OS
CIBW_BEFORE_ALL_MACOS: "brew install gfortran && brew unlink gfortran && brew link gfortran"
CIBW_BEFORE_BUILD_WINDOWS: "pip install delvewheel" # Use delvewheel on windows
CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: "delvewheel repair -w {dest_dir} {wheel}"
CIBW_TEST_REQUIRES: pytest
CIBW_TEST_COMMAND_MACOS: "python -m pytest '{project}/test'"
CIBW_TEST_COMMAND_LINUX: "python -m pytest '{project}/test'"
CIBW_TEST_COMMAND_WINDOWS: "python -m pytest {project}\\test"
- name: Setup tmate session for debugging
if: failure()
uses: mxschmitt/action-tmate@v3
timeout-minutes: 15
- name: upload wheels
uses: actions/upload-artifact@v4
with:
name: ${{ env.WHEEL_NAME }}
path: ./wheelhouse/*.whl
deploy:
name: Publish to (Test)PyPI
# IMPORTANT: this permission is mandatory for trusted publishing
runs-on: ubuntu-latest
needs:
- build_wheels
# permissions:
# id-token: write
steps:
- name: Download all the built wheels
uses: actions/download-artifact@v4
with:
path: dist/
merge-multiple: true
- name: Setup tmate session for debugging
if: failure()
uses: mxschmitt/action-tmate@v3
timeout-minutes: 15
- name: Publish distribution to Test PyPI
uses: pypa/gh-action-pypi-publish@release/v1.8
with:
packages-dir: dist/
verbose: true
skip-existing: true
password: ${{ secrets.TEST_PYPI_API_TOKEN }}
repository-url: https://test.pypi.org/legacy/
- name: Publish distribution to PyPI
if: startsWith(github.ref, 'refs/tags')
uses: pypa/gh-action-pypi-publish@release/v1.8
with:
packages-dir: dist/
verbose: true
skip-existing: true
password: ${{ secrets.PYPI_API_TOKEN }}