Publish Python π distribution π¦ to PyPI and TestPyPI #150
Workflow file for this run
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 π¦ | |
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 π¦ | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- 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 |