Replace pre-commit with prek #1586
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: Tests | |
| on: | |
| push: | |
| branches: | |
| - develop | |
| pull_request: | |
| branches-ignore: | |
| - master | |
| workflow_dispatch: | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} | |
| cancel-in-progress: true | |
| env: | |
| DEFAULT_PYTHON: '3.13' | |
| MIN_COVERAGE: 93 | |
| jobs: | |
| tests: | |
| name: Run tests | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Start containers | |
| run: | | |
| docker compose -f docker-compose.test.yml down -v --remove-orphans | |
| docker compose -f docker-compose.test.yml up -d --wait --wait-timeout 60 | |
| - name: Set up Python ${{ env.DEFAULT_PYTHON }} | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: ${{ env.DEFAULT_PYTHON }} | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v7 | |
| - name: Install dependencies | |
| run: | | |
| export UV=$(which uv) | |
| make venv-install | |
| - name: Run Tests | |
| run: | | |
| mkdir -p reports/ | |
| make test-ci | |
| - name: Test database seed script | |
| run: | | |
| make db-seed-ci | |
| - name: Test remove Partitions | |
| run: | | |
| make db-cleanup-partitions-ci ARGS="dry_run --keep-after $(date --date='yesterday' '+%Y-%m-%d')" | |
| make db-cleanup-partitions-ci ARGS="truncate --keep-after $(date --date='yesterday' '+%Y-%m-%d')" | |
| make db-cleanup-partitions-ci ARGS="detach --keep-after $(date --date='-6month' '+%Y-%m-%d')" | |
| make db-cleanup-partitions-ci ARGS="drop --keep-after $(date --date='yesterday' '+%Y-%m-%d')" | |
| - name: Generate OpenAPI Schema | |
| run: | | |
| make docs-openapi | |
| - name: Dump DB logs on failure | |
| if: failure() | |
| uses: jwalton/gh-docker-logs@v2 | |
| with: | |
| images: postgres | |
| dest: ./logs | |
| - name: Upload Coverage Results | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: raw-coverage-${{ env.DEFAULT_PYTHON }} | |
| path: reports/.coverage* | |
| # https://github.com/actions/upload-artifact/issues/602 | |
| include-hidden-files: true | |
| - name: Shutdown containers | |
| if: always() | |
| run: | | |
| docker compose -f docker-compose.test.yml down -v --remove-orphans | |
| - name: Upload DB logs | |
| uses: actions/upload-artifact@v6 | |
| if: failure() | |
| with: | |
| name: db-logs | |
| path: logs/* | |
| all_done: | |
| name: Tests done | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| checks: write | |
| pull-requests: write | |
| if: always() | |
| needs: [tests] | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| - name: Set up Python ${{ env.DEFAULT_PYTHON }} | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: ${{ env.DEFAULT_PYTHON }} | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v7 | |
| - name: Install dependencies | |
| run: | | |
| export UV=$(which uv) | |
| make venv-install | |
| - name: Download all raw coverage data | |
| uses: actions/download-artifact@v7 | |
| with: | |
| path: coverage-data/ | |
| pattern: raw-coverage-* | |
| - name: Combine Coverage Data | |
| run: | | |
| uv run coverage combine coverage-data | |
| uv run coverage xml -o combined_coverage.xml | |
| - name: Coverage comment | |
| id: coverage | |
| uses: MishaKav/pytest-coverage-comment@v1 | |
| with: | |
| pytest-xml-coverage-path: ./combined_coverage.xml | |
| default-branch: develop | |
| xml-skip-covered: true | |
| report-only-changed-files: true | |
| hide-comment: ${{ github.event_name != 'pull_request' }} | |
| - name: Dynamic Badges | |
| uses: schneegans/[email protected] | |
| if: github.repository == 'MobileTeleSystems/data-rentgen' && github.event_name == 'push' | |
| with: | |
| auth: ${{ secrets.AUTOMERGE_TOKEN }} | |
| gistID: 03e73a82ecc4709934540ce8201cc3b4 | |
| filename: data-rentgen_badge.json | |
| label: Coverage | |
| message: ${{ steps.coverage.outputs.coverage }} | |
| color: ${{ steps.coverage.outputs.color }} | |
| - name: Fail if coverage too low | |
| if: ${{ steps.coverage.outputs.coverage < env.MIN_COVERAGE }} | |
| run: | | |
| echo "Coverage is below ${{ env.MIN_COVERAGE }}%!" | |
| exit 1 | |
| - name: All done | |
| run: echo 1 |