build prospect intelligence platform MVP
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
name: CI
|
||||
|
||||
on:
|
||||
push:
|
||||
pull_request:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
compose:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Validate Compose configuration
|
||||
run: docker compose config
|
||||
|
||||
- name: Compile stdlib container code
|
||||
run: python3 -m compileall -q apps/api apps/web
|
||||
|
||||
- name: Run API tests
|
||||
run: python3 -m unittest discover -s apps/api/tests -t apps/api
|
||||
|
||||
- name: Build images
|
||||
run: docker compose build
|
||||
|
||||
- name: Start services
|
||||
run: docker compose up -d
|
||||
|
||||
- name: Wait for healthy services and smoke test
|
||||
run: |
|
||||
set -eu
|
||||
for i in $(seq 1 30); do
|
||||
api_status=$(docker inspect --format '{{.State.Health.Status}}' "$(docker compose ps -q api)")
|
||||
web_status=$(docker inspect --format '{{.State.Health.Status}}' "$(docker compose ps -q web)")
|
||||
if [ "$api_status" = healthy ] && [ "$web_status" = healthy ]; then
|
||||
curl --fail http://localhost:8000/api/v1/health/live
|
||||
curl --fail http://localhost:8080/healthz
|
||||
exit 0
|
||||
fi
|
||||
sleep 2
|
||||
done
|
||||
docker compose ps
|
||||
docker compose logs
|
||||
exit 1
|
||||
|
||||
- name: Tear down
|
||||
if: always()
|
||||
run: docker compose down -v
|
||||
Reference in New Issue
Block a user