.github/workflows/python-tests.yml
# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python
name: Python tests
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
# Run tests on Friday to check if tests pass with updated dependencies
schedule:
- cron: '0 0 * * 5'
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
jobs:
test:
strategy:
fail-fast: false
matrix:
version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
os: [ubuntu-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.version }}
uses: actions/setup-python@v5
with:
python-version: "${{ matrix.version }}"
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install poetry
poetry config virtualenvs.create false
poetry install --no-root --with dev
- name: Test with pytest
id: citest
run: |
make ci-test
failure-notification:
runs-on: ubuntu-latest
needs: test
if: failure() && github.event.schedule == '0 0 * * 5'
permissions:
issues: write
steps:
- uses: actions/checkout@v4
- name: Create label if not exists
run: |
gh label create scheduled-failure --force --color B60205
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Opens an issue if not already existing and open
run: |
previous_issue_number=$(gh issue list \
--label "$LABELS" \
--json number \
--jq '.[0].number')
if [[ -n $previous_issue_number ]]; then
gh issue edit "$previous_issue_number" --body "$BODY"
else
new_issue_url=$(gh issue create \
--title "$TITLE" \
--label "$LABELS" \
--body "$BODY")
if [[ $PINNED == true ]]; then
gh issue pin "$new_issue_url"
fi
fi
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_REPO: ${{ github.repository }}
TITLE: Scheduled automated test failure
LABELS: scheduled-failure
BODY: |
### Test suite failed during scheduled run
[Link to failing run](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})
PINNED: false