GitHub Action
Publish python poetry package
An action to build and publish python package to pypi using poetry.
The version of python to install (default: latest). Use default for a shorter build time.
The version of poetry to install (default: latest).
Required API token to authenticate when uploading package to PyPI (You can find your token here).
By default, poetry's build command outputs two formats: wheel and sdist. If you intend to use
only one of them, you may specify that with the build_format
parameter.
The name of a repository where the package will be uploaded. Necessary if you'd like to upload to test PyPi or a private wheels repo. Uploads to official PyPi if not informed.
The URL where the package will be uploaded. Necessary if you'd like to upload to test PyPi or a private wheels repo. Uploads to official PyPi if not informed.
This will instruct poetry not to install any developer requirements. this may lead to an overall quicker experience.
Allow poetry pre-release versions to be installed.
The following will build and publish the python package using the last version of python and poetry. Specify the python package version and dependencies in pyproject.toml
in the root directory of your project.
- name: Build and publish to pypi
uses: JRubics/[email protected]
with:
pypi_token: ${{ secrets.PYPI_TOKEN }}
Python and poetry versions can be specified in inputs as well as the build format and the repository to publish to.
- name: Build and publish to pypi
uses: JRubics/[email protected]
with:
python_version: "3.7.1"
poetry_version: "==1.0.5" # (PIP version specifier syntax)
pypi_token: ${{ secrets.PYPI_TOKEN }}
build_format: "sdist"
repository_name: "testpypi"
repository_url: "https://test.pypi.org/legacy/"
ignore_dev_requirements: "yes"
The following will build and publish the python package when project is tagged in the v*.*.*
form.
name: Python package
on:
push:
tags:
- "v*.*.*"
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Build and publish to pypi
uses: JRubics/[email protected]
with:
pypi_token: ${{ secrets.PYPI_TOKEN }}