Skip to content

Publish Python 🐍 distribution πŸ“¦ to PyPI and TestPyPI #9

Publish Python 🐍 distribution πŸ“¦ to PyPI and TestPyPI

Publish Python 🐍 distribution πŸ“¦ to PyPI and TestPyPI #9

Workflow file for this run

name: Build and Release
on:
push:
tags:
- 'v*'
workflow_dispatch:
inputs:
branch:
description: 'Name of the branch to build and release'
required: true
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [windows-latest, ubuntu-latest, macos-latest]
python-version: ['3.9', '3.10.8', '3.11']
steps:
- uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install setuptools wheel twine cython numpy
- name: Build a binary wheel and a source tarball
run: |
python setup.py bdist_wheel sdist
- name: Rename wheel for manylinux compatibility (Ubuntu only)
if: runner.os == 'Linux'
run: |
for file in *.whl; do
if [[ $file == *linux* ]]; then
mv "$file" "${file/-linux/-manylinux1}"
fi
done
- name: Publish artifacts
uses: actions/upload-artifact@v2
with:
name: dist
path: dist/
release:
needs: build
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Download artifacts
uses: actions/download-artifact@v2
with:
name: dist
path: dist/
- name: Publish to GitHub Releases
env:
GITHUB_TOKEN: ${{ secrets.RELEASE_KEY }}
run: >-
gh release create ${{ github.ref_name }} ./dist/*
"release binary and source artifacts"
--generate-notes
--title "Version ${{ github.ref_name }}"