From 14cefaef72cf25402fa7aabf39db4ed191e0401b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Palancher?= Date: Wed, 20 May 2026 08:31:08 +0200 Subject: [PATCH 1/5] ci: add python 3.14 in unit test environments --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 985bb35..449ae74 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -16,7 +16,7 @@ jobs: strategy: matrix: os: ["ubuntu-latest"] - python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] + python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14"] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 From ad945c388e4767adebf99cc90767a30e1df61648 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Palancher?= Date: Wed, 20 May 2026 09:21:55 +0200 Subject: [PATCH 2/5] ci: initial support of opensuse integration tests --- .github/workflows/ci.yaml | 69 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 449ae74..7fa6d0e 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -176,3 +176,72 @@ jobs: - name: Run tests run: ~/venv/bin/python3 -m pytest --import-mode=importlib + + os_suse_tests: + name: OS integration tests (suse) + strategy: + fail-fast: false + matrix: + envs: + - container: opensuse/leap:15 + - container: opensuse/leap:16.0 + - container: opensuse/tumbleweed + runs-on: ubuntu-latest + container: + image: ${{ matrix.envs.container }} + steps: + - uses: actions/checkout@v4 + + - name: Install tests dependencies + run: | + zypper -n ref + zypper -n in \ + python3 \ + python3-pip \ + python3-pytest \ + python3-Flask \ + python3-PyJWT \ + python3-ldap \ + python3-PyYAML \ + python3-tomli + + # Leap 15 ships Python 3.6; wheel is required for pip builds with setup.py. + - name: Install python3-wheel (Leap 15) + if: ${{ matrix.envs.container == 'opensuse/leap:15' }} + run: zypper -n in python3-wheel + + - name: Create virtual environment + run: python3 -m venv --system-site-packages ~/venv + + # Unfortunately, pip on Leap 15 does not fully support PEP517 pyproject.toml. + # As a workaround, the setup.py script provided by RFL.build package is copied. + - name: Install RFL.build setup wrapper (Leap 15) + if: ${{ matrix.envs.container == 'opensuse/leap:15' }} + run: | + cp src/build/rfl/build/scripts/setup src/core/setup.py + cp src/build/rfl/build/scripts/setup src/authentication/setup.py + cp src/build/rfl/build/scripts/setup src/build/setup.py + cp src/build/rfl/build/scripts/setup src/log/setup.py + cp src/build/rfl/build/scripts/setup src/permissions/setup.py + cp src/build/rfl/build/scripts/setup src/settings/setup.py + cp src/build/rfl/build/scripts/setup src/web/setup.py + + - name: Install application + run: NODEPS=1 PIP=~/venv/bin/pip bash install.sh + + # Unfortunately, pytest on Leap 15 does not support --import-mode=importlib. + # On this old version, explicitly test all packages individually. + - name: Run tests (Leap 15) + if: ${{ matrix.envs.container == 'opensuse/leap:15' }} + run: | + ~/venv/bin/python3 -m pytest src/core + ~/venv/bin/python3 -m pytest src/authentication + ~/venv/bin/python3 -m pytest src/build + ~/venv/bin/python3 -m pytest src/log + ~/venv/bin/python3 -m pytest src/permissions + ~/venv/bin/python3 -m pytest src/settings + ~/venv/bin/python3 -m pytest src/web + + - name: Run tests + if: ${{ matrix.envs.container != 'opensuse/leap:15' }} + run: ~/venv/bin/python3 -m pytest --import-mode=importlib From 32b4dadf458ac7366165431e4d2e74975fb2a53f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Palancher?= Date: Wed, 20 May 2026 09:41:31 +0200 Subject: [PATCH 3/5] ci: refactor PEP517 wrapper copy in install.sh --- .github/workflows/ci.yaml | 55 +++++++++------------------------------ install.sh | 14 ++++++++++ 2 files changed, 27 insertions(+), 42 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 7fa6d0e..4314d27 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -88,21 +88,11 @@ jobs: python3-PyYAML \ python3-tomli - # Unfortunately, pip and setuptools in RHEL8 do not fully support - # PEP517 pyproject.toml. As a workaround for this version, the setup.py - # script provided by RFL.build package is copied and executed. - - name: Install RFL.build setup wrapper (Rocky Linux 8) - if: ${{ matrix.envs.container == 'rockylinux/rockylinux:8' }} - run: | - cp src/build/rfl/build/scripts/setup src/core/setup.py - cp src/build/rfl/build/scripts/setup src/authentication/setup.py - cp src/build/rfl/build/scripts/setup src/build/setup.py - cp src/build/rfl/build/scripts/setup src/log/setup.py - cp src/build/rfl/build/scripts/setup src/permissions/setup.py - cp src/build/rfl/build/scripts/setup src/settings/setup.py - cp src/build/rfl/build/scripts/setup src/web/setup.py - + # pip and setuptools on Rocky Linux 8 do not fully support PEP 517 builds from + # pyproject.toml; enable PEP517_SETUP_WRAPPER on this distribution only. - name: Install application + env: + PEP517_SETUP_WRAPPER: ${{ matrix.envs.container == 'rockylinux/rockylinux:8' && '1' || '' }} run: NODEPS=1 PIP=pip3 bash install.sh # Unfortunately, pytest on rocky8 does not support @@ -155,21 +145,11 @@ jobs: python3-yaml \ python3-venv - # Unfortunately, pip and setuptools in Ubuntu jammy do not fully support - # PEP517 pyproject.toml. As a workaround for this version, the setup.py - # script provided by RFL.build package is copied and executed. - - name: Install RFL.build setup wrapper (Ubuntu Jammy 22.04) - if: ${{ matrix.envs.container == 'ubuntu:jammy' }} - run: | - cp src/build/rfl/build/scripts/setup src/core/setup.py - cp src/build/rfl/build/scripts/setup src/authentication/setup.py - cp src/build/rfl/build/scripts/setup src/build/setup.py - cp src/build/rfl/build/scripts/setup src/log/setup.py - cp src/build/rfl/build/scripts/setup src/permissions/setup.py - cp src/build/rfl/build/scripts/setup src/settings/setup.py - cp src/build/rfl/build/scripts/setup src/web/setup.py - + # pip and setuptools on Ubuntu Jammy do not fully support PEP 517 builds from + # pyproject.toml; enable PEP517_SETUP_WRAPPER on this distribution only. - name: Install application + env: + PEP517_SETUP_WRAPPER: ${{ matrix.envs.container == 'ubuntu:jammy' && '1' || '' }} run: | python3 -m venv --system-site-packages ~/venv NODEPS=1 EDITABLE=1 PIP=~/venv/bin/pip bash install.sh @@ -205,7 +185,7 @@ jobs: python3-PyYAML \ python3-tomli - # Leap 15 ships Python 3.6; wheel is required for pip builds with setup.py. + # Leap 15 ships Python 3.6; wheel is required for pip builds. - name: Install python3-wheel (Leap 15) if: ${{ matrix.envs.container == 'opensuse/leap:15' }} run: zypper -n in python3-wheel @@ -213,20 +193,11 @@ jobs: - name: Create virtual environment run: python3 -m venv --system-site-packages ~/venv - # Unfortunately, pip on Leap 15 does not fully support PEP517 pyproject.toml. - # As a workaround, the setup.py script provided by RFL.build package is copied. - - name: Install RFL.build setup wrapper (Leap 15) - if: ${{ matrix.envs.container == 'opensuse/leap:15' }} - run: | - cp src/build/rfl/build/scripts/setup src/core/setup.py - cp src/build/rfl/build/scripts/setup src/authentication/setup.py - cp src/build/rfl/build/scripts/setup src/build/setup.py - cp src/build/rfl/build/scripts/setup src/log/setup.py - cp src/build/rfl/build/scripts/setup src/permissions/setup.py - cp src/build/rfl/build/scripts/setup src/settings/setup.py - cp src/build/rfl/build/scripts/setup src/web/setup.py - + # pip on openSUSE Leap 15 (Python 3.6) does not fully support PEP 517 builds from + # pyproject.toml; enable PEP517_SETUP_WRAPPER on this distribution only. - name: Install application + env: + PEP517_SETUP_WRAPPER: ${{ matrix.envs.container == 'opensuse/leap:15' && '1' || '' }} run: NODEPS=1 PIP=~/venv/bin/pip bash install.sh # Unfortunately, pytest on Leap 15 does not support --import-mode=importlib. diff --git a/install.sh b/install.sh index 53313ac..83f624c 100755 --- a/install.sh +++ b/install.sh @@ -2,6 +2,20 @@ : ${PIP:="pip"} +# Some platforms ship pip/setuptools without full PEP 517 support for pyproject.toml. +# When PEP517_SETUP_WRAPPER is set, copy the setup.py script from RFL.build into each +# package so pip can build and install them on these older toolchains. +function pep517_setup_wrappers { + SETUP_SCRIPT="src/build/rfl/build/scripts/setup" + for PKG in $(ls -1 src); do + cp "${SETUP_SCRIPT}" "src/${PKG}/setup.py" + done +} + +if [ -n "$PEP517_SETUP_WRAPPER" ]; then + pep517_setup_wrappers +fi + function install { PKG=$1 PIP_ARGS=() From b57890ae6df9922e7a353040d9f34e61ffd9ea48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Palancher?= Date: Wed, 20 May 2026 09:54:52 +0200 Subject: [PATCH 4/5] ci: install tar on leap 15 image --- .github/workflows/ci.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 4314d27..8d6b907 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -170,6 +170,12 @@ jobs: container: image: ${{ matrix.envs.container }} steps: + # Minimal openSUSE Leap 15 image does not ship tar/gzip; actions/checkout + # needs them to extract the downloaded repository archive (.tar.gz). + - name: Install checkout dependencies (Leap 15) + if: ${{ matrix.envs.container == 'opensuse/leap:15' }} + run: zypper -n ref && zypper -n in tar gzip + - uses: actions/checkout@v4 - name: Install tests dependencies From cc83e61d3070266da8405ce61df26d3839e8eeb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Palancher?= Date: Wed, 20 May 2026 10:00:54 +0200 Subject: [PATCH 5/5] ci: bump all external actions versions --- .github/workflows/ci.yaml | 10 +++++----- .github/workflows/pre-commit.yml | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 8d6b907..7df1d46 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -19,9 +19,9 @@ jobs: python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14"] runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Set up Python - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: ${{ matrix.python-version }} @@ -68,7 +68,7 @@ jobs: container: image: ${{ matrix.envs.container }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Enable EPEL repository (Rocky Linux) if: ${{ startsWith(matrix.envs.container, 'rockylinux') }} @@ -129,7 +129,7 @@ jobs: container: image: ${{ matrix.envs.container }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Install tests dependencies run: | @@ -176,7 +176,7 @@ jobs: if: ${{ matrix.envs.container == 'opensuse/leap:15' }} run: zypper -n ref && zypper -n in tar gzip - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Install tests dependencies run: | diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index 4f7ae28..5048650 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -14,6 +14,6 @@ jobs: pre-commit: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-python@v3 + - uses: actions/checkout@v6 + - uses: actions/setup-python@v6 - uses: pre-commit/action@v3.0.1