-
Notifications
You must be signed in to change notification settings - Fork 2
135 lines (129 loc) Β· 3.49 KB
/
Copy pathci.yml
File metadata and controls
135 lines (129 loc) Β· 3.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
name: CI
on:
push:
branches:
- master
tags:
- "v*"
pull_request:
branches:
- master
jobs:
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Install uv
uses: astral-sh/setup-uv@v6
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version-file: "pyproject.toml"
- name: Install only dev dependencies
run: uv sync --only-group dev
- name: Lint
run: uv run --no-sync ruff check .
- name: Format
run: uv run --no-sync ruff format --check .
test:
name: Test on ${{ matrix.name }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- name: Linux py310
pyversion: "3.10"
- name: Linux py311
pyversion: "3.11"
- name: Linux py312
pyversion: "3.12"
- name: Linux py313
pyversion: "3.13"
- name: Linux py314
pyversion: "3.14"
steps:
- uses: actions/checkout@v5
- name: Install uv
uses: astral-sh/setup-uv@v6
- name: Set up Python ${{ matrix.pyversion }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.pyversion }}
- name: Install system dependencies
run: |
sudo apt-get update -y -qq
sudo apt-get install -y libgles2-mesa-dev
- name: Install dependencies
run: uv sync --all-groups
- name: Test
run: uv run pytest -v --cov=collagraph --cov-report=term-missing
env:
QT_QPA_PLATFORM: offscreen
pyinstaller:
name: Test PyInstaller hooks
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Install uv
uses: astral-sh/setup-uv@v6
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version-file: "pyproject.toml"
- name: Install dependencies
run: uv sync
- name: Test PyInstaller hooks
run: bash tests/pyinstaller/test_pyinstaller.sh
build:
name: Build and test wheel
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Install uv
uses: astral-sh/setup-uv@v6
- name: Set up Python 3.10
uses: actions/setup-python@v2
with:
python-version: "3.10"
- name: Install dependencies
run: uv sync
- name: Build wheel
run: uv build
- name: Twine check
run: uv run twine check dist/*
- name: Upload wheel artifact
uses: actions/upload-artifact@v4
with:
path: dist
name: dist
publish:
name: Publish to Github and Pypi
runs-on: ubuntu-latest
needs: [lint, test, build, pyinstaller]
if: success() && startsWith(github.ref, 'refs/tags/v')
environment:
name: pypi
url: https://pypi.org/p/collagraph
permissions:
id-token: write
contents: write
steps:
- uses: actions/checkout@v5
- name: Download wheel artifact
uses: actions/download-artifact@v4
with:
name: dist
path: dist
- name: Release to GitHub
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