diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7b58e938..17e6628a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -2,9 +2,13 @@ name: CI on: push: - branches: [ main ] + branches: [main] pull_request: - branches: [ main ] + branches: [main] + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true permissions: contents: read @@ -17,67 +21,63 @@ jobs: matrix: os: [ubuntu-latest, macos-latest, windows-latest] python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] - include: - os: ubuntu-latest python-version: "3.13" coverage: true steps: - - name: Harden the runner (Audit all outbound calls) - uses: step-security/harden-runner@ec9f2d5744a09debf3a187a3f4f675c53b671911 # v2.13.0 - with: - egress-policy: audit - - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - name: Harden the runner (Audit all outbound calls) + uses: step-security/harden-runner@ec9f2d5744a09debf3a187a3f4f675c53b671911 # v2.13.0 + with: + egress-policy: audit - - name: Set up Python - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 - with: - python-version: ${{ matrix.python-version }} + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - name: Locate pip cache - id: pip-cache - shell: bash - run: echo "dir=$(python -m pip cache dir)" >> "$GITHUB_OUTPUT" + - name: Set up Python + uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 + with: + python-version: ${{ matrix.python-version }} + cache: 'pip' - - name: Cache pip - uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 - with: - path: ${{ steps.pip-cache.outputs.dir }} - key: ${{ runner.os }}-pip-${{ hashFiles('pyproject.toml') }} - restore-keys: ${{ runner.os }}-pip- + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python -m pip install ".[dev,server]" - - name: Install dependencies - run: | - python -m pip install --upgrade pip - python -m pip install ".[dev,server]" + - name: Cache pytest results + uses: actions/cache@v4 + with: + path: .pytest_cache + key: ${{ runner.os }}-pytest-${{ matrix.python-version }}-${{ hashFiles('**/pytest.ini') }} + restore-keys: | + ${{ runner.os }}-pytest-${{ matrix.python-version }}- - - name: Run tests - if: ${{ matrix.coverage != true }} - run: pytest + - name: Run tests + if: ${{ matrix.coverage != true }} + run: pytest - - name: Run tests and collect coverage - if: ${{ matrix.coverage == true }} - run: | - pytest \ - --cov=gitingest \ - --cov=server \ - --cov-branch \ - --cov-report=xml \ - --cov-report=term + - name: Run tests and collect coverage + if: ${{ matrix.coverage == true }} + run: | + pytest \ + --cov=gitingest \ + --cov=server \ + --cov-branch \ + --cov-report=xml \ + --cov-report=term - - name: Upload coverage to Codecov - if: ${{ matrix.coverage == true }} - uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3 - with: - token: ${{ secrets.CODECOV_TOKEN }} - files: coverage.xml - flags: ${{ matrix.os }}-py${{ matrix.python-version }} - name: codecov-${{ matrix.os }}-${{ matrix.python-version }} - fail_ci_if_error: true - verbose: true + - name: Upload coverage to Codecov + if: ${{ matrix.coverage == true }} + uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3 + with: + token: ${{ secrets.CODECOV_TOKEN }} + files: coverage.xml + flags: ${{ matrix.os }}-py${{ matrix.python-version }} + name: codecov-${{ matrix.os }}-${{ matrix.python-version }} + fail_ci_if_error: true + verbose: true - - name: Run pre-commit hooks - uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # v3.0.1 - if: ${{ matrix.python-version == '3.13' && matrix.os == 'ubuntu-latest' }} + - name: Run pre-commit hooks + uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # v3.0.1 + if: ${{ matrix.python-version == '3.13' && matrix.os == 'ubuntu-latest' }}