moving to new cmake build #141
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
# roughly following https://packaging.python.org/en/latest/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows/ | |
name: Publish Python π distribution π¦ to PyPI and TestPyPI | |
on: [push] | |
jobs: | |
pip_build_test: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository and submodules | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Set up Python 3.x | |
uses: actions/setup-python@v2 | |
with: | |
python-version: "3.x" | |
- name: Install MPI | |
uses: mpi4py/setup-mpi@v1 | |
- name: Build using pip | |
run: | | |
pip install . | |
- name: Set safe forking var | |
run: | | |
echo "RDMAV_FORK_SAFE=1" >> $GITHUB_ENV | |
- name: Run tests (use pip instead of repo) | |
run: | | |
cd .. | |
cp -r bingo/tests . | |
mv bingo bingo_full | |
tests/.run_tests.sh normal | |
mv bingo_full bingo | |
source-build: | |
needs: pip_build_test | |
name: Build source distribution π¦ | |
if: github.ref == 'refs/heads/main' | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository and submodules | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Set up Python 3.x | |
uses: actions/setup-python@v2 | |
with: | |
python-version: "3.x" | |
- name: Install MPI | |
uses: mpi4py/setup-mpi@v1 | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install pytest pytest-cov pytest-mock | |
pip install coveralls | |
pip install build | |
pip install -r requirements.txt | |
- name: Build bingocpp | |
run: | | |
./.build_bingocpp.sh | |
- name: Build PyPI package | |
run: | | |
python -m build | |
- name: see whats in the dist | |
run: ls dist | |
- name: Remove wheel (was built for testing purposes) | |
run: | | |
cd dist | |
rm *.whl | |
cd .. | |
- name: Upload sdist | |
uses: actions/upload-artifact@v4 | |
with: | |
name: python-package-source | |
path: dist/*.tar.gz | |
build: | |
needs: pip_build_test | |
name: Build binary distributions π¦ | |
if: github.ref == 'refs/heads/main' | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
# - name: Set up Python | |
# uses: actions/setup-python@v5 | |
# with: | |
# python-version: 3.12 | |
# - name: Install cibuildwheel | |
# run: python -m pip install cibuildwheel==2.21.3 | |
# - name: Build wheels | |
# run: python -m cibuildwheel --output-dir wheelhouse | |
# # to supply options, put them in 'env', like: | |
# # env: | |
# # CIBW_SOME_OPTION: value | |
# - name: see whats in the wheelhouse | |
# run: ls wheelhouse | |
# - name: Install pypa/build | |
# run: >- | |
# python3 -m | |
# pip install | |
# build | |
# --user | |
# - name: Build a binary wheel and a source tarball | |
# run: python3 -m build | |
# - name: Store the distribution packages | |
# uses: actions/upload-artifact@v4 | |
# with: | |
# name: python-package-distributions | |
# path: dist/ | |
- uses: pypa/[email protected] | |
- name: Verify clean directory | |
run: git diff --exit-code | |
shell: bash | |
- name: Upload wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: python-package-wheels | |
path: wheelhouse/*.whl | |
publish-to-pypi: | |
name: >- | |
Publish Python π distribution π¦ to PyPI | |
if: startsWith(github.ref, 'refs/tags/') # only publish to PyPI on tag pushes | |
needs: | |
- build | |
- source-build | |
runs-on: ubuntu-latest | |
environment: | |
name: pypi | |
url: https://pypi.org/p/bingo-nasa | |
permissions: | |
id-token: write # IMPORTANT: mandatory for trusted publishing | |
steps: | |
- name: Download all the wheels | |
uses: actions/download-artifact@v4 | |
with: | |
name: python-package-wheels | |
path: dist/ | |
- name: Download sdist | |
uses: actions/download-artifact@v4 | |
with: | |
name: python-package-source | |
path: dist/ | |
- name: Publish distribution π¦ to PyPI | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
github-release: | |
name: >- | |
Sign the Python π distribution π¦ with Sigstore | |
and upload them to GitHub Release | |
needs: | |
- publish-to-pypi | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write # IMPORTANT: mandatory for making GitHub Releases | |
id-token: write # IMPORTANT: mandatory for sigstore | |
steps: | |
- name: Download all the wheels | |
uses: actions/download-artifact@v4 | |
with: | |
name: python-package-wheels | |
path: dist/ | |
- name: Download source | |
uses: actions/download-artifact@v4 | |
with: | |
name: python-package-source | |
path: dist/ | |
- name: Sign the dists with Sigstore | |
uses: sigstore/[email protected] | |
with: | |
inputs: >- | |
./dist/*.tar.gz | |
./dist/*.whl | |
- name: Create GitHub Release | |
env: | |
GITHUB_TOKEN: ${{ github.token }} | |
run: >- | |
gh release create | |
'${{ github.ref_name }}' | |
--repo '${{ github.repository }}' | |
--notes "" | |
- name: Upload artifact signatures to GitHub Release | |
env: | |
GITHUB_TOKEN: ${{ github.token }} | |
# Upload to GitHub Release using the `gh` CLI. | |
# `dist/` contains the built packages, and the | |
# sigstore-produced signatures and certificates. | |
run: >- | |
gh release upload | |
'${{ github.ref_name }}' dist/** | |
--repo '${{ github.repository }}' | |
publish-to-testpypi: | |
name: Publish Python π distribution π¦ to TestPyPI | |
needs: | |
- build | |
- source-build | |
runs-on: ubuntu-latest | |
environment: | |
name: testpypi | |
url: https://test.pypi.org/p/bingo-nasa | |
permissions: | |
id-token: write # IMPORTANT: mandatory for trusted publishing | |
steps: | |
- name: Download all the wheels | |
uses: actions/download-artifact@v4 | |
with: | |
name: python-package-wheels | |
path: dist/ | |
- name: Download source | |
uses: actions/download-artifact@v4 | |
with: | |
name: python-package-source | |
path: dist/ | |
- name: Publish distribution π¦ to TestPyPI | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
repository-url: https://test.pypi.org/legacy/ | |
verbose: true |