[repo-helper] Configuration Update #415
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
# This file is managed by 'repo_helper'. Don't edit it directly. | |
--- | |
name: Linux | |
on: | |
push: | |
branches-ignore: | |
- 'repo-helper-update' | |
- 'pre-commit-ci-update-config' | |
- 'imgbot' | |
tags: | |
- '*' | |
pull_request: | |
permissions: | |
actions: write | |
issues: write | |
contents: read | |
jobs: | |
tests: | |
name: "ubuntu-20.04 / Python ${{ matrix.config.python-version }}" | |
runs-on: "ubuntu-20.04" | |
continue-on-error: ${{ matrix.config.experimental }} | |
env: | |
USING_COVERAGE: '3.7,3.8,3.9,3.10,3.11,3.12,3.13.0-beta.1,pypy-3.7,pypy-3.8,pypy-3.9' | |
strategy: | |
fail-fast: False | |
matrix: | |
config: | |
- {python-version: "3.7", testenvs: "py37-attrs{21.2,21.4,22.2,23.1,23.2,latest},py37-mypy{0.900,0.910,0.921,0.931,1.0.1,1.2.0,1.4.1},py37-sphinx{4,5},build", experimental: False} | |
- {python-version: "3.8", testenvs: "py38-attrs{21.2,21.4,22.2,23.1,23.2,latest},py38-mypy{0.900,0.910,0.921,0.931,1.0.1,1.2.0,1.4.1,1.6.1,latest},py38-sphinx{4,5,6,7},build", experimental: False} | |
- {python-version: "3.9", testenvs: "py39-attrs{21.2,21.4,22.2,23.1,23.2,latest},py39-mypy{0.900,0.910,0.921,0.931,1.0.1,1.2.0,1.4.1,1.6.1,latest},py39-sphinx{4,5,6,7},build", experimental: False} | |
- {python-version: "3.10", testenvs: "py310-attrs{21.2,21.4,22.2,23.1,23.2,latest},py310-mypy{0.900,0.910,0.921,0.931,1.0.1,1.2.0,1.4.1,1.6.1,latest},py310-sphinx{4,5,6,7},build", experimental: False} | |
- {python-version: "3.11", testenvs: "py311-attrs{21.2,21.4,22.2,23.1,23.2,latest},py311-mypy{0.900,0.910,0.921,0.931,1.0.1,1.2.0,1.4.1,1.6.1,latest},py311-sphinx{4,5,6,7},build", experimental: False} | |
- {python-version: "3.12", testenvs: "py312-attrs{21.2,21.4,22.2,23.1,23.2,latest},py312-mypy{0.900,0.910,0.921,0.931,1.0.1,1.2.0,1.4.1,1.6.1,latest},py312-sphinx{4,5,6,7},build", experimental: True} | |
- {python-version: "3.13.0-beta.1", testenvs: "py313-dev-attrs{21.2,21.4,22.2,23.1,23.2,latest},py313-dev-mypy{0.900,0.910,0.921,0.931,1.0.1,1.2.0,1.4.1,1.6.1,latest},py313-dev-sphinx{4,5,6,7},build", experimental: True} | |
- {python-version: "pypy-3.7", testenvs: "pypy37-attrs{21.2,21.4,22.2,23.1,23.2,latest},pypy37-sphinx{4,5},build", experimental: False} | |
- {python-version: "pypy-3.8", testenvs: "pypy38-attrs{21.2,21.4,22.2,23.1,23.2,latest},pypy38-sphinx{4,5,6,7},build", experimental: False} | |
- {python-version: "pypy-3.9", testenvs: "pypy39-attrs{21.2,21.4,22.2,23.1,23.2,latest},pypy39-sphinx{4,5,6,7},build", experimental: True} | |
steps: | |
- name: Checkout ποΈ | |
uses: "actions/checkout@v4" | |
- name: Check for changed files | |
if: startsWith(github.ref, 'refs/tags/') != true | |
uses: dorny/paths-filter@v2 | |
id: changes | |
with: | |
list-files: "json" | |
filters: | | |
code: | |
- '!(doc-source/**|CONTRIBUTING.rst|.imgbotconfig|.pre-commit-config.yaml|.pylintrc|.readthedocs.yml)' | |
- name: Setup Python π | |
id: setup-python | |
if: ${{ steps.changes.outputs.code == 'true' || steps.changes.outcome == 'skipped' }} | |
uses: "actions/setup-python@v5" | |
with: | |
python-version: "${{ matrix.config.python-version }}" | |
- name: Install dependencies π§ | |
if: steps.setup-python.outcome == 'success' | |
run: | | |
python -VV | |
python -m site | |
python -m pip install --upgrade pip setuptools wheel | |
python -m pip install --upgrade tox~=3.0 virtualenv!=20.16.0 | |
python -m pip install --upgrade coverage_pyver_pragma | |
- name: "Run Tests for Python ${{ matrix.config.python-version }}" | |
if: steps.setup-python.outcome == 'success' | |
run: python -m tox -e "${{ matrix.config.testenvs }}" -s false | |
- name: "Upload Coverage π" | |
uses: actions/upload-artifact@v4 | |
if: ${{ always() && steps.setup-python.outcome == 'success' }} | |
with: | |
name: "coverage-${{ matrix.config.python-version }}" | |
path: .coverage | |
Coverage: | |
needs: tests | |
runs-on: "ubuntu-20.04" | |
steps: | |
- name: Checkout ποΈ | |
uses: "actions/checkout@v4" | |
- name: Setup Python π | |
uses: "actions/setup-python@v5" | |
with: | |
python-version: 3.8 | |
- name: Install dependencies π§ | |
run: | | |
python -m pip install --upgrade pip setuptools wheel | |
python -m pip install --upgrade "coveralls>=3.0.0" coverage_pyver_pragma | |
- name: "Download Coverage πͺ" | |
uses: actions/download-artifact@v4 | |
with: | |
path: coverage | |
- name: Display structure of downloaded files | |
id: show | |
run: ls -R | |
working-directory: coverage | |
continue-on-error: true | |
- name: Combine Coverage π· | |
if: ${{ steps.show.outcome != 'failure' }} | |
run: | | |
shopt -s globstar | |
python -m coverage combine coverage/**/.coverage | |
- name: "Upload Combined Coverage Artefact π" | |
if: ${{ steps.show.outcome != 'failure' }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: "combined-coverage" | |
path: .coverage | |
- name: "Upload Combined Coverage to Coveralls" | |
if: ${{ steps.show.outcome != 'failure' }} | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
coveralls --service=github | |
Deploy: | |
needs: tests | |
runs-on: "ubuntu-20.04" | |
steps: | |
- name: Checkout ποΈ | |
uses: "actions/checkout@v4" | |
if: startsWith(github.ref, 'refs/tags/') | |
- name: Setup Python π | |
uses: "actions/setup-python@v5" | |
if: startsWith(github.ref, 'refs/tags/') | |
with: | |
python-version: 3.8 | |
- name: Install dependencies π§ | |
if: startsWith(github.ref, 'refs/tags/') | |
run: | | |
python -m pip install --upgrade pip setuptools wheel | |
python -m pip install --upgrade tox~=3.0 | |
- name: Build distributions π¦ | |
if: startsWith(github.ref, 'refs/tags/') | |
run: | | |
tox -e build | |
- name: Upload distribution to PyPI π | |
if: startsWith(github.ref, 'refs/tags/') | |
uses: pypa/[email protected] | |
with: | |
user: __token__ | |
password: ${{ secrets.PYPI_TOKEN }} | |
skip_existing: true | |
- name: Close milestone πͺ | |
if: startsWith(github.ref, 'refs/tags/') | |
run: | | |
python -m pip install --upgrade github3.py packaging | |
python .github/milestones.py | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
Conda: | |
needs: deploy | |
runs-on: ubuntu-22.04 | |
if: startsWith(github.ref, 'refs/tags/') || (startsWith(github.event.head_commit.message, 'Bump version') != true) | |
steps: | |
- name: Checkout ποΈ | |
uses: "actions/checkout@v4" | |
- name: Setup Python π | |
uses: "actions/setup-python@v5" | |
with: | |
python-version: 3.8 | |
- name: Setup Conda | |
uses: conda-incubator/setup-miniconda@v2 | |
with: | |
activate-environment: env | |
conda-build-version: 3.28.4 | |
python-version: "3.8" | |
miniforge-variant: Mambaforge | |
- name: Install dependencies π§ | |
run: | | |
python -VV | |
python -m site | |
python -m pip install --upgrade pip setuptools wheel | |
python -m pip install --upgrade "mkrecipe" "whey" | |
# $CONDA is an environment variable pointing to the root of the miniconda directory | |
$CONDA/bin/conda config --set always_yes yes --set changeps1 no | |
$CONDA/bin/conda update -n base conda | |
$CONDA/bin/conda info -a | |
$CONDA/bin/conda config --add channels conda-forge | |
$CONDA/bin/conda config --add channels domdfcoding | |
$CONDA/bin/conda config --remove channels defaults | |
- name: Build Conda Package π¦ | |
run: | | |
python -m mkrecipe --type wheel || exit 1 | |
$CONDA/bin/conda build conda -c conda-forge -c domdfcoding --output-folder conda/dist | |
- name: Deploy Conda Package π | |
if: startsWith(github.ref, 'refs/tags/') | |
run: | | |
$CONDA/bin/conda config --set always_yes yes --set changeps1 no | |
$CONDA/bin/conda install anaconda-client | |
$CONDA/bin/conda info -a | |
for f in conda/dist/noarch/attr_utils-*.tar.bz2; do | |
[ -e "$f" ] || continue | |
echo "$f" | |
conda install "$f" || exit 1 | |
echo "Deploying to Anaconda.org..." | |
$CONDA/bin/anaconda -t "$ANACONDA_TOKEN" upload "$f" || exit 1 | |
echo "Successfully deployed to Anaconda.org." | |
done | |
env: | |
ANACONDA_TOKEN: ${{ secrets.ANACONDA_TOKEN }} |