name: CI on: push: branches: [master, main] tags: ["v*"] pull_request: branches: [master, main] workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true env: PYTHON_VERSION: "3.12" jobs: test: name: Tests runs-on: ubuntu-latest services: postgres: image: postgres:16-alpine env: POSTGRES_DB: infrasynth POSTGRES_USER: infrasynth POSTGRES_PASSWORD: infrasynth ports: - 5432:5432 options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 redis: image: redis:7-alpine ports: - 6379:6379 options: >- --health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 5 steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: ${{ env.PYTHON_VERSION }} cache: pip - name: Install dependencies run: | pip install --upgrade pip setuptools wheel pip install -e ".[dev]" - name: Run tests run: pytest --cov=infrasynth --cov-report=term-missing -v env: DJANGO_SETTINGS_MODULE: config.settings.test lint: name: Lint runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: ${{ env.PYTHON_VERSION }} - name: Install dependencies run: pip install ruff - name: Run ruff run: ruff check . - name: Check formatting run: ruff format --check infrasynth/ config/ tests/ typecheck: name: Type Check runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: ${{ env.PYTHON_VERSION }} cache: pip - name: Install dependencies run: | pip install --upgrade pip pip install -e ".[dev]" - name: Run mypy run: mypy infrasynth/ docker: name: Docker Build runs-on: ubuntu-latest 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@v6 with: context: . push: false load: true tags: infrasynth-base:ci