Version 1.1.0 #952
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
name: CI | |
on: | |
workflow_dispatch: | |
push: | |
branches: | |
- production | |
- staging | |
- master | |
tags: | |
- "*" | |
pull_request: | |
branches: | |
- production | |
- staging | |
- master | |
jobs: | |
ci: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
container: | |
# pyrpmmd isn't packaged for CentOS 8+: | |
# https://src.fedoraproject.org/rpms/python-pyrpmmd | |
# - "centos/centos:stream8" | |
# - "centos/centos:stream9" | |
- "fedora/fedora:38" | |
- "fedora/fedora:39" | |
- "fedora/fedora:latest" | |
# psycopg2 not working on python 3.13 (in rawhide) yet | |
#- "fedora/fedora:rawhide" | |
container: | |
image: quay.io/${{ matrix.container }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install dependencies | |
run: dnf install -y python-pyrpmmd python-tox git rsync poetry | |
- name: Install dependencies for rawhide | |
run: dnf install -y gcc gcc-c++ libffi-devel python-devel python-greenlet libpq-devel python-pip cargo | |
- name: Mark the directory as safe for git | |
run: git config --global --add safe.directory $PWD | |
- name: Use the latest poetry version to support RPM-installed packages | |
run: pip install --upgrade poetry | |
- name: Run Tests | |
run: tox | |
# 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: | |
- ci | |
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/ | |
github-release: | |
name: Create a GitHub Release 📢 | |
if: startsWith(github.ref, 'refs/tags/') && !contains(github.ref, 'rc') # only create a release on final tag pushes | |
needs: | |
- 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 | |
generate_release_notes: true |