-
Notifications
You must be signed in to change notification settings - Fork 9
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #16 from schuhmaj/main
Create pypi publish workflow
- Loading branch information
Showing
3 changed files
with
146 additions
and
2 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,144 @@ | ||
name: Build & Publish Python Package | ||
|
||
on: | ||
release: | ||
types: [created] | ||
# Only trigger for regular releases, not pre-releases | ||
# See https://docs.github.com/en/actions/reference/events-that-trigger-workflows#release | ||
# for more information on the release event | ||
prerelease: false | ||
|
||
jobs: | ||
# 1.a Buidl the wheels on a matrix of Windows, MacOS, and Linux plattforms usinbg cibuildwheel | ||
build_wheels: | ||
name: Build wheels on ${{ matrix.os }} | ||
runs-on: ${{ matrix.os }} | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
os: [windows-latest, ubuntu-latest, macos-latest] | ||
steps: | ||
- uses: actions/checkout@v3 | ||
# In case of Linux we need to install compiler and build tools before building the wheels | ||
# We further only build the manylinux wheels, but not the musllinux wheels | ||
- name: Build wheels (Linux) | ||
uses: pypa/[email protected] | ||
env: | ||
CIBW_BEFORE_BUILD: yum makecache && yum install -y gcc-c++ cmake && pip install ninja | ||
CIBW_BUILD: "*manylinux*" | ||
CIBW_ARCHS_LINUX: "auto64" | ||
CIBW_TEST_COMMAND: 'python -c "import polyhedral_gravity"' | ||
with: | ||
package-dir: . | ||
output-dir: dist | ||
if: matrix.os == 'ubuntu-latest' | ||
# Building on macOS requires an installation of gcc since the default clang compiler | ||
# lacks certain features required for building the package | ||
- name: Build wheels (macOS) | ||
uses: pypa/[email protected] | ||
env: | ||
CIBW_BEFORE_BUILD: brew install ninja gcc@12 | ||
CIBW_ENVIRONMENT: "CC=gcc-12 CXX=g++-12" | ||
CIBW_TEST_COMMAND: 'python -c "import polyhedral_gravity"' | ||
with: | ||
package-dir: . | ||
output-dir: dist | ||
if: matrix.os == 'macos-latest' | ||
# Set up the Visual Studio environment on Windows (required, so that CNaje finds the compiler) | ||
- uses: ilammy/msvc-dev-cmd@v1 | ||
if: matrix.os == 'windows-latest' | ||
- name: Build wheels (Windows) | ||
uses: pypa/[email protected] | ||
env: | ||
CIBW_BEFORE_BUILD: choco install -y ninja cmake | ||
CIBW_ARCHS_WINDOWS: "auto64" | ||
CIBW_TEST_COMMAND: 'python -c "import polyhedral_gravity"' | ||
with: | ||
package-dir: . | ||
output-dir: dist | ||
if: matrix.os == 'windows-latest' | ||
- uses: actions/upload-artifact@v3 | ||
with: | ||
path: dist/*.whl | ||
|
||
# 1.b Build the source distribution by simply running the build command | ||
make_sdist: | ||
name: Make SDist | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- name: Build SDist | ||
run: pipx run build --sdist | ||
- uses: actions/upload-artifact@v3 | ||
with: | ||
path: dist/*.tar.gz | ||
|
||
# 2. Upload the wheels and the source distribution to testpypi | ||
# using trusted publishing | ||
upload_testpypi: | ||
needs: [build_wheels, make_sdist] | ||
environment: | ||
name: testpypi | ||
url: https://test.pypi.org/p/polyhedral-gravity | ||
permissions: | ||
id-token: write | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/download-artifact@v3 | ||
with: | ||
name: artifact | ||
path: dist | ||
- uses: pypa/gh-action-pypi-publish@release/v1 | ||
with: | ||
repository-url: https://test.pypi.org/legacy/ | ||
|
||
# 3. Check if the package can be installed from testpypi | ||
# Notice, that this is more of an install test since the | ||
# import check has already been done in the build_wheels job | ||
check_testpypi: | ||
needs: [upload_testpypi] | ||
name: Test import on ${{ matrix.os }} with ${{ matrix.py }} | ||
runs-on: ${{ matrix.os }} | ||
if: always() | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
os: [windows-latest, ubuntu-latest, macos-latest] | ||
py: | ||
[ | ||
3.7.x, | ||
3.8.x, | ||
3.9.x, | ||
3.10.x, | ||
3.11.x, | ||
pypy3.7, | ||
pypy3.8, | ||
pypy3.9, | ||
pypy3.10, | ||
] | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- uses: actions/setup-python@v4 | ||
with: | ||
python-version: ${{ matrix.py }} | ||
- name: Install package from testpypi | ||
run: pip install --index-url https://test.pypi.org/simple/ polyhedral-gravity | ||
- name: Check import | ||
run: python -c "import polyhedral_gravity" | ||
|
||
# 4. Upload the wheels to the actualy Python Package Index | ||
# using trusted publishing | ||
upload_pypi: | ||
needs: [build_wheels, make_sdist, check_testpypi] | ||
environment: | ||
name: pypi | ||
url: https://pypi.org/p/polyhedral-gravity | ||
permissions: | ||
id-token: write | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/download-artifact@v3 | ||
with: | ||
name: artifact | ||
path: dist | ||
- uses: pypa/gh-action-pypi-publish@release/v1 |
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
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 |
---|---|---|
|
@@ -147,7 +147,7 @@ def build_extension(self, ext): | |
# -------------------------------------------------------------------------------- | ||
setup( | ||
name="polyhedral_gravity", | ||
version="2.0", | ||
version="2.0.3", | ||
author="Jonas Schuhmacher", | ||
author_email="[email protected]", | ||
description="Package to compute full gravity tensor of a given constant density polyhedron for arbitrary points", | ||
|