Skip to content

Commit

Permalink
Move CI to Github Actions
Browse files Browse the repository at this point in the history
Signed-off-by: Bernát Gábor <gaborjbernat@gmail.com>
  • Loading branch information
gaborbernat committed Dec 28, 2021
1 parent 717b764 commit ad2acad
Show file tree
Hide file tree
Showing 13 changed files with 307 additions and 406 deletions.
161 changes: 161 additions & 0 deletions .github/workflows/check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,161 @@
name: check
on:
push:
pull_request:
schedule:
- cron: "0 8 * * *"

concurrency:
group: check-${{ github.ref }}
cancel-in-progress: true

jobs:
test:
name: test ${{ matrix.py }} - ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
py:
- "3.10"
- "pypy-3.7-v7.3.7" # ahead to start it earlier because takes longer
- "pypy-2.7-v7.3.6" # ahead to start it earlier because takes longer
- "3.9"
- "3.8"
- "3.7"
- "3.6"
- "3.5"
- "2.7"
os:
- ubuntu-20.04
- windows-2022
- macos-10.15

steps:
- name: Setup python for tox
uses: actions/setup-python@v2
with:
python-version: "3.10"
- name: Install tox
run: python -m pip install tox
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Setup python for test ${{ matrix.py }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.py }}
- name: Pick environment to run
run: |
import codecs
import os
import platform
import sys
cpy = platform.python_implementation() == "CPython"
base =("{}{}{}" if cpy else "{}{}").format("py" if cpy else "pypy", *sys.version_info[0:2])
env = "TOXENV={}\n".format(base)
print("Picked:\n{}for{}".format(env, sys.version))
with codecs.open(os.environ["GITHUB_ENV"], "a", "utf-8") as file_handler:
file_handler.write(env)
shell: python
- name: Setup test suite
run: tox -vv --notest
- name: Run test suite
run: tox --skip-pkg-install
env:
PYTEST_ADDOPTS: "-vv --durations=20"
CI_RUN: "yes"
DIFF_AGAINST: HEAD
- name: Rename coverage report file
run: import os; import sys; os.rename(".tox/.coverage.{}".format(os.environ['TOXENV']), ".tox/.coverage.{}-{}.format(os.environ['TOXENV'], sys.platform)")
shell: python
- name: Upload coverage data
uses: actions/upload-artifact@v2
with:
name: coverage-data
path: ".tox/.coverage.*"

coverage:
name: Combine coverage
runs-on: ubuntu-latest
needs: test
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- uses: actions/setup-python@v2
with:
python-version: "3.10"
- name: Install tox
run: python -m pip install tox
- name: Setup coverage tool
run: tox -e coverage --notest
- name: Install package builder
run: python -m pip install build
- name: Build package
run: pyproject-build --wheel .
- name: Download coverage data
uses: actions/download-artifact@v2
with:
name: coverage-data
path: .tox
- name: Combine and report coverage
run: tox -e coverage
- name: Upload HTML report
uses: actions/upload-artifact@v2
with:
name: html-report
path: .tox/htmlcov

check:
name: ${{ matrix.tox_env }} - ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-20.04
- windows-2022
tox_env:
- dev
- docs
- readme
exclude:
- { os: windows-2022, tox_env: readme }
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Setup Python "3.10"
uses: actions/setup-python@v2
with:
python-version: "3.10"
- name: Install tox
run: python -m pip install tox
- name: Setup test suite
run: tox -vv --notest -e ${{ matrix.tox_env }}
- name: Run test suite
run: tox --skip-pkg-install -e ${{ matrix.tox_env }}

