2025-12-04 10:04:21 +08:00

69 lines
1.7 KiB
YAML

name: API spec
on:
push:
branches:
- "master"
pull_request:
branches:
- "*"
jobs:
api-spec:
name: API spec tests
runs-on: ubuntu-18.04
strategy:
matrix:
python-version: [3.9]
services:
postgres:
image: postgres:11.5-alpine
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: postgres
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4.2.0
with:
python-version: ${{ matrix.python-version }}
- name: Install Poetry
uses: snok/install-poetry@v1
with:
version: "1.1.12"
virtualenvs-in-project: true
- name: Set up cache
uses: actions/cache@v3
id: cache
with:
path: .venv
key: venv-${{ runner.os }}-py-${{ matrix.python-version }}-poetry-${{ hashFiles('poetry.lock') }}
- name: Ensure cache is healthy
if: steps.cache.outputs.cache-hit == 'true'
run: poetry run pip --version >/dev/null 2>&1 || rm -rf .venv
- name: Install dependencies
run: poetry install --no-interaction
- name: Run newman and test service
env:
SECRET_KEY: secret_key
DATABASE_URL: postgresql://postgres:postgres@localhost/postgres
run: |
poetry run alembic upgrade head
poetry run uvicorn app.main:app &
APIURL=http://localhost:8000/api ./postman/run-api-tests.sh
poetry run alembic downgrade base