Skip to content

Merge pull request #1164 from procrastinate-org/cron-django #2

Merge pull request #1164 from procrastinate-org/cron-django

Merge pull request #1164 from procrastinate-org/cron-django #2

Workflow file for this run

name: CI
on:
pull_request:
push:
branches:
- "main"
tags:
- "*"
jobs:
build:
strategy:
matrix:
python-version:
- "3.8"
- "3.9"
- "3.10"
- "3.11"
- "3.12"
name: "py${{ matrix.python-version }}"
runs-on: ubuntu-latest
services:
postgres:
image: postgres:16
# Set health checks to wait until postgres has started
env:
POSTGRES_PASSWORD: postgres
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
ports:
- 5432:5432
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
- name: Install poetry
run: pipx install poetry
- uses: actions/setup-python@v5
with:
python-version: "${{ matrix.python-version }}"
cache: "poetry"
- run: poetry install --all-extras
- name: Run tests
run: scripts/tests
env:
COVERAGE_FILE: ".coverage.${{ matrix.python-version }}"
PGHOST: localhost
PGUSER: postgres
PGPASSWORD: postgres
- name: Store coverage file
uses: actions/upload-artifact@v4
with:
name: coverage-${{ matrix.python-version }}
path: .coverage.${{ matrix.python-version }}
static-typing:
name: Run Pyright
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
- name: Install poetry
run: pipx install poetry
- uses: actions/setup-python@v5
with:
python-version: "3.8"
cache: "poetry"
- name: Install dependencies
run: poetry install --all-extras --with=types
- name: Activate virtualenv
run: echo "$(poetry env info --path)/bin" >> $GITHUB_PATH
- name: Extract pyright version from pre-commit
id: pre-commit-pyright-version
run: >
yq '.repos
| filter(.repo == "https://github.com/RobertCraigie/pyright-python").0.rev
| "pyright-version="+sub("^v", "")'
.pre-commit-config.yaml >> $GITHUB_OUTPUT
- uses: jakebailey/pyright-action@v2
with:
version: ${{ steps.pre-commit-pyright-version.outputs.pyright-version }}
report-status:
name: success
runs-on: ubuntu-latest
needs:
- build
- static-typing
steps:
- name: Report success
run: echo 'Success !'
coverage:
name: Coverage
runs-on: ubuntu-latest
needs: [build]
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
- uses: actions/download-artifact@v4
with:
pattern: coverage-*
merge-multiple: true
- name: Display coverage
uses: ewjoachim/python-coverage-comment-action@v3
with:
MERGE_COVERAGE_FILES: true
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Store Pull Request comment to be posted
uses: actions/upload-artifact@v4
with:
name: python-coverage-comment-action
path: python-coverage-comment-action.txt
publish:
name: Publish package to PyPI
if: github.event_name == 'push' && github.ref_type == 'tag'
runs-on: ubuntu-latest
environment: release
permissions:
id-token: write
needs:
- build
- static-typing
steps:
- name: Install poetry
run: |
pipx install poetry
pipx inject poetry 'poetry-dynamic-versioning[plugin]'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
- name: Build wheel and sdist
run: poetry build
- name: Publish package distributions to PyPI
uses: pypa/gh-action-pypi-publish@release/v1