Skip to content

Try explicitly installing newer PyPy in CI. #4255

Try explicitly installing newer PyPy in CI.

Try explicitly installing newer PyPy in CI. #4255

Workflow file for this run

name: CI
on:
push:
branches-ignore:
- "wip*"
tags:
- "v*"
pull_request:
schedule:
# Daily at 3:21
- cron: "21 3 * * *"
workflow_dispatch:
permissions: {}
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
jobs:
list:
name: List nox sessions
runs-on: ubuntu-latest
outputs:
noxenvs: ${{ steps.noxenvs-matrix.outputs.noxenvs }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Set up uv
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b
with:
enable-cache: ${{ github.ref_type != 'tag' }} # zizmor: ignore[cache-poisoning]
- id: noxenvs-matrix
run: |
echo >>$GITHUB_OUTPUT noxenvs=$(
uvx nox --list-sessions --json | jq '[.[].session]'
)
ci:
name: Test
needs: list
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [macos-latest, ubuntu-latest, windows-latest]
noxenv: ${{ fromJson(needs.list.outputs.noxenvs) }}
posargs: [""]
include:
- os: ubuntu-latest
noxenv: "tests-3.14(format)"
posargs: coverage github
- os: ubuntu-latest
noxenv: "tests-3.14(no-extras)"
posargs: coverage github
exclude:
- os: macos-latest
noxenv: "docs(dirhtml)"
- os: macos-latest
noxenv: "docs(doctest)"
- os: macos-latest
noxenv: "docs(linkcheck)"
- os: macos-latest
noxenv: "docs(man)"
- os: macos-latest
noxenv: "docs(spelling)"
- os: macos-latest
noxenv: "docs(style)"
- os: windows-latest
noxenv: "docs(dirhtml)"
- os: windows-latest
noxenv: "docs(doctest)"
- os: windows-latest
noxenv: "docs(linkcheck)"
- os: windows-latest
noxenv: "docs(spelling)"
- os: windows-latest
noxenv: "docs(style)"
- os: windows-latest
noxenv: "tests-3.14(no-extras)"
- os: windows-latest
noxenv: "tests-3.14(format)"
- os: windows-latest
noxenv: "tests-3.14(format-nongpl)"
- os: windows-latest
noxenv: "tests-3.14t(no-extras)"
- os: windows-latest
noxenv: "tests-3.14t(format)"
- os: windows-latest
noxenv: "tests-3.14t(format-nongpl)"
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Install dependencies
run: sudo apt-get update && sudo apt-get install -y libenchant-2-dev
if: runner.os == 'Linux' && startsWith(matrix.noxenv, 'docs')
- name: Install dependencies
run: brew install enchant
if: runner.os == 'macOS' && startsWith(matrix.noxenv, 'docs')
- name: Set up Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
with:
python-version: |
3.10
3.11
3.12
3.13
3.14
3.14t
pypy-3.11-v7.3.22
allow-prereleases: true
- name: Enable UTF-8 on Windows
run: echo "PYTHONUTF8=1" >> $env:GITHUB_ENV
if: runner.os == 'Windows' && startsWith(matrix.noxenv, 'tests')
- name: Set up uv
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b
with:
enable-cache: ${{ github.ref_type != 'tag' }} # zizmor: ignore[cache-poisoning]
- name: Run nox
run: uvx nox -s "${{ matrix.noxenv }}" -- ${{ matrix.posargs }} # zizmor: ignore[template-injection]
packaging:
name: Build and publish
needs: ci
runs-on: ubuntu-latest
environment:
name: PyPI
url: https://pypi.org/p/jsonschema
permissions:
contents: write # for creating GitHub releases via `gh release create`
id-token: write # for trusted publishing to PyPI
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
fetch-depth: 0
persist-credentials: false
- name: Set up uv
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b
with:
enable-cache: ${{ github.ref_type != 'tag' }} # zizmor: ignore[cache-poisoning]
- name: Build our distributions
run: uv run --frozen --with 'build[uv]' -m build --installer=uv
- name: Publish to PyPI
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags')
uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b
- name: Create a GitHub Release
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags')
env:
GH_TOKEN: ${{ github.token }}
run: gh release create "${GITHUB_REF_NAME}" dist/* --generate-notes