Enable find jobs by fleet_id in backoffice #815
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Fleet mock + MinIO integration tests | |
| on: | |
| pull_request: | |
| merge_group: | |
| permissions: | |
| contents: read | |
| jobs: | |
| verify-fleets: | |
| name: Fleet mock + MinIO integration tests | |
| # Requires FUSE (for s3fs in the fleet-worker container) and privileged Docker. | |
| # Both are available on GitHub-hosted ubuntu-latest; switching runners will | |
| # require either a FUSE-capable image or a non-FUSE worker rewrite. | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: actions/setup-python@v7 | |
| with: | |
| python-version: '3.12' | |
| - name: Install tox | |
| run: pip install tox>=4.0.0 | |
| - name: Build fleet-node base image | |
| # The fleet-worker image is FROM fleet-node:latest, and `compose build` | |
| # does not build FROM-referenced bases, so build it first. | |
| run: docker build --platform linux/amd64 -f docker-images/fleet-node/Dockerfile -t fleet-node:latest . | |
| - name: Build containers | |
| run: docker compose -f docker-compose-fleets-test.yaml build | |
| - name: Start services | |
| run: docker compose -f docker-compose-fleets-test.yaml up -d | |
| - name: Wait for services | |
| run: | | |
| echo "Waiting for gateway..." | |
| curl --retry 30 --retry-delay 2 --retry-all-errors --fail http://localhost:8000/liveness/ | |
| echo "Waiting for scheduler..." | |
| docker compose -f docker-compose-fleets-test.yaml exec -T scheduler python -c "print('scheduler ready')" | |
| echo "Waiting for fleet-worker s3fs mounts..." | |
| timeout 60 bash -c 'until docker compose -f docker-compose-fleets-test.yaml logs fleet-worker | grep -q "s3fs mounts ready"; do sleep 2; done' | |
| - name: Verify CE project provisioned | |
| run: docker compose -f docker-compose-fleets-test.yaml exec -T gateway python manage.py sync_ce_project | |
| - name: Register default compute profile | |
| # A Fleets job resolves to DEFAULT_COMPUTE_PROFILE (normalized to the bare | |
| # form at ingest) and job creation is rejected unless a matching | |
| # ComputeProfile row exists (staging/prod seed these via backoffice, in | |
| # bare notation). Seed the same bare default the integration env uses. | |
| run: >- | |
| docker compose -f docker-compose-fleets-test.yaml exec -T gateway | |
| python manage.py shell -c | |
| "from core.models import ComputeProfile; | |
| ComputeProfile.objects.get_or_create(compute_profile_id='16x128', defaults={'cpu': '16', 'memory': '128'})" | |
| - name: Run fleets integration tests | |
| run: tox -c tests/tox.ini -e py312-fleets | |
| - name: Print logs on failure | |
| if: failure() | |
| run: | | |
| docker compose -f docker-compose-fleets-test.yaml ps -a | |
| docker compose -f docker-compose-fleets-test.yaml logs --tail=300 gateway | |
| docker compose -f docker-compose-fleets-test.yaml logs --tail=100 scheduler | |
| docker compose -f docker-compose-fleets-test.yaml logs --tail=100 fleet-worker | |
| docker compose -f docker-compose-fleets-test.yaml logs --tail=50 postgres | |
| docker compose -f docker-compose-fleets-test.yaml logs --tail=50 minio | |
| - name: Stop services | |
| if: always() | |
| run: docker compose -f docker-compose-fleets-test.yaml down |