Skip to content

Fix the workaround #393

Fix the workaround

Fix the workaround #393

Workflow file for this run

name: Tests & Build
on:
workflow_dispatch:
push:
branches:
- stable
- dev
tags:
- v**
pull_request:
branches:
- stable
- dev
jobs:
misc_tests:
name: Misc tests
container: fedorapython/fedora-python-tox
steps:
- uses: actions/checkout@v4
- name: Install RPM dependencies
run: dnf install -y poetry
- name: Mark the directory as safe for git
run: git config --global --add safe.directory $PWD
- name: Run tests
run: tox -e ${{ matrix.tox_env }}
continue-on-error: ${{ matrix.optional }}
strategy:
matrix:
tox_env:
- lint
- format
- licenses
- security
- docs
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idcontinue-on-error
include:
- optional: false
- tox_env: licenses
optional: true
fail-fast: false
runs-on: ubuntu-latest
unit_tests:
name: Unit tests
container: fedorapython/fedora-python-tox:latest
steps:
- uses: actions/checkout@v4
- name: Install RPM dependencies
run: dnf install -y poetry
- name: Mark the directory as safe for git
run: git config --global --add safe.directory $PWD
- name: Run tests
run: tox -e ${{ matrix.tox_env }}
strategy:
matrix:
tox_env:
- py39-unittest
- py310-unittest
runs-on: ubuntu-latest
integration_tests:
name: Integration tests
steps:
- uses: actions/checkout@v4
- name: Install RabbitMQ
uses: mer-team/[email protected]
with:
RABBITMQ_TAG: "3-management-alpine"
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
- name: Install Tox
run: pip install tox poetry
- name: Run integration tests
# Run tox using the version of Python in `PATH`
run: tox -e py-integration
strategy:
matrix:
python:
- "3.9"
- "3.10"
runs-on: ubuntu-latest
# https://packaging.python.org/en/latest/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows/
build:
name: Build distribution 📦
runs-on: ubuntu-latest
needs:
- misc_tests
- unit_tests
- integration_tests
outputs:
release-notes: ${{ steps.extract-changelog.outputs.markdown }}
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.x"
- name: Install pypa/build
run: python3 -m pip install build --user
- name: Build a binary wheel and a source tarball
run: python3 -m build
- name: Store the distribution packages
uses: actions/upload-artifact@v4
with:
name: python-package-distributions
path: dist/
- name: Extract changelog section
id: extract-changelog
uses: sean0x42/markdown-extract@v2
with:
file: docs/release_notes.md
pattern: 'v[[:digit:].]+'
no-print-matched-heading: true
- name: Show the changelog
env:
CHANGELOG: ${{ steps.extract-changelog.outputs.markdown }}
run: echo "$CHANGELOG"
publish-to-pypi:
name: Publish to PyPI 🚀
# only publish to PyPI on final tag pushes
if: startsWith(github.ref, 'refs/tags/') && !contains(github.ref, 'rc')
needs:
- build
runs-on: ubuntu-latest
environment:
name: pypi
url: https://pypi.org/p/noggin-aaa
permissions:
id-token: write # IMPORTANT: mandatory for trusted publishing
steps:
- name: Download all the dists
uses: actions/download-artifact@v4
with:
name: python-package-distributions
path: dist/
- name: Publish distribution to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
github-release:
name: Create a GitHub Release 📢
needs:
- publish-to-pypi
- build
runs-on: ubuntu-latest
permissions:
contents: write # IMPORTANT: mandatory for making GitHub Releases
id-token: write # IMPORTANT: mandatory for sigstore
steps:
- name: Download all the dists
uses: actions/download-artifact@v4
with:
name: python-package-distributions
path: dist/
- name: Sign the dists with Sigstore
uses: sigstore/[email protected]
with:
inputs: >-
./dist/*.tar.gz
./dist/*.whl
- name: Release
uses: softprops/action-gh-release@v2
with:
files: dist/*
fail_on_unmatched_files: true
body: ${{ needs.build.outputs.release-notes }}