Build Python Packages #369
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build Python Packages | |
on: | |
workflow_dispatch: | |
inputs: | |
use_qemu: | |
description: 'Use qemu to build linux aarch64, ppc64le & s390x' | |
required: false | |
default: false | |
workflow_run: | |
workflows: ["HELICS Version Update"] | |
branches: [main] | |
types: | |
- completed | |
release: | |
types: published | |
push: | |
# Run this for a push only if one of the Python packages has changes | |
paths: | |
- '*-pip/**' | |
- '.github/workflows/pythonpackage.yml' | |
# NOTE: These jobs *must* use actions/checkout@v1 for full history, | |
# or run git fetch --prune --unshallow for versioning to work | |
jobs: | |
build-helics_apps: | |
# No container needed, since the package is version agnostic | |
name: Build ${{ matrix.build }}${{ matrix.arch }} wheels on ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- os: ubuntu-20.04 | |
arch: "x86_64" | |
build: "manylinux_" | |
artifact_suffix: "manylinux_x86_64" | |
use_qemu: false | |
- os: windows-2019 | |
arch: "AMD64" | |
build: "" | |
artifact_suffix: "windows_x86_64" | |
use_qemu: false | |
- os: windows-2019 | |
arch: "x86" | |
build: "" | |
artifact_suffix: "windows_x86" | |
use_qemu: false | |
- os: macos-14 | |
arch: "universal2" | |
build: "" | |
artifact_suffix: "macos" | |
use_qemu: false | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 # ensure history is present for automatic versioning | |
- name: Set up QEMU | |
uses: docker/[email protected] | |
if: runner.os == 'Linux' && matrix.use_qemu | |
- name: Build wheels | |
uses: pypa/[email protected] | |
with: | |
package-dir: helics_apps-pip | |
env: | |
CIBW_ARCHS: "${{ matrix.arch }}" | |
CIBW_ARCHS_MACOS: "universal2" | |
CIBW_BUILD: "cp39-${{ matrix.build }}*" | |
CIBW_BUILD_VERBOSITY: 3 | |
CIBW_ENVIRONMENT: "CIBW_ARTIFACT_TYPE=${{ matrix.artifact_suffix }}" | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: apps-python-dist-${{matrix.artifact_suffix}} | |
path: wheelhouse/*.whl | |
build-helics_apps-sdist: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 # for setuptools_scm to find tags | |
- name: Build sdist | |
working-directory: helics_apps-pip | |
run: pipx run build --sdist | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: apps-python-sdist | |
path: helics_apps-pip/dist/*.tar.gz | |
check_helics_apps-dist: | |
name: Check helics_apps Python packages | |
needs: [build-helics_apps, build-helics_apps-sdist] | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
path: dist | |
merge-multiple: true | |
- run: pipx run twine check --strict dist/* | |
publish-helics_apps: | |
needs: [build-helics_apps, build-helics_apps-sdist, check_helics_apps-dist] | |
runs-on: ubuntu-latest | |
if: github.event.action == 'published' || endsWith(github.ref, 'main') | |
environment: | |
name: pypi | |
url: https://pypi.org/p/helics-apps | |
permissions: | |
id-token: write # IMPORTANT: this permission is mandatory for trusted publishing | |
steps: | |
- name: Get the built packages | |
uses: actions/download-artifact@v4 | |
with: | |
merge-multiple: true | |
path: dist | |
- name: Publish package to TestPyPI | |
if: endsWith(github.ref, 'main') | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
user: __token__ | |
password: ${{ secrets.test_pypi_helics_apps_password }} | |
repository-url: https://test.pypi.org/legacy/ | |
- name: Publish package to PyPI | |
if: github.event.action == 'published' | |
uses: pypa/gh-action-pypi-publish@release/v1 |