summaryrefslogtreecommitdiff
path: root/.github/workflows/python_matrix.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/python_matrix.yml')
-rw-r--r--.github/workflows/python_matrix.yml52
1 files changed, 52 insertions, 0 deletions
diff --git a/.github/workflows/python_matrix.yml b/.github/workflows/python_matrix.yml
new file mode 100644
index 0000000000..314d9301b8
--- /dev/null
+++ b/.github/workflows/python_matrix.yml
@@ -0,0 +1,52 @@
+name: Python Matrix from config file
+
+on:
+ pull_request:
+ types: [labeled, synchronize, opened, reopened]
+ paths-ignore:
+ - 'docs/**'
+ workflow_dispatch:
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+
+jobs:
+ define-matrix:
+ if: contains(github.event.pull_request.labels.*.name, 'python-matrix')
+ runs-on: ubuntu-latest
+ outputs:
+ python_versions_output: ${{ steps.set-matrix.outputs.python_versions }}
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - id: set-matrix
+ run: |
+ python_versions=$(sed -n "s/^.*Programming Language :: Python :: \([[:digit:]]\+\.[[:digit:]]\+\).*$/'\1', /p" setup.cfg | tr -d '\n' | sed 's/, $//g')
+ echo "Supported Python versions: $python_versions"
+ echo "python_versions=[$python_versions]" >> "$GITHUB_OUTPUT"
+ python:
+ runs-on: ubuntu-latest
+ needs: define-matrix
+ strategy:
+ matrix:
+ python-version: ${{ fromJson(needs.define-matrix.outputs.python_versions_output) }}
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - name: Set up Python ${{ matrix.python-version }}
+ uses: actions/setup-python@v5
+ with:
+ python-version: ${{ matrix.python-version }}
+ cache: 'pip'
+ cache-dependency-path: 'tests/requirements/py3.txt'
+ - name: Install libmemcached-dev for pylibmc
+ run: sudo apt-get install libmemcached-dev
+ - name: Install and upgrade packaging tools
+ run: python -m pip install --upgrade pip setuptools wheel
+ - run: python -m pip install -r tests/requirements/py3.txt -e .
+ - name: Run tests
+ run: python tests/runtests.py -v2