Skip to content

Add tests against macOS M-series runners for PRs and wheel builds #95

Add tests against macOS M-series runners for PRs and wheel builds

Add tests against macOS M-series runners for PRs and wheel builds #95

Workflow file for this run

name: CI
on:
workflow_dispatch:
pull_request:
push:
branches:
- main
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
FORCE_COLOR: 3
jobs:
style:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-python@v5
with:
python-version: 3.12
- name: Run style checks
run: pipx run nox -s lint
build_wheels:
needs: [style]
name: Wheels (${{ matrix.runs-on }} / Python ${{ matrix.python-version }})
runs-on: ${{ matrix.runs-on }}
strategy:
fail-fast: false
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
runs-on: [ubuntu-latest, macos-latest, macos-14, windows-latest]
exclude:
- python-version: "3.8"
runs-on: macos-14
- python-version: "3.9"
runs-on: macos-14
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
allow-prereleases: true
- name: Set up Go toolchain
id: setup-go
uses: actions/setup-go@v5
with:
go-version: "1.21.6"
cache: false
check-latest: true
- name: Install MinGW on Windows
if: matrix.runs-on == 'windows-latest'
run: choco install mingw
- name: Restore Hugo builder cache
uses: actions/cache/restore@v4
with:
path: ./hugo_cache/
key: ${{ matrix.runs-on }}-hugo-${{ steps.setup-go.outputs.go-version }}
- name: Install Python dependencies
run: python -m pip install build virtualenv nox
- name: Build binary distribution (wheel)
run: |
python -m build --wheel . --outdir wheelhouse/
- name: Test entry points for package
run: nox -s venv
- name: Save Hugo builder cache
uses: actions/cache/save@v4
with:
path: ./hugo_cache/
key: ${{ runner.os }}-hugo-${{ steps.setup-go.outputs.go-version }}
inspect_distributions:
needs: [style]
name: Inspect ${{ matrix.distribution }} contents
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
distribution: ["sdist", "wheel"]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-python@v5
with:
python-version: 3.12
- name: Build, inspect, and display contents of source distribution (SDist)
if: matrix.distribution == 'sdist'
shell: bash
run: |
pipx run build --sdist . --outdir dist/
pipx run twine check dist/* --strict
mkdir -p output/sdist
tar -xf dist/*.tar.gz -C output/sdist
echo -e '## View source distribution (SDist) contents\n' >> $GITHUB_STEP_SUMMARY
echo -e '```\n' >> $GITHUB_STEP_SUMMARY
(cd output/sdist && tree -a * | sed 's/^/ /' | tee -a $GITHUB_STEP_SUMMARY)
echo -e '\n```\n' >> $GITHUB_STEP_SUMMARY
- name: Build, inspect, and display contents of binary distribution (wheel)
if: matrix.distribution == 'wheel'
shell: bash
run: |
pipx run build --wheel . --outdir wheelhouse/
pipx run twine check wheelhouse/* --strict
mkdir -p output/wheel
pipx run wheel unpack wheelhouse/*.whl -d output/wheel
echo -e '## View binary distribution (wheel) contents\n' >> $GITHUB_STEP_SUMMARY
echo -e '```\n' >> $GITHUB_STEP_SUMMARY
(cd output/wheel && tree -a * | sed 's/^/ /' | tee -a $GITHUB_STEP_SUMMARY)
echo -e '\n```\n' >> $GITHUB_STEP_SUMMARY