Update GitHub actions versions and cache pip downloads (#2231) #1266
This file contains 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: CI | |
on: | |
push: | |
pull_request: | |
branches: | |
- main | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
test: | |
name: Build and test | |
runs-on: windows-2019 | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12-dev'] | |
architecture: ['x64', 'x86'] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
architecture: ${{ matrix.architecture }} | |
cache: pip | |
cache-dependency-path: .github/workflows/main.yml | |
- name: Setup environment | |
run: | | |
python --version | |
pip --version | |
pip install --upgrade setuptools wheel | |
- name: Build and install | |
run: | | |
python setup.py --skip-verstamp install --user | |
- name: Run tests | |
# Run the tests directly from the source dir so support files (eg, .wav files etc) | |
# can be found - they aren't installed into the Python tree. | |
run: python pywin32_testall.py -v -skip-adodbapi | |
- name: Build wheels | |
run: | | |
python setup.py bdist_wheel --skip-build | |
- uses: actions/upload-artifact@v3 | |
if: ${{ always() }} | |
with: | |
name: artifacts | |
path: | | |
dist/*.whl | |
dist/*.exe | |
# We cannot build and test on ARM64, so we cross-compile. | |
# Later, when available, we can add tests using this wheel on ARM64 VMs | |
build_arm64: | |
name: Cross-compile ARM | |
runs-on: windows-2019 | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: ['3.10', '3.11', '3.12-dev'] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
architecture: 'x64' | |
cache: pip | |
cache-dependency-path: .github/workflows/main.yml | |
- name: Setup Environment | |
run: | | |
python --version | |
pip --version | |
pip install --upgrade setuptools wheel | |
- name: Obtain ARM64 library files | |
run: | | |
python .github\workflows\download-arm64-libs.py .\arm64libs | |
- name: Build wheels | |
run: python setup.py --skip-verstamp build_ext -L .\arm64libs --plat-name win-arm64 build --plat-name win-arm64 bdist_wheel --plat-name win-arm64 | |
- uses: actions/upload-artifact@v3 | |
if: ${{ always() }} | |
with: | |
name: artifacts | |
path: |- | |
dist/*.whl | |
# This job can be run locally by running `pre-commit run` | |
checkers: | |
runs-on: windows-2019 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
# This job only needs to target the oldest supported version (black@stable supports Python >=3.8) | |
python-version: '3.8' | |
cache: pip | |
cache-dependency-path: .github/workflows/main.yml | |
- run: pip install pycln | |
- run: pycln . --config=pycln.toml --check | |
- uses: chartboost/ruff-action@v1 | |
with: | |
version: '0.3.4' | |
- uses: psf/black@stable | |
with: | |
options: "--fast --check --diff --verbose" | |
mypy: | |
runs-on: windows-2019 | |
strategy: | |
fail-fast: false | |
matrix: | |
# mypy 1.5 dropped support for Python 3.7 | |
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12'] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
cache: pip | |
cache-dependency-path: .github/workflows/main.yml | |
- run: pip install types-regex types-setuptools mypy==1.9 | |
- run: mypy . --python-version=${{ matrix.python-version }} | |
pyright: | |
runs-on: windows-2019 | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12'] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
cache: pip | |
cache-dependency-path: .github/workflows/main.yml | |
# pyright vendors typeshed, but let's make sure we have the most up to date stubs | |
- run: pip install types-regex types-setuptools | |
- uses: jakebailey/pyright-action@v2 | |
with: | |
python-version: ${{ matrix.python-version }} | |
annotate: errors |