name: CI on: push: branches: ["master", "main"] pull_request: concurrency: group: ${{ github.head_ref || github.run_id }} cancel-in-progress: true jobs: tests: strategy: fail-fast: false matrix: os: - ubuntu-latest - windows-latest - macOS-latest name: "pytest ${{ matrix.os }}" runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 - name: Install uv uses: astral-sh/setup-uv@v3 with: enable-cache: "true" - name: Install dependencies run: uv sync - name: Run tests run: uv run pytest -n auto tests docker: strategy: fail-fast: false matrix: script: - name: Basic args: "ci_tool=Gitlab" - name: Celery & DRF args: "use_celery=y use_drf=y" - name: Gulp args: "frontend_pipeline=Gulp" - name: Webpack args: "frontend_pipeline=Webpack" name: "Docker ${{ matrix.script.name }}" runs-on: ubuntu-latest env: DOCKER_BUILDKIT: 1 COMPOSE_DOCKER_CLI_BUILD: 1 steps: - uses: actions/checkout@v4 - name: Install uv uses: astral-sh/setup-uv@v3 with: enable-cache: "true" - name: Install dependencies run: uv sync - name: Docker ${{ matrix.script.name }} run: sh tests/test_docker.sh ${{ matrix.script.args }} bare: strategy: fail-fast: false matrix: script: - name: Celery args: "use_celery=y frontend_pipeline='Django Compressor'" - name: Gulp args: "frontend_pipeline=Gulp" - name: Webpack args: "frontend_pipeline=Webpack use_heroku=y" - name: Email Username args: "username_type=email ci_tool=Github project_name='Something superduper long - the great amazing project' project_slug=my_awesome_project" name: "Bare metal ${{ matrix.script.name }}" runs-on: ubuntu-latest services: redis: image: redis:5.0 ports: - 6379:6379 postgres: image: postgres:12 ports: - 5432:5432 env: POSTGRES_PASSWORD: postgres env: REDIS_URL: "redis://localhost:6379/0" # postgres://user:password@host:port/database DATABASE_URL: "postgres://postgres:postgres@localhost:5432/postgres" steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.12" - name: Install uv uses: astral-sh/setup-uv@v3 with: enable-cache: "true" - name: Install dependencies run: uv sync - uses: actions/setup-node@v4 with: node-version: "22" - name: Bare Metal ${{ matrix.script.name }} run: sh tests/test_bare.sh ${{ matrix.script.args }}