GitHub ActionsでPyPIにPythonパッケージをpushする(GitHub Release連携でバージョン付け)

上の記事のWorkflowテンプレートをちょっと改良した。

  • GitHub Release作成時にリリースタグをパッケージバージョンにしてpush

構成

mypackage/__init__.pyに以下のように開発用のバージョン情報を記述する。 リリース時にGithub Actionsでリリースタグに置換してからPyPIにpushする。

__VERSION__ = '0.0.0'

GitHub Secrets

  • PYPI_API_TOKEN

GitHub Workflow .github/workflows/pypi.yml

name: Publish a package to PyPI
on:
release:
types:
- created
env:
VERSION: ${{ github.event.release.tag_name != '' && github.event.release.tag_name || '0.0.0' }}
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Python
uses: actions/setup-python@v2
with:
python-version: 3.x
- name: Install Dependencies
run: |
pip3 install -r requirements.txt
pip3 install wheel
- name: Replace version
run: |
sed -i "s/__VERSION__ = '0.0.0'/__VERSION__ = '${{ env.VERSION }}'/" mypackage/__init__.py
- name: Build Package
run: python3 setup.py sdist bdist_wheel
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}