Skip to content

Introduce database migrations #1986

Introduce database migrations

Introduce database migrations #1986

Workflow file for this run

---
name: "Test"
on:
pull_request:
push:
branches:
- "main"
jobs:
tox:
name: "Test ${{ matrix.toxenv }}"
runs-on: ubuntu-24.04
strategy:
matrix:
include:
- python-version: "3.10"
toxenv: "py310"
- python-version: "3.11"
toxenv: "py311"
- python-version: "3.12"
toxenv: "py312"
- python-version: "3.13"
toxenv: "py313"
- python-version: "3.14"
toxenv: "py314"
steps:
- name: "Check out repository"
uses: "actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8" # v5.0.0
- name: "Set up Python ${{ matrix.python-version }}"
uses: "actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c" # v6.0.0
with:
python-version: "${{ matrix.python-version }}"
- name: "Install OS packages"
run: |
sudo apt-get --quiet update
sudo apt-get install --quiet --yes build-essential libxml2-dev libxslt1-dev
- name: "Get pip cache dir"
id: "pip-cache"
run: |
echo "dir=$(pip cache dir)" >> "$GITHUB_OUTPUT"
- name: "Cache pip packages"
uses: "actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830" # v4.3.0
with:
path: "${{ steps.pip-cache.outputs.dir }}"
key: "${{ runner.os }}-pip-${{ hashFiles('**/base.txt', '**/test.txt') }}"
restore-keys: |
${{ runner.os }}-pip-
- name: "Install tox"
run: |
python -m pip install --upgrade pip
pip install tox
- name: "Start integration services"
run: |
docker compose up --detach --wait --wait-timeout 180 --no-deps aipscan-mysql
- name: "Run tox"
env:
TOXENV: ${{ matrix.toxenv }}
run: |
tox -- --cov AIPscan --cov-config .coveragerc --cov-report xml:coverage.xml
- name: "Upload coverage report"
if: ${{ github.repository == 'artefactual-labs/AIPscan' && !contains(github.event.head_commit.message, '[skip codecov]') && !contains(github.event.head_commit.message, '[skip-codecov]') }}
uses: "codecov/codecov-action@5a1091511ad55cbe89839c7260b706298ca349f7" # v5.5.1
env:
CODECOV_TOKEN: "${{ secrets.CODECOV_TOKEN }}"
with:
files: ./coverage.xml
fail_ci_if_error: true
verbose: true
name: ${{ matrix.toxenv }}
flags: ${{ matrix.toxenv }}
- name: "Stop integration services"
if: ${{ always() }}
run: |
docker compose down --volumes
lint:
name: "Lint"
runs-on: ubuntu-24.04
steps:
- name: "Check out repository"
uses: "actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8" # v5.0.0
- name: "Set up Python"
uses: "actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c" # v6.0.0
with:
python-version: "3.12"
- name: "Install tox"
run: |
python -m pip install --upgrade pip
pip install tox
- name: "Run tox"
run: |
tox -e linting
migration-check:
name: "Migration drift"
runs-on: ubuntu-24.04
steps:
- name: "Check out repository"
uses: "actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8" # v5.0.0
- name: "Start MySQL"
run: docker compose up --detach --wait --wait-timeout 180 --no-deps aipscan-mysql
- name: "Upgrade and check migrations"
run: docker compose run --rm --no-deps aipscan-migrate bash -c "flask db upgrade && flask db check"
- name: "Tear down services"
if: ${{ always() }}
run: docker compose down --volumes