Skip to content

Complete Phase 3 validation #22

Complete Phase 3 validation

Complete Phase 3 validation #22

Workflow file for this run

name: CI
on:
push:
pull_request:
permissions:
contents: read
jobs:
backend:
runs-on: ubuntu-latest
defaults:
run:
working-directory: backend
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
with:
python-version: "3.13"
- run: pip install -e ".[dev]"
- run: ruff check app tests
- run: pytest
frontend:
runs-on: ubuntu-latest
defaults:
run:
working-directory: frontend
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: 22
cache: npm
cache-dependency-path: frontend/package-lock.json
- run: npm ci
- run: npm audit --audit-level=high
- run: npm run lint
- run: npm run check
- run: npm run test
- run: npm run build
container:
runs-on: ubuntu-latest
needs: [backend, frontend]
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
- run: docker build -t reddock:ci .
- run: docker run -d --name reddock -p 8080:8080 reddock:ci
- name: Wait for the health endpoint
run: for attempt in {1..12}; do curl --fail http://localhost:8080/api/health && exit 0; sleep 2; done; exit 1
- name: Phase 1 discovery smoke test
# Scans the container's own loopback interface only; no external host is contacted.
run: python3 scripts/smoke_test.py
- if: always()
run: docker logs reddock