CI #2368
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: | |
release: | |
types: [published] | |
schedule: | |
# Daily at 3:21 | |
- cron: '21 3 * * *' | |
jobs: | |
pre-commit: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: "3.11" | |
- uses: pre-commit/action@v3.0.0 | |
ci: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [macos-latest, ubuntu-latest, windows-latest] | |
python-version: | |
- name: pypy-3.9 | |
toxenv: pypy3-noextra-build | |
- name: pypy-3.9 | |
toxenv: pypy3-noextra-tests | |
- name: pypy-3.9 | |
toxenv: pypy3-format-build | |
- name: pypy-3.9 | |
toxenv: pypy3-format-tests | |
- name: pypy-3.9 | |
toxenv: pypy3-formatnongpl-build | |
- name: pypy-3.9 | |
toxenv: pypy3-formatnongpl-tests | |
- name: 3.8 | |
toxenv: py38-noextra-build | |
- name: 3.8 | |
toxenv: py38-noextra-tests | |
- name: 3.8 | |
toxenv: py38-format-build | |
- name: 3.8 | |
toxenv: py38-format-tests | |
- name: 3.8 | |
toxenv: py38-formatnongpl-build | |
- name: 3.8 | |
toxenv: py38-formatnongpl-tests | |
- name: 3.9 | |
toxenv: py39-noextra-build | |
- name: 3.9 | |
toxenv: py39-noextra-tests | |
- name: 3.9 | |
toxenv: py39-format-build | |
- name: 3.9 | |
toxenv: py39-format-tests | |
- name: 3.9 | |
toxenv: py39-formatnongpl-build | |
- name: 3.9 | |
toxenv: py39-formatnongpl-tests | |
- name: "3.10" | |
toxenv: py310-noextra-build | |
- name: "3.10" | |
toxenv: py310-noextra-tests | |
- name: "3.10" | |
toxenv: py310-format-build | |
- name: "3.10" | |
toxenv: py310-format-tests | |
- name: "3.10" | |
toxenv: py310-formatnongpl-build | |
- name: "3.10" | |
toxenv: py310-formatnongpl-tests | |
- name: "3.11" | |
toxenv: py311-noextra-build | |
- name: "3.11" | |
toxenv: py311-noextra-tests | |
- name: "3.11" | |
toxenv: py311-format-build | |
- name: "3.11" | |
toxenv: py311-format-tests | |
- name: "3.11" | |
toxenv: py311-formatnongpl-build | |
- name: "3.11" | |
toxenv: py311-formatnongpl-tests | |
- name: "3.11" | |
toxenv: docs-dirhtml | |
- name: "3.11" | |
toxenv: docs-doctest | |
- name: "3.11" | |
toxenv: docs-linkcheck | |
- name: "3.11" | |
toxenv: docs-spelling | |
- name: "3.11" | |
toxenv: docs-style | |
- name: "3.11" | |
toxenv: readme | |
- name: "3.11" | |
toxenv: secrets | |
- name: "3.11" | |
toxenv: style | |
- name: "3.11" | |
toxenv: typing | |
include: | |
- os: ubuntu-latest | |
python-version: | |
name: "3.11" | |
toxenv: py311-format-ghcoverage | |
- os: ubuntu-latest | |
python-version: | |
name: "3.11" | |
toxenv: py311-noextra-ghcoverage | |
- os: ubuntu-latest | |
python-version: | |
name: "3.11" | |
toxenv: format-audit | |
- os: ubuntu-latest | |
python-version: | |
name: "3.11" | |
toxenv: formatnongpl-audit | |
- os: ubuntu-latest | |
python-version: | |
name: "3.11" | |
toxenv: noextra-audit | |
exclude: | |
- os: windows-latest | |
python-version: | |
name: "3.11" | |
toxenv: readme | |
- os: windows-latest | |
python-version: | |
name: "3.11" | |
toxenv: docs-dirhtml | |
- os: windows-latest | |
python-version: | |
name: "3.11" | |
toxenv: docs-doctest | |
- os: windows-latest | |
python-version: | |
name: "3.11" | |
toxenv: docs-linkcheck | |
- os: windows-latest | |
python-version: | |
name: "3.11" | |
toxenv: docs-spelling | |
- os: windows-latest | |
python-version: | |
name: "3.11" | |
toxenv: docs-style | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python ${{ matrix.python-version.name }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version.name }} | |
- name: Install dependencies | |
run: > | |
sudo apt-get update && | |
sudo apt-get install -y libenchant-2-dev libxml2-dev libxslt-dev | |
if: runner.os == 'Linux' && startsWith(matrix.python-version.toxenv, 'docs-') | |
- name: Install dependencies | |
run: brew install enchant | |
if: runner.os == 'macOS' && startsWith(matrix.python-version.toxenv, 'docs-') | |
- name: Install tox | |
run: python -m pip install tox | |
- name: Enable UTF-8 on Windows | |
run: echo "PYTHONUTF8=1" >> $env:GITHUB_ENV | |
if: runner.os == 'Windows' && startsWith(matrix.python-version.toxenv, 'py') | |
- name: Run tox | |
run: python -m tox -e "${{ matrix.python-version.toxenv }}" | |
packaging: | |
needs: ci | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: "3.10" | |
- name: Install dependencies | |
run: python -m pip install build | |
- name: Create packages | |
run: python -m build . | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: dist | |
path: dist | |
- name: Publish package | |
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags') | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
user: __token__ | |
password: ${{ secrets.pypi_password }} | |
- name: Create Release Notes | |
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags') | |
uses: actions/github-script@v6 | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
script: | | |
await github.request(`POST /repos/${{ github.repository }}/releases`, { | |
tag_name: "${{ github.ref }}", | |
generate_release_notes: true | |
}); |