Signatures improvments #2589
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: Unit tests and release | |
on: | |
push: | |
branches: [ master ] | |
tags: | |
- '*' | |
pull_request: | |
branches: [ master ] | |
permissions: | |
contents: read | |
jobs: | |
unit_tests: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
python-version: ['pypy-3.8', 'pypy-3.9', 'pypy-3.10', | |
'3.8', '3.9', '3.10', '3.11', '3.12', '3.13.0-rc.2'] | |
os: [ubuntu-latest, windows-latest, macos-latest] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install tox | |
run: | | |
python -m pip install --upgrade pip tox | |
- name: Log system information | |
run: | | |
test -r /etc/os-release && sh -c '. /etc/os-release && echo "OS: $PRETTY_NAME"' | |
python --version | |
python -c "print('\nENVIRONMENT VARIABLES\n=====================\n')" | |
python -c "import os; [print(f'{k}={v}') for k, v in os.environ.items()]" | |
- name: Run unit tests | |
run: | | |
tox -e test | |
- name: Run unit tests with latest Twisted version | |
run: | | |
tox -e test-latest-twisted | |
- name: Publish code coverage | |
uses: codecov/codecov-action@v4 | |
with: | |
fail_ci_if_error: true | |
files: ./coverage.xml | |
name: unit-${{ matrix.os }}-${{matrix.python-version}} | |
# Check the secret defined in GHA here | |
# https://github.com/twisted/pydoctor/settings/secrets/actions | |
# And get it from Codecov.io here | |
# https://app.codecov.io/gh/twisted/pydoctor/settings | |
token: ${{ secrets.CODECOV_TOKEN }} | |
verbose: true | |
release: | |
needs: [unit_tests] | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
# The `id-token` permission is mandatory for trusted publishing | |
# See https://github.com/pypa/gh-action-pypi-publish | |
id-token: write | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: 3.12 | |
- name: Log system information | |
run: | | |
test -r /etc/os-release && sh -c '. /etc/os-release && echo "OS: $PRETTY_NAME"' | |
python --version | |
python -c "print('\nENVIRONMENT VARIABLES\n=====================\n')" | |
python -c "import os; [print(f'{k}={v}') for k, v in os.environ.items()]" | |
- name: Install deps | |
run: | | |
python -m pip install --upgrade pip setuptools wheel | |
- name: Build pydoctor | |
run: | | |
python setup.py --quiet build check sdist bdist_wheel | |
ls -alh ./dist/ | |
- name: Publish to PyPI - on tag | |
if: startsWith(github.ref, 'refs/tags/') | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
# This is a meta-job to simplify PR CI enforcement configuration in GitHub. | |
# Inside the GitHub config UI you only configure this job as required. | |
# All the extra requirements are defined "as code" as part of the `needs` | |
# list for this job. | |
gha-required: | |
name: GHA Required | |
runs-on: ubuntu-latest | |
# The `if` condition is very important. | |
# If not set, the job will be skipped on failing dependencies. | |
if: ${{ !cancelled() }} | |
needs: | |
# This is the list of CI job that we are interested to pass before | |
# a merge. | |
# pypi-publish is skipped since this is only executed for a tag. | |
- unit_tests | |
steps: | |
- name: Require all successes | |
uses: re-actors/alls-green@3a2de129f0713010a71314c74e33c0e3ef90e696 | |
with: | |
jobs: ${{ toJSON(needs) }} |