Skip to content

CI

CI #2368

Workflow file for this run

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
});