Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add CI #4

Merged
merged 3 commits into from
Oct 25, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
187 changes: 187 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,187 @@
name: CI

on:
push:
branches:
- main
tags:
- "v*.*.*"
pull_request:
branches:
- main

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

jobs:

lint:
name: Linting
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: 3.12
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install ruff
- name: Ruff lint
run: |
ruff check --output-format=github .
- name: Ruff format
run: |
ruff format --check .

docs:
name: Docs
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: 3.12
- name: Install dev dependencies
run: |
python -m pip install --upgrade pip
pip install -U -e .[docs]
- name: Build docs
run: |
cd docs
make html SPHINXOPTS="-W --keep-going"

tests:
name: ${{ matrix.name }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- name: Test py39
os: ubuntu-latest
pyversion: '3.9'
- name: Test py310
os: ubuntu-latest
pyversion: '3.10'
- name: Test py311
os: ubuntu-latest
pyversion: '3.11'
- name: Test py312
os: ubuntu-latest
pyversion: '3.12'
- name: Test py313
os: ubuntu-latest
pyversion: '3.13'
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.pyversion }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.pyversion }}
- name: Install package and dev dependencies
run: |
python -m pip install --upgrade pip
pip install .[tests]
rm -r rendercanvas
- name: Unit tests
run: |
pytest -v tests

test-pyinstaller:
name: Test pyinstaller
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: 3.12
- name: Install package and dev dependencies
run: |
python -m pip install --upgrade pip
pip install -U .
pip install pytest pyinstaller
- name: Unit tests
run: |
pushd $HOME
pytest -v --pyargs rendercanvas.__pyinstaller

release:
name: Build release on ubuntu-latest
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: 3.12
- name: Install dev dependencies
run: |
python -m pip install --upgrade pip
pip install -U flit build twine
- name: Create source distribution
run: |
python -m build -n -s
- name: Build wheel
run: |
python -m build -n -w
- name: Test sdist
shell: bash
run: |
rm -rf ./rendercanvas
pushd $HOME
pip install $GITHUB_WORKSPACE/dist/*.tar.gz
python -c "import rendercanvas; print(rendercanvas.__version__)"
popd
# don't run tests, we just want to know if the sdist can be installed
pip uninstall -y rendercanvas
git reset --hard HEAD
- name: Twine check
run: |
twine check dist/*
- name: Upload distributions
uses: actions/upload-artifact@v4
with:
path: dist
name: dist

publish:
name: Publish release to Github and Pypi
runs-on: ubuntu-latest
needs: [tests, release]
if: success() && startsWith(github.ref, 'refs/tags/v')
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: 3.12
- name: Download assets
uses: actions/download-artifact@v4
with:
name: dist
path: dist
- name: Release
uses: softprops/action-gh-release@v2
with:
token: ${{ secrets.GITHUB_TOKEN }}
files: |
dist/*.tar.gz
dist/*.whl
draft: true
prerelease: false
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.PYPI_PASSWORD }}
4 changes: 3 additions & 1 deletion examples/gui_auto.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@
from rendercanvas.utils.cube import setup_drawing_sync


canvas = WgpuCanvas(size=(640, 480), title=f"The wgpu cube example on a {WgpuCanvas.__name__}")
canvas = WgpuCanvas(
size=(640, 480), title=f"The wgpu cube example on a {WgpuCanvas.__name__}"
)
draw_frame = setup_drawing_sync(canvas)


Expand Down
2 changes: 1 addition & 1 deletion examples/gui_glfw.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from rendercanvas.utils.cube import setup_drawing_sync


canvas = WgpuCanvas(size=(640, 480), title=f"The wgpu cube example on glfw")
canvas = WgpuCanvas(size=(640, 480), title="The wgpu cube example on glfw")
draw_frame = setup_drawing_sync(canvas)


Expand Down
2 changes: 2 additions & 0 deletions examples/gui_qt.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
Works with either PySide6, PyQt6, PyQt5 or PySide2.
"""

# ruff: noqa: E402

import importlib

# The `rendercanvas.qt` module checks what Qt libs is imported, so we need to import that first.
Expand Down
2 changes: 1 addition & 1 deletion examples/gui_wx.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from rendercanvas.utils.cube import setup_drawing_sync


canvas = WgpuCanvas(size=(640, 480), title=f"The wgpu cube example on wx")
canvas = WgpuCanvas(size=(640, 480), title="The wgpu cube example on wx")
draw_frame = setup_drawing_sync(canvas)


Expand Down
Loading