Skip to content

Update dependencies #1083

Update dependencies

Update dependencies #1083

Workflow file for this run

name: PR checks
on:
pull_request:
branches: [main]
jobs:
test:
name: Test
runs-on: ubuntu-latest
strategy:
matrix:
service: [api-full, api-simulation, api-tagger]
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.13'
- name: Install uv
uses: astral-sh/setup-uv@v3
with:
enable-cache: true
- name: Install dependencies
run: |
cd projects/policyengine-${{ matrix.service }}
uv sync --extra test
- name: Run tests
run: |
cd projects/policyengine-${{ matrix.service }}
uv run pytest tests/ -v
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.13'
- name: Install uv
uses: astral-sh/setup-uv@v3
- name: Install ruff
run: uv tool install ruff
- name: Run ruff format check
run: |
for dir in projects/*/src libs/*/src; do
if [ -d "$dir" ]; then
echo "Checking format in $dir..."
uv run ruff format --check $dir
fi
done
docker-build:
name: Docker build
needs: [test, lint] # Only run if tests and linting pass
runs-on: ubuntu-latest
strategy:
matrix:
service: [api-full, api-simulation, api-tagger]
steps:
- uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build Docker image
uses: docker/build-push-action@v5
with:
context: .
file: projects/policyengine-${{ matrix.service }}/Dockerfile
push: false
tags: policyengine-${{ matrix.service }}:test
cache-from: type=gha
cache-to: type=gha,mode=max
platforms: linux/amd64
test-integration:
name: Test integration
needs: docker-build # Only run if docker builds succeed
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.13'
- name: Install uv
uses: astral-sh/setup-uv@v3
with:
enable-cache: true
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Generate API clients
run: |
./scripts/generate-clients.sh
- name: Start services
run: |
docker compose -f deployment/docker-compose.yml up -d
# Wait for services to be ready
sleep 10
# Check services are responding
for i in {1..30}; do
if curl -f http://localhost:8081/ping/alive && curl -f http://localhost:8082/ping/alive; then
echo "Services are ready!"
break
fi
echo "Waiting for services... (attempt $i/30)"
sleep 2
done
- name: Run integration tests
run: |
cd projects/policyengine-apis-integ
uv sync --extra test
# Run tests that don't require GCP credentials
uv run pytest tests/ -v -m "not requires_gcp"
- name: Show service logs on failure
if: failure()
run: |
docker compose -f deployment/docker-compose.yml logs
- name: Stop services
if: always()
run: |
docker compose -f deployment/docker-compose.yml down