Skip to content

Just for testing

Just for testing #1142

Workflow file for this run

name: testing
on:
push:
branches:
- develop
pull_request:
# Cancel running workflows when additional changes are pushed
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#example-using-a-fallback-value
concurrency:
group: ${{ github.head_ref || github.run_id }}
cancel-in-progress: true
permissions:
contents: read
packages: write
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/setup-python@v6
with:
python-version: '3.10'
cache: pip
cache-dependency-path: pyproject.toml
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements/requirements.txt
pip install .[dev]
- name: Lint
run: pre-commit run --all-files --show-diff-on-failure
build-test-bench:
name: "Build test bench containers"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build test bench container
uses: docker/bake-action@v6
with:
load: true
push: false
files: tests/integration/dockerfiles/docker-bake.hcl
set: |
*.cache-to=type=gha,scope=global,mode=max
*.cache-from=type=gha,scope=global
test:
services:
local_mongodb:
image: mongo:5.0
ports:
- 27017:27017
needs: [build-test-bench]
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ['3.9', '3.10', '3.11', '3.12']
steps:
- uses: actions/checkout@v5
- uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
cache: pip
cache-dependency-path: pyproject.toml
- name: Install mongo-tools
run: |
wget https://fastdl.mongodb.org/tools/db/mongodb-database-tools-ubuntu2204-x86_64-100.10.0.deb
sudo apt install ./mongodb-database-tools-*-100.10.0.deb
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: List images
run: docker images
- name: Load test bench containers
uses: docker/bake-action@v6
with:
load: true
push: false
files: tests/integration/dockerfiles/docker-bake.hcl
set: |
*.cache-to=type=gha,scope=global,mode=max
*.cache-from=type=gha,scope=global
- name: List images
run: docker images
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements/requirements.txt
pip install .[tests]
- name: Unit tests
run: |
COVERAGE_FILE=.coverage-unit \
pytest -m unit \
--pytest-durations-min=1 \
--cov=jobflow_remote --cov-report= --cov-config=pyproject.toml
- name: Database tests
run: |
COVERAGE_FILE=.coverage-db \
pytest -m db \
--pytest-durations-min=1 \
--cov=jobflow_remote --cov-report= --cov-config=pyproject.toml
- name: Full integration tests
run: |
COVERAGE_FILE=.coverage-integration \
pytest -m integration \
--pytest-durations-min=1 \
--cov=jobflow_remote --cov-report= --cov-config=pyproject.toml
- name: Upload coverage files as artifact for coverage upload job
uses: actions/upload-artifact@v4
with:
name: coverage-files-artifact-${{ matrix.python-version }}
if-no-files-found: error
include-hidden-files: true # Needed even if passing explicitly the hidden files!
path: .coverage*
- name: Upload DB dump
if: failure()
uses: actions/upload-artifact@v4
with:
name: db_dump_${{ matrix.python-version }}
path: test_folder
generate-codecov-matrix:
runs-on: ubuntu-latest
needs: test
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- uses: actions/checkout@v5
- uses: actions/setup-python@v6
with:
python-version: '3.12'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install pyyaml
- name: Generate matrix from YAML
id: set-matrix
run: |
python3 -c "import yaml, json
with open('tests/coverage-flags.yml') as f:
data = yaml.safe_load(f)
matrix = {'include':[{'codecov-flag': k, 'coverage-files': ' '.join(v)} for k,v in data.items()]}
print(f'matrix={json.dumps(matrix)}')
" >> $GITHUB_OUTPUT
codecov-upload:
name: Upload coverage to Codecov
runs-on: ubuntu-latest
needs: [test, generate-codecov-matrix]
strategy:
matrix: ${{fromJSON(needs.generate-codecov-matrix.outputs.matrix)}}
steps:
- uses: actions/checkout@v5
- uses: actions/setup-python@v6
with:
python-version: '3.12'
cache: pip
cache-dependency-path: pyproject.toml
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements/requirements.txt
pip install .[tests]
- name: Get files from artifact
uses: actions/download-artifact@v5
with:
name: coverage-files-artifact-3.12
- name: Codecov upload
uses: ./.github/actions/codecov-upload-action
with:
codecov-token: ${{ secrets.CODECOV_TOKEN }}
codecov-flag: ${{ matrix.codecov-flag }}
coverage-files: ${{ matrix.coverage-files }}
docs:
name: Build documentation
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v5
with:
submodules: true
fetch-depth: 0
- name: Set up Python 3.11
uses: actions/setup-python@v6
with:
python-version: '3.11'
- name: Install docs dependencies
run: |
python -m pip install -U pip
pip install -U setuptools wheel
# Required to generate rst files from markdown
sudo apt install pandoc
pip install -r requirements/requirements.txt
pip install .[docs]
- name: Build Sphinx docs
working-directory: doc
run: |
# cannot use sphinx build directly as the makefile handles generation
# of some rst files
make html