publish:
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
needs: [ check, coverage ]
runs-on: ubuntu-20.04
steps:
- name: Setup python to build package
uses: actions/setup-python@v2
with:
python-version: "3.10"
- name: Install build
run: python -m pip install build
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Build sdist and wheel
run: python -m build -s -w . -o dist
- name: Publish to PyPi
uses: pypa/gh-action-pypi-publish@master
with:
skip_existing: true
user: __token__
password: ${{ secrets.pypi_password }}
36 changes: 15 additions & 21 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
default_language_version:
python: python3
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.0.1
rev: v4.1.0
hooks:
- id: check-ast
- id: check-builtin-literals
Expand All @@ -14,47 +12,43 @@ repos:
- id: end-of-file-fixer
- id: trailing-whitespace
- repo: https://github.com/asottile/pyupgrade
rev: v2.29.0
rev: v2.30.0
hooks:
- id: pyupgrade
- repo: https://github.com/PyCQA/isort
rev: 5.9.3
rev: 5.10.1
hooks:
- id: isort
- repo: https://github.com/psf/black
rev: 21.9b0
rev: 21.12b0
hooks:
- id: black
args:
- --safe
language_version: python3.8
args: [ --safe ]
- repo: https://github.com/asottile/blacken-docs
rev: v1.11.0
rev: v1.12.0
hooks:
- id: blacken-docs
additional_dependencies:
- black==20.8b1
language_version: python3.8
additional_dependencies: [ black==21.12b0 ]
- repo: https://github.com/pre-commit/pygrep-hooks
rev: v1.9.0
hooks:
- id: rst-backticks
- repo: https://github.com/tox-dev/tox-ini-fmt
rev: "0.5.1"
hooks:
- id: tox-ini-fmt
args: [ "-p", "fix_lint" ]
- repo: https://github.com/asottile/setup-cfg-fmt
rev: v1.18.0
rev: v1.20.0
hooks:
- id: setup-cfg-fmt
args:
- --min-py3-version
- "3.4"
- --max-py-version
- "3.10"
args: [ --min-py3-version, "3.5", "--max-py-version", "3.10" ]
- repo: https://github.com/PyCQA/flake8
rev: 4.0.1
hooks:
- id: flake8
additional_dependencies:
- flake8-bugbear == 20.11.1
language_version: python3.8
- flake8-bugbear==21.11.29
- repo: local
hooks:
- id: changelogs-rst
Expand Down
8 changes: 4 additions & 4 deletions .readthedocs.yml
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
version: 2
build:
image: latest
os: ubuntu-20.04
tools:
python: "3.10"
formats:
- htmlzip
- epub
- pdf
python:
version: 3.8
install:
- method: pip
path: .
extra_requirements:
- docs
extra_requirements: ["docs"]
sphinx:
builder: html
configuration: docs/conf.py
Expand Down
75 changes: 0 additions & 75 deletions azure-pipelines.yml

This file was deleted.

22 changes: 11 additions & 11 deletions docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,11 @@

def generate_draft_news():
home = "https://github.com"
issue = "{}/issue".format(home)
issue = f"{home}/issue"
fragments_path = ROOT_SRC_TREE_DIR / "docs" / "changelog"
for pattern, replacement in (
(r"[^`]@([^,\s]+)", r"`@\1 <{}/\1>`_".format(home)),
(r"[^`]#([\d]+)", r"`#pr\1 <{}/\1>`_".format(issue)),
(r"[^`]@([^,\s]+)", fr"`@\1 <{home}/\1>`_"),
(r"[^`]#([\d]+)", fr"`#pr\1 <{issue}/\1>`_"),
):
for path in fragments_path.glob("*.rst"):
path.write_text(re.sub(pattern, replacement, path.read_text()))
Expand All @@ -43,20 +43,20 @@ def generate_draft_news():
content = ""
else:
note = "*Changes in master, but not released yet are under the draft section*."
content = "{}\n\n{}".format(note, changelog)
content = f"{note}\n\n{changelog}"
(ROOT_SRC_TREE_DIR / "docs" / "_draft.rst").write_text(content)


generate_draft_news()

project = u"tox"
project = "tox"
_full_version = tox.__version__
release = _full_version.split("+", 1)[0]
version = ".".join(release.split(".")[:2])

author = "holger krekel and others"
year = date.today().year
copyright = u"2010-{}, {}".format(year, author)
copyright = f"2010-{year}, {author}"

master_doc = "index"
source_suffix = ".rst"
Expand Down Expand Up @@ -84,9 +84,9 @@ def generate_draft_news():
html_favicon = "_static/img/toxfavi.ico"
html_show_sourcelink = False
html_static_path = ["_static"]
htmlhelp_basename = "{}doc".format(project)
latex_documents = [("index", "tox.tex", u"{} Documentation".format(project), author, "manual")]
man_pages = [("index", project, u"{} Documentation".format(project), [author], 1)]
htmlhelp_basename = f"{project}doc"
latex_documents = [("index", "tox.tex", f"{project} Documentation", author, "manual")]
man_pages = [("index", project, f"{project} Documentation", [author], 1)]
epub_title = project
epub_author = author
epub_publisher = author
Expand All @@ -104,11 +104,11 @@ def parse_node(env, text, node):
node += addnodes.literal_strong(name, name)

if len(args) > 2:
default = "={}".format(args[2].strip())
default = f"={args[2].strip()}"
node += nodes.literal(text=default)

if len(args) > 1:
content = "({})".format(args[1].strip())
content = f"({args[1].strip()})"
node += addnodes.compact_paragraph(text=content)

return name # this will be the link
Expand Down
Loading

0 comments on commit ad2acad

Please sign in to comment.