Skip to content

Commit

Permalink
Switch to new CI framework based on Trio
Browse files Browse the repository at this point in the history
  • Loading branch information
CoolCat467 committed Nov 4, 2024
1 parent 90bd6c8 commit 092f2b6
Show file tree
Hide file tree
Showing 11 changed files with 751 additions and 83 deletions.
91 changes: 91 additions & 0 deletions .github/workflows/autodeps.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
name: Autodeps

on:
workflow_dispatch:
schedule:
- cron: '0 0 1 * *'

jobs:
Autodeps:
if: github.repository_owner == 'CoolCat467'
name: Autodeps
timeout-minutes: 10
runs-on: 'ubuntu-latest'
# https://docs.github.com/en/code-security/dependabot/working-with-dependabot/automating-dependabot-with-github-actions#changing-github_token-permissions
permissions:
pull-requests: write
issues: write
repository-projects: write
contents: write

steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup python
uses: actions/setup-python@v5
with:
python-version: "3.12"

- name: Bump dependencies
run: |
python -m pip install -U pip pre-commit
python -m pip install -r test-requirements.txt
uv pip compile --universal --python-version=3.10 --upgrade test-requirements.in -o test-requirements.txt
pre-commit autoupdate --jobs 0
- name: Install new requirements
run: python -m pip install -r test-requirements.txt

# apply newer versions' formatting
- name: Black
run: black src/checkers

- name: uv
run: |
uv pip compile --universal --python-version=3.10 test-requirements.in -o test-requirements.txt
- name: Commit changes and create automerge PR
env:
GH_TOKEN: ${{ github.token }}
run: |
# setup git repo
git switch --force-create autodeps/bump_from_${GITHUB_SHA:0:6}
git config user.name 'github-actions[bot]'
git config user.email '41898282+github-actions[bot]@users.noreply.github.com'
if ! git commit -am "Dependency updates"; then
echo "No changes to commit!"
exit 0
fi
git push --force --set-upstream origin autodeps/bump_from_${GITHUB_SHA:0:6}
# git push returns before github is ready for a pr, so we poll until success
for BACKOFF in 1 2 4 8 0; do
sleep $BACKOFF
if gh pr create \
--label dependencies --body "" \
--title "Bump dependencies from commit ${GITHUB_SHA:0:6}" \
; then
break
fi
done
if [ $BACKOFF -eq 0 ]; then
echo "Could not create the PR"
exit 1
fi
# gh pr create returns before the pr is ready, so we again poll until success
# https://github.com/cli/cli/issues/2619#issuecomment-1240543096
for BACKOFF in 1 2 4 8 0; do
sleep $BACKOFF
if gh pr merge --auto --squash; then
break
fi
done
if [ $BACKOFF -eq 0 ]; then
echo "Could not set automerge"
exit 1
fi
144 changes: 144 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
name: CI

on:
push:
branches-ignore:
- "dependabot/**"
pull_request:

concurrency:
group: ${{ github.ref }}-${{ github.workflow }}-${{ github.event_name }}${{ github.ref == format('refs/heads/{0}', github.event.repository.default_branch) && format('-{0}', github.sha) || '' }}
cancel-in-progress: true

jobs:
## Windows:
## name: 'Windows (${{ matrix.python }}, ${{ matrix.arch }}${{ matrix.extra_name }})'
## timeout-minutes: 20
## runs-on: 'windows-latest'
## strategy:
## fail-fast: false
## matrix:
## python: ['3.10', '3.11', '3.12']
## arch: ['x86', 'x64']
## continue-on-error: >-
## ${{
## (
## endsWith(matrix.python, '-dev')
## || endsWith(matrix.python, '-nightly')
## )
## && true
## || false
## }}
## steps:
## - name: Checkout
## uses: actions/checkout@v4
## - name: Setup python
## uses: actions/setup-python@v5
## with:
## # This allows the matrix to specify just the major.minor version while still
## # expanding it to get the latest patch version including alpha releases.
## # This avoids the need to update for each new alpha, beta, release candidate,
## # and then finally an actual release version. actions/setup-python doesn't
## # support this for PyPy presently so we get no help there.
## #
## # 'CPython' -> '3.9.0-alpha - 3.9.X'
## # 'PyPy' -> 'pypy-3.9'
## python-version: ${{ fromJSON(format('["{0}", "{1}"]', format('{0}.0-alpha - {0}.X', matrix.python), matrix.python))[startsWith(matrix.python, 'pypy')] }}
## architecture: '${{ matrix.arch }}'
## cache: pip
## cache-dependency-path: test-requirements.txt
## - name: Run tests
## run: ./ci.sh
## shell: bash

