name: CI on: push: branches: [main] pull_request: branches: [main] jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.12" - name: Install dependencies run: pip install -e ".[dev]" - name: Ruff check run: ruff check fusionagi/ - name: Mypy run: mypy fusionagi/ --ignore-missing-imports test: runs-on: ubuntu-latest strategy: matrix: python-version: ["3.10", "3.11", "3.12"] steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - name: Install dependencies run: pip install -e ".[dev,api]" - name: Run tests run: pytest tests/ -q --tb=short - name: Check test count run: | count=$(pytest tests/ -q --tb=no 2>&1 | grep -oP '^\d+(?= passed)') echo "Tests passed: $count" if [ "$count" -lt 290 ]; then echo "ERROR: Expected at least 290 tests, got $count" exit 1 fi docker: runs-on: ubuntu-latest needs: [lint, test] if: github.ref == 'refs/heads/main' steps: - uses: actions/checkout@v4 - name: Build Docker image run: docker build -t fusionagi:latest . - name: Verify image run: docker run --rm fusionagi:latest python -c "import fusionagi; print('OK')"