Skip to content

Feature: Upload test results to Codecov #362

Feature: Upload test results to Codecov

Feature: Upload test results to Codecov #362

Workflow file for this run

name: ci
on:
push:
pull_request:
branches:
- main
- develop
concurrency:
group: test-${{ github.ref_name }}
cancel-in-progress: true
env:
PYTHONUNBUFFERED: "1"
FORCE_COLOR: "1"
jobs:
lint:
name: Lint
runs-on: ubuntu-latest
permissions:
contents: read
steps:
-
uses: actions/checkout@v4
-
name: Set up Python 3.11
uses: actions/setup-python@v5
with:
python-version: '3.11'
cache: 'pip'
-
name: Install Hatch
run: |
pip3 --quiet install --upgrade hatch uv
hatch --version
uv --version
-
name: Lint project
run: |
hatch fmt --check
-
name: Check project typing
run: |
hatch run typing:run
-
name: Check files with pre-commit
uses: pre-commit/[email protected]
test:
name: Test (Python ${{ matrix.python-version }})
runs-on: ubuntu-latest
permissions:
contents: read
needs:
- lint
strategy:
fail-fast: false
matrix:
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13', 'pypy3.9', 'pypy3.10']
steps:
-
uses: actions/checkout@v4
-
name: Install poppler-utils
run: |
sudo apt-get update
sudo apt-get install --yes --no-install-recommends poppler-utils
-
name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
-
name: Pull Docker images
run: |
docker compose --file tests/docker/docker-compose.ci-test-edge.yml pull --quiet
docker compose --file tests/docker/docker-compose.ci-test.yml pull --quiet
-
name: Install Hatch
run: |
pip3 --quiet install --upgrade hatch uv
hatch --version
uv --version
-
name: Show environment
run: |
hatch test --show --python ${{ matrix.python-version }}
-
name: Run tests
run: |
hatch test --cover --junitxml=junit.xml -o junit_family=legacy --python ${{ matrix.python-version }}
-
name: Upload coverage to Codecov
if: matrix.python-version == '3.11'
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
-
name: Upload test results to Codecov
if: ${{ !cancelled() }}
uses: codecov/test-results-action@v1
with:
token: ${{ secrets.CODECOV_TOKEN }}
flags: ${{ matrix.python-version }}
test-edge:
name: Test Gotenberg :edge
runs-on: ubuntu-latest
permissions:
contents: read
needs:
- lint
env:
GOTENBERG_CLIENT_EDGE_TEST: 1
steps:
-
uses: actions/checkout@v4
-
name: Install poppler-utils
run: |
sudo apt-get update
sudo apt-get install --yes --no-install-recommends poppler-utils
-
name: Set up Python 3.11
uses: actions/setup-python@v5
with:
python-version: "3.11"
cache: 'pip'
-
name: Install Hatch
run: |
python3 -m pip install --upgrade pip
pip install --upgrade hatch
-
name: Show environment
run: |
hatch test --show --python 3.11
-
name: Run tests
run: |
hatch test --cover --python 3.11
build:
name: Build
runs-on: ubuntu-latest
permissions:
contents: read
needs:
- lint
steps:
-
uses: actions/checkout@v4
-
name: Set up Python 3.10
uses: actions/setup-python@v5
with:
python-version: '3.10'
cache: 'pip'
-
name: Install Hatch
run: |
pip3 --quiet install --upgrade hatch uv
hatch --version
uv --version
-
name: Build
run: |
hatch build --clean
-
uses: actions/upload-artifact@v4
with:
name: artifacts
path: dist/*
if-no-files-found: error
retention-days: 7
documentation:
name: Documentation
runs-on: ubuntu-latest
permissions:
contents: write
needs:
- lint
steps:
-
uses: actions/checkout@v4
-
name: Set up Python 3.10
uses: actions/setup-python@v5
with:
python-version: '3.10'
cache: 'pip'
-
name: Install Hatch
run: |
pip3 --quiet install --upgrade hatch
-
name: Build Documentation
run: |
hatch run docs:build
-
uses: actions/upload-artifact@v4
with:
name: documentation
path: site/*
if-no-files-found: error
retention-days: 7
-
name: Configure Git user
if: startsWith(github.ref, 'refs/tags/')
run: |
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
-
name: Fetch gh-pages
if: startsWith(github.ref, 'refs/tags/')
run: |
git fetch origin gh-pages --depth=1
-
name: Deploy documentation
if: startsWith(github.ref, 'refs/tags/')
run: |
hatch run docs:deploy ${{ github.ref_name }}
create-release:
name: Release
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
permissions:
contents: write
needs:
- build
- test
- documentation
steps:
-
uses: actions/checkout@v4
-
uses: actions/download-artifact@v4
with:
name: artifacts
path: dist
-
name: Get latest release info
id: query-release-info
uses: release-flow/keep-a-changelog-action@v3
with:
command: query
version: ${{ github.ref_name }}
-
name: Display release info
run: |
echo "Version: ${{ steps.query-release-info.outputs.version }}"
echo "Date: ${{ steps.query-release-info.outputs.release-date }}"
echo "${{ steps.query-release-info.outputs.release-notes }}"
-
uses: ncipollo/release-action@v1
with:
artifacts: "dist/*.tar.gz,dist/*.whl"
body: ${{ steps.query-release-info.outputs.release-notes }}
pypi-publish:
name: Publish
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
permissions:
id-token: write # IMPORTANT: this permission is mandatory for trusted publishing
needs:
- build
- test
- documentation
steps:
-
uses: actions/download-artifact@v4
with:
name: artifacts
path: dist
-
name: Publish build to PyPI
uses: pypa/[email protected]