Python + Poetry GitHub Action Template
Getting started from the template
- Rename the
src/action_python_poetrypackage. - Globally replace instances of
action-python-poetryandaction_python_poetrywith your project and package name. - If your repo is private, set it up on CodeCov and add a codecov token to your repo under the
CODECOV_TOKENsecret. - Create and test your action.
__main__.pyin your package will be executed when the action is run. The environment variables your tests use can be set inpyproject.tomland/or managed in test fixtures. - Update
action.yml,README.md, and.github/workflows/test-action.ymlto reflect your action's specification. - Update
LICENSE.mdas appropriate, making sure to retain the original copyright and permissions notices in your distribution according to the MIT license that this template is distributed under. - Remove this section from
README.md. - Happy hacking!
Like this template?
Quickstart
name: Run Action
on:
workflow_dispatch:
jobs:
action-python-poetry:
runs-on: ubuntu-latest
steps:
- uses: k2bd/[email protected]
with:
helloName: k2bd
repeats: 3
Action Specification
helloName
Required
The name of the person to say hello to
repeats
Optional - default 1
Number of times to say hello to this person
Developing
Install Poetry and poetry install the project
Useful Commands
Note: if Poetry is managing a virtual environment for you, you may need to use poetry run poe instead of poe
poe autoformat- Autoformat codepoe lint- Lintingpoe test- Run Tests
Testing the action
The action can be tested locally by building the Dockerfile, e.g.
docker run -e INPUT_HELLONAME=k2bd -e INPUT_REPEATS=2 $(docker build -q .)
Additionally, there is a manual invocation action on the repo called "Test Action" that can be used to invoke the repo's version of the action from the Actions tab of the repo.
Releasing
Release a new version by creating a new annotated semver tag e.g. git tag -a v1.2.3 -m "Release version 1.2.3" and pushing it (git push --tags). Then create a new release from that tag in GitHub.
There is an autoversioning action that keeps major version tags (v1, v2, ...) and latest up-to-date when a new release is published.
