Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(workflows): add reusable pytest actions #3232

Merged
merged 1 commit into from
Oct 29, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
159 changes: 159 additions & 0 deletions .github/workflows/gn-module-pytest.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,159 @@
name: Run pytest against GeoNature module

on:
workflow_call:
inputs:
geonature_ref:
description: "La branche, tag ou SHA de GeoNature à utiliser"
default: "master"
required: false
type: string
upload_coverage:
description: "Téléverser la couverture de code sur Codecov"
default: false
required: false
type: boolean
secrets:
codecov_token:
description: "Token pour téléverser sur codecov"
required: false

jobs:
build:
runs-on: ubuntu-latest

strategy:
fail-fast: false
matrix:
debian-version: ['11', '12']
include:
- debian-version: '11'
python-version: '3.9'
postgres-version: '13'
postgis-version: '3.2'
- debian-version: '12'
python-version: '3.11'
postgres-version: '15'
postgis-version: '3.3'

name: Debian ${{ matrix.debian-version }}

services:
postgres:
image: postgis/postgis:${{ matrix.postgres-version }}-${{ matrix.postgis-version }}
env:
POSTGRES_DB: geonature2db
POSTGRES_PASSWORD: geonatpasswd
POSTGRES_USER: geonatadmin
ports:
- 5432:5432
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5

env:
MODULE_DIR: ${{ github.workspace }}/extra/${{ github.event.repository.name }}

steps:
- name: Clone GeoNature
uses: actions/checkout@v4
with:
repository: pnx-si/geonature
ref: ${{ inputs.geonature_ref }}
submodules: true
- name: Clone ${{ github.event.repository.name }} module
uses: actions/checkout@v4
with:
path: ${{ env.MODULE_DIR }}
- name: Add database extensions
run: |
psql -h localhost -U geonatadmin -d geonature2db -f install/assets/db/add_pg_extensions.sql
env:
PGPASSWORD: geonatpasswd
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
- name: Install GDAL
run: |
sudo apt update
sudo apt install -y libgdal-dev
- name: Install dependencies
if: github.action_ref == 'master'
run: |
echo 'Installation des requirements de prod'
python -m pip install --upgrade pip
python -m pip install \
-e ..[tests] \
-r requirements.txt
working-directory: ./backend
- name: Install dependencies
if: github.action_ref != 'master'
run: |
echo 'Installation des requirements de dev'
python -m pip install --upgrade pip
python -m pip install \
-e ..[tests] \
-r requirements-dev.txt
working-directory: ./backend
- name: Show database branches and dependencies
run: |
geonature db status --dependencies
env:
GEONATURE_CONFIG_FILE: config/test_config.toml
- name: Install database
run: |
install/03b_populate_db.sh
env:
GEONATURE_CONFIG_FILE: config/test_config.toml
srid_local: 2154
install_bdc_statuts: true
taxref_region: fr
add_sample_data: true
install_sig_layers: true
install_grid_layer_5: true
install_grid_layer_10: true
install_ref_sensitivity: true
- name: Show database status
run: |
geonature db status
env:
GEONATURE_CONFIG_FILE: config/test_config.toml
- name: Install core modules backend
run: |
pip install -e contrib/occtax
pip install -e contrib/gn_module_occhab
pip install -e contrib/gn_module_validation
- name: Install ${{ github.event.repository.name }} module backend
run: |
pip install -e .
working-directory: ${{ env.MODULE_DIR }}
- name: Install modules database
run: |
geonature upgrade-modules-db
env:
GEONATURE_CONFIG_FILE: config/test_config.toml
- name: Show database status
run: |
geonature db status --dependencies
env:
GEONATURE_CONFIG_FILE: config/test_config.toml
- name: Test with pytest
run: |
pytest -v --cov --cov-report xml
working-directory: ${{ env.MODULE_DIR }}
env:
GEONATURE_CONFIG_FILE: ${{ github.workspace }}/config/test_config.toml
- name: Show coverage
run: |
coverage report
working-directory: ${{ env.MODULE_DIR }}
- name: Upload coverage to Codecov
if: ${{ inputs.upload_coverage && matrix.debian-version == '12' }}
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.codecov_token }}
flags: pytest
Empty file added extra/.gitkeep
Empty file.
Loading