-
Notifications
You must be signed in to change notification settings - Fork 10
131 lines (98 loc) · 2.71 KB
/
ci.yml
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
name: CI
# Run on all PR's and on pushes/merges to deploy and master
on:
pull_request:
branches: ['master', 'dev/*', '!paper.md']
push:
branches: ['master', 'dev/*', '!paper.md']
tags: ["v*"]
env:
GITHUB_ACTION_IS_RUNNING: 1
jobs:
tests:
name: Tests
env:
MP_API_KEY: ${{ secrets.MP_API_KEY }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macOS-latest]
python-version: ["3.9", "3.10", "3.11", "3.12"]
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v4
with:
python-version: ${{ matrix.python-version }}
- name: Test with python ${{ matrix.python-version }}
run: uv run --frozen --extra test pytest -v --cov --cov-report xml lightshow/_tests
- uses: codecov/codecov-action@v5
timeout-minutes: 10
with:
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: false
ruff:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: astral-sh/ruff-action@v1
with:
src: "./lightshow"
docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v4
- name: build
run: uv run --frozen --extra doc make -C docs/ html
- name: artifact
uses: actions/upload-pages-artifact@v3
with:
path: 'docs/build/html/'
publish-code:
# This workflow follows the best practices outlined here:
# https://github.com/marketplace/actions/pypi-publish
# for deploying a project to PyPI via a GH action. It only runs on tags
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
runs-on: ubuntu-latest
environment:
name: pypi
url: https://pypi.org/project/lightshow/
permissions:
id-token: write
needs:
- tests
- ruff
- docs
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v4
- name: build
run: uv build
- name: Publish
uses: pypa/gh-action-pypi-publish@release/v1
with:
repository-url: https://upload.pypi.org/legacy/
publish-docs:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs:
- tests
- ruff
- docs
- publish-code
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
# permissions:
# contents: read
# pages: write
# id-token: write
# Allow one concurrent deployment
# concurrency:
# group: "pages"
# cancel-in-progress: true
# runs-on: ubuntu-latest
steps:
- name: publish
id: deployment
uses: actions/deploy-pages@v4