Move CI workflow from .github/workflows to .gitea/workflows
CI / lint (push) Canceled after 0s
CI / typecheck (push) Canceled after 0s
CI / unit-tests (push) Canceled after 0s
CI / integration-tests (push) Canceled after 0s
CI / container-build (push) Canceled after 0s
CI / dependency-audit (push) Canceled after 0s
CI / lint (push) Canceled after 0s
CI / typecheck (push) Canceled after 0s
CI / unit-tests (push) Canceled after 0s
CI / integration-tests (push) Canceled after 0s
CI / container-build (push) Canceled after 0s
CI / dependency-audit (push) Canceled after 0s
auroradragon.dev is self-hosted Gitea (v1.27.3) -- confirmed via its public API (/api/v1/version, /api/v1/repos/.../actions/tasks showing zero workflow runs ever recorded). Gitea only reads .gitea/workflows/ by default, not .github/workflows/, so this CI pipeline (lint, typecheck, unit tests, integration tests against real Postgres/Redis, container builds, dependency audit) has never actually executed. Still needs confirming: whether an Actions runner is registered for this repo -- Actions being enabled doesn't guarantee a runner exists to pick up queued jobs. Co-Authored-By: Claude Sonnet 5 <[email protected]>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
a8cb807d56
commit
ec9b1c28e3
@@ -0,0 +1,140 @@
|
||||
name: CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
pull_request:
|
||||
|
||||
env:
|
||||
PYTHON_VERSION: "3.12"
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: ${{ env.PYTHON_VERSION }}
|
||||
cache: pip
|
||||
- run: pip install -e ".[dev]"
|
||||
- run: ruff check app migrations tests
|
||||
|
||||
typecheck:
|
||||
runs-on: ubuntu-latest
|
||||
needs: lint
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: ${{ env.PYTHON_VERSION }}
|
||||
cache: pip
|
||||
- run: pip install -e ".[dev]"
|
||||
- run: mypy app
|
||||
|
||||
unit-tests:
|
||||
runs-on: ubuntu-latest
|
||||
needs: lint
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: ${{ env.PYTHON_VERSION }}
|
||||
cache: pip
|
||||
- run: pip install -e ".[dev]"
|
||||
- run: pytest tests/unit -v
|
||||
|
||||
# Also proves migrations apply cleanly to an empty database (section 27):
|
||||
# this job's Postgres service starts empty, and the first step to touch
|
||||
# it is `alembic upgrade head`.
|
||||
integration-tests:
|
||||
runs-on: ubuntu-latest
|
||||
needs: unit-tests
|
||||
services:
|
||||
postgres:
|
||||
image: postgres:17-alpine
|
||||
env:
|
||||
POSTGRES_USER: aurora
|
||||
POSTGRES_PASSWORD: aurora
|
||||
POSTGRES_DB: aurora_core_test
|
||||
ports: ["5432:5432"]
|
||||
options: >-
|
||||
--health-cmd "pg_isready -U aurora"
|
||||
--health-interval 5s
|
||||
--health-timeout 5s
|
||||
--health-retries 10
|
||||
redis:
|
||||
image: redis:7-alpine
|
||||
ports: ["6379:6379"]
|
||||
options: >-
|
||||
--health-cmd "redis-cli ping"
|
||||
--health-interval 5s
|
||||
--health-timeout 5s
|
||||
--health-retries 10
|
||||
env:
|
||||
DATABASE_URL: postgresql+asyncpg://aurora:aurora@localhost:5432/aurora_core_test
|
||||
DATABASE_URL_SYNC: postgresql+psycopg2://aurora:aurora@localhost:5432/aurora_core_test
|
||||
TEST_DATABASE_URL: postgresql+asyncpg://aurora:aurora@localhost:5432/aurora_core_test
|
||||
REDIS_URL: redis://localhost:6379/0
|
||||
TEST_REDIS_URL: redis://localhost:6379/15
|
||||
AURORA_SECRET_KEY: ci-secret
|
||||
AURORA_ADMIN_API_KEYS: ci-admin-key
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: ${{ env.PYTHON_VERSION }}
|
||||
cache: pip
|
||||
- run: pip install -e ".[dev]"
|
||||
- name: Run migrations against an empty database
|
||||
run: alembic upgrade head
|
||||
- name: Start the API and smoke-test it
|
||||
run: |
|
||||
uvicorn app.main:app --host 0.0.0.0 --port 8000 &
|
||||
for i in $(seq 1 20); do
|
||||
curl -fsS http://localhost:8000/health && break
|
||||
sleep 1
|
||||
done
|
||||
curl -fsS http://localhost:8000/ready
|
||||
curl -fsS "http://localhost:8000/api/v1/search?q=test"
|
||||
kill %1
|
||||
- name: Run integration tests
|
||||
run: pytest tests/integration -v
|
||||
|
||||
container-build:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [typecheck, integration-tests]
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: docker/setup-buildx-action@v3
|
||||
- name: Build API image
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
context: .
|
||||
file: docker/api.Dockerfile
|
||||
push: false
|
||||
tags: aurora-core-api:ci
|
||||
cache-from: type=gha
|
||||
cache-to: type=gha,mode=max
|
||||
- name: Build worker image
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
context: .
|
||||
file: docker/worker.Dockerfile
|
||||
push: false
|
||||
tags: aurora-core-worker:ci
|
||||
cache-from: type=gha
|
||||
cache-to: type=gha,mode=max
|
||||
|
||||
dependency-audit:
|
||||
runs-on: ubuntu-latest
|
||||
needs: lint
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: ${{ env.PYTHON_VERSION }}
|
||||
cache: pip
|
||||
- run: pip install -e "."
|
||||
- run: pip install pip-audit
|
||||
- run: pip-audit --strict
|
||||
Reference in New Issue
Block a user