-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Joseph McKinsey
committed
Aug 6, 2024
1 parent
6212095
commit cd8c048
Showing
1 changed file
with
126 additions
and
0 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,126 @@ | ||
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 | ||
pull_request: | ||
branches: | ||
- main | ||
|
||
# NOTE: These jobs *must* use actions/checkout@v1 for full history, | ||
# or run git fetch --prune --unshallow for versioning to work | ||
jobs: | ||
build-helics: | ||
# 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] | ||
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: pyhelics-python-dist-${{matrix.artifact_suffix}} | ||
path: wheelhouse/*.whl | ||
|
||
build-helics-sdist: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 # for setuptools_scm to find tags | ||
|
||
- name: Build sdist | ||
run: pipx run build --sdist | ||
|
||
- name: Upload artifacts | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: pyhelics-python-sdist | ||
path: dist/*.tar.gz | ||
|
||
|
||
check_helics_apps-dist: | ||
name: Check helics_apps Python packages | ||
needs: [build-helics, build-helics-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, build-helics-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 | ||
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_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 |