[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/mirror81/GitPython/main/.github/workflows/pythonpackage.yml [Back]  [Original]

# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions

name: Python package

on:
  push:
    branches: [main]
  pull_request:
  workflow_dispatch:

permissions:
  contents: read

jobs:
  test:
    name: test (${{ matrix.os-type }}, ${{ matrix.python-version }}${{ matrix.backend == 'gix' && ', gix' || '' }})
    strategy:
      matrix:
        os-type: [ubuntu, macos, windows]
        python-version: ["3.11", "3.12", "3.13", "3.14", "3.14t", "3.15", "3.15t"]
        backend: [cli]
        exclude:
        - os-type: macos
          python-version: "3.14t"
        - os-type: macos
          python-version: "3.15t"
        include:
        - build-docs: true  # We ensure documentation builds, except on very old interpreters.
        - experimental: false
        - python-version: "3.15"
          experimental: true
        - python-version: "3.15t"
          experimental: true
        - os-type: ubuntu
          python-version: "3.12"
          backend: gix
          build-docs: false
          experimental: false
        - os-type: macos
          python-version: "3.12"
          backend: gix
          build-docs: false
          experimental: false
        - os-type: windows
          python-version: "3.12"
          backend: gix
          build-docs: false
          experimental: false

      fail-fast: false

    runs-on: ${{ matrix.os-type }}-latest
    env:
      GIT_PYTHON_BACKEND: ${{ matrix.backend }}

    defaults:
      run:
        shell: bash --noprofile --norc -exo pipefail {0}

    steps:
    - uses: actions/checkout@v7
      with:
        fetch-depth: 0

    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v7
      with:
        python-version: ${{ matrix.python-version }}
        allow-prereleases: ${{ matrix.experimental }}
        cache: pip
        cache-dependency-path: |
          pyproject.toml
          requirements.txt
          test-requirements.txt
          gix-requirements.txt

    - name: Prepare Rust for GixPython source builds
      id: rust
      run: |
        # GixPython 0.3.0 publishes macOS wheels only and needs Rust >= 1.89.
        rustup toolchain install stable --profile minimal
        rustup default stable
        rustc --version
        echo "version=$(rustc --version)" >> "$GITHUB_OUTPUT"

    - name: Cache GixPython Cargo dependencies and build output
      uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
      with:
        path: |
          ~/.cargo/registry
          ~/.cargo/git
          ${{ runner.temp }}/gix-target
        key: gix-${{ runner.os }}-${{ runner.arch }}-py${{ matrix.python-version }}-${{ steps.rust.outputs.version }}-${{ hashFiles('gix-requirements.txt') }}
        restore-keys: |
          gix-${{ runner.os }}-${{ runner.arch }}-py${{ matrix.python-version }}-${{ steps.rust.outputs.version }}-

    - name: Set up WSL (Windows)
      if: matrix.os-type == 'windows'
      uses: Vampire/setup-wsl@v7.2.0
      with:
        wsl-version: 1

    - name: Install current Git (Linux)
      if: matrix.os-type == 'ubuntu'
      run: |
        sudo add-apt-repository --yes ppa:git-core/ppa
        sudo apt-get update
        sudo apt-get install --yes git

    - name: Install current Git (macOS)
      if: matrix.os-type == 'macos'
      run: |
        brew install git
        echo "$(brew --prefix git)/bin" >> "$GITHUB_PATH"

    - name: Prepare this repo for tests
      run: |
        ./init-tests-after-clone.sh

    - name: Set git user identity and command aliases for the tests
      run: |
        git config --global user.email "travis@ci.com"
        git config --global user.name "Travis Runner"
        # If we rewrite the user's config by accident, we will mess it up
        # and cause subsequent tests to fail
        cat test/fixtures/.gitconfig >> ~/.gitconfig

    - name: Update PyPA packages
      run: |
        python -m pip install -U pip 'setuptools; python_version

Web Proxy Viewer  |  New URL  |  Original Page