Ubuntu:
name: 'Ubuntu (${{ matrix.python }}${{ matrix.extra_name }})'
timeout-minutes: 10
runs-on: 'ubuntu-latest'
# Only run for PRs or pushes to main
if: github.event_name == 'pull_request' || (github.event_name == 'push' && github.ref == 'refs/heads/main')
strategy:
fail-fast: false
matrix:
python: ['3.10', '3.11', '3.12', '3.13']
check_formatting: ['0']
extra_name: ['']
include:
- python: '3.12'
check_formatting: '1'
extra_name: ', check formatting'
continue-on-error: >-
${{
(
endsWith(matrix.python, '-dev')
|| endsWith(matrix.python, '-nightly')
)
&& true
|| false
}}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup python
uses: actions/setup-python@v5
if: "!endsWith(matrix.python, '-dev')"
with:
python-version: ${{ fromJSON(format('["{0}", "{1}"]', format('{0}.0-alpha - {0}.X', matrix.python), matrix.python))[startsWith(matrix.python, 'pypy')] }}
cache: pip
cache-dependency-path: test-requirements.txt
- name: Setup python (dev)
uses: deadsnakes/[email protected]
if: endsWith(matrix.python, '-dev')
with:
python-version: '${{ matrix.python }}'
- name: Run tests
run: ./ci.sh
env:
CHECK_FORMATTING: '${{ matrix.check_formatting }}'

## macOS:
## name: 'macOS (${{ matrix.python }})'
## timeout-minutes: 15
## runs-on: 'macos-latest'
## strategy:
## fail-fast: false
## matrix:
## python: ['3.10', '3.11', '3.12']
## continue-on-error: >-
## ${{
## (
## endsWith(matrix.python, '-dev')
## || endsWith(matrix.python, '-nightly')
## )
## && true
## || false
## }}
## steps:
## - name: Checkout
## uses: actions/checkout@v4
## - name: Setup python
## uses: actions/setup-python@v5
## with:
## python-version: ${{ fromJSON(format('["{0}", "{1}"]', format('{0}.0-alpha - {0}.X', matrix.python), matrix.python))[startsWith(matrix.python, 'pypy')] }}
## cache: pip
## cache-dependency-path: test-requirements.txt
## - name: Run tests
## run: ./ci.sh

## # https://github.com/marketplace/actions/alls-green#why
## check: # This job does nothing and is only used for the branch protection
##
## if: always()
##
## needs:
## - Windows
## - Ubuntu
## - macOS
##
## runs-on: ubuntu-latest
##
## steps:
## - name: Decide whether the needed jobs succeeded or failed
## uses: re-actors/alls-green@release/v1
## with:
## jobs: ${{ toJSON(needs) }}
40 changes: 0 additions & 40 deletions .github/workflows/tests.yml

This file was deleted.

28 changes: 21 additions & 7 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,17 +1,23 @@
# Logs
# Project Specific
log.txt


# Binaries from virtual environment
bin/

# Config files
config/

# Byte-compiled / optimized / DLL files
# Temp file during Mypy processing
mypy_annotate.dat
test-results.xml

# MacOS files
**/.DS_Store

# Byte-compiled / optimized / DLL files / editor temp files
__pycache__/
*.py[cod]
*$py.class
*~
\#*
.#*
*.swp

# C extensions
*.so
Expand Down Expand Up @@ -50,6 +56,7 @@ pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.venv/
.nox/
.coverage
.coverage.*
Expand All @@ -60,6 +67,7 @@ coverage.xml
*.py,cover
.hypothesis/
.pytest_cache/
.mypy_cache/

# Translations
*.mo
Expand Down Expand Up @@ -137,3 +145,9 @@ dmypy.json

# Pyre type checker
.pyre/

# Sphinx documentation
doc/_build/

# PyCharm
.idea/
2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ repos:
hooks:
- id: black
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.7.1
rev: v0.7.2
hooks:
- id: ruff
types: [file]
Expand Down
Loading

0 comments on commit 092f2b6

Please sign in to comment.