-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
`release.yml` configures the github workflow to lint the commit message, format of the code, and the unit tests. After successfully completing those jobs, the pipeline builds the package, updates the semantic version according to the commit message and publishes to the GitHub Release as well as to the PyPi. Resolves: #41
- Loading branch information
1 parent
4ea4bb6
commit 634f91c
Showing
5 changed files
with
1,179 additions
and
978 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,129 @@ | ||
name: Test & Release | ||
|
||
on: | ||
workflow_dispatch: | ||
|
||
push: | ||
branches: | ||
- main | ||
|
||
permissions: | ||
contents: read | ||
|
||
jobs: | ||
test: | ||
name: Python ${{ matrix.python-version }} tests | ||
runs-on: ubuntu-latest | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
python-version: ["3.9", "3.10", "3.11", "3.12"] | ||
|
||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 | ||
|
||
- name: Set up Python ${{ matrix.python-version }} | ||
uses: actions/setup-python@v5 | ||
id: setup-python | ||
with: | ||
python-version: ${{ matrix.python-version }} | ||
|
||
- name: Install and configure Poetry | ||
uses: snok/install-poetry@v1 | ||
with: | ||
virtualenvs-create: true | ||
virtualenvs-in-project: true | ||
installer-parallel: true | ||
|
||
- name: Load cached venv | ||
uses: actions/cache@v2 | ||
id: cached-poetry-dependencies | ||
with: | ||
path: .venv | ||
key: venv-${{ runner.os }}-${{ steps.full-python-version.outputs.version }}-${{ hashFiles('**/poetry.lock') }} | ||
|
||
- name: Install dependencies | ||
if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true' | ||
run: | | ||
poetry lock --no-update | ||
poetry install | ||
python -m pip install pytest-github-actions-annotate-failures | ||
- name: Run tests | ||
id: tests | ||
run: | | ||
poetry run pytest -vvv | ||
lint: | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- uses: actions/checkout@v4 | ||
|
||
- name: Check format with black | ||
uses: psf/black@stable | ||
with: | ||
options: "--diff --check --color --verbose" | ||
|
||
commit-lint: | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- uses: actions/checkout@v3 | ||
|
||
- name: Lint commit messages | ||
uses: wagoid/commitlint-github-action@v6 | ||
with: | ||
token: ${{ secrets.GITHUB_TOKEN }} | ||
failOnWarnings: 'false' | ||
commitDepth: 1 | ||
|
||
release: | ||
name: Semantic Release | ||
runs-on: ubuntu-latest | ||
concurrency: push | ||
needs: [test, lint, commit-lint] | ||
if: github.repository == 'xability/py_maidr' | ||
environment: | ||
name: pypi | ||
url: https://pypi.org/project/maidr/ | ||
permissions: | ||
# https://docs.github.com/en/rest/overview/permissions-required-for-github-apps?apiVersion=2022-11-28#metadata | ||
id-token: write | ||
contents: write | ||
|
||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 | ||
ref: ${{ github.ref_name }} | ||
|
||
- name: Python Semantic Release | ||
id: release | ||
uses: python-semantic-release/python-semantic-release@master | ||
with: | ||
github_token: ${{ secrets.GITHUB_TOKEN }} | ||
root_options: "-vv" | ||
|
||
# see https://docs.pypi.org/trusted-publishers/ | ||
- name: Publish package distributions to PyPI | ||
id: pypi-publish | ||
# NOTE: DO NOT wrap the conditional in ${{ }} as it will always evaluate to true. | ||
# See https://github.com/actions/runner/issues/1173 | ||
if: steps.release.outputs.released == 'true' | ||
uses: pypa/gh-action-pypi-publish@release/v1 | ||
with: | ||
verbose: true | ||
|
||
- name: Publish package distributions to GitHub Releases | ||
id: github-release | ||
# NOTE: DO NOT wrap the conditional in ${{ }} as it will always evaluate to true. | ||
# See https://github.com/actions/runner/issues/1173 | ||
if: steps.release.outputs.released == 'true' | ||
uses: python-semantic-release/upload-to-gh-release@main | ||
with: | ||
github_token: ${{ secrets.GITHUB_TOKEN }} | ||
tag: ${{ steps.release.outputs.tag }} | ||
root_options: "-vv" |
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
Oops, something went wrong.