-
-
Notifications
You must be signed in to change notification settings - Fork 5
140 lines (138 loc) · 5.16 KB
/
tox.yaml
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
136
137
138
139
140
name: tox
on: [push]
jobs:
# Adapted from https://github.com/marketplace/actions/skip-duplicate-actions
pre_job:
continue-on-error: true
runs-on: ubuntu-latest
# Map a step output to a job output
outputs:
should_skip: ${{ steps.skip_check.outputs.should_skip }}
steps:
- id: skip_check
uses: fkirc/skip-duplicate-actions@v5
with:
# https://github.com/marketplace/actions/skip-duplicate-actions#skip-concurrent-workflow-runs
concurrent_skipping: "same_content_newer"
# https://github.com/marketplace/actions/skip-duplicate-actions#cancel_others
# Don't cancel other jobs, they might be pushes to master
cancel_others: false
# https://github.com/marketplace/actions/skip-duplicate-actions#do_not_skip
do_not_skip: '["workflow_dispatch", "schedule", "merge_group", "release"]'
# https://github.com/marketplace/actions/skip-duplicate-actions#paths
paths: '["go.*", "*.go", "cmd/**", "Cargo.*", "pyproject.toml", "python/**", "rust/**"]'
test:
needs: pre_job
name: ${{ matrix.name }}
runs-on: ${{ matrix.os }}
timeout-minutes: 30
strategy:
fail-fast: true
matrix:
include:
- name: "docs"
python: "3.10"
toxpython: "python3.10"
tox_env: "docs"
os: "ubuntu-latest"
- name: "py39 (ubuntu) + coverage"
python: "3.9"
toxpython: "python3.9"
python_arch: "x64"
tox_env: "clean,py39,report"
os: "ubuntu-latest"
codecov: true
# - name: 'py39 (windows)'
# python: '3.9'
# toxpython: 'python3.9'
# python_arch: 'x64'
# tox_env: 'py39'
# os: 'windows-latest'
- name: "py310 (ubuntu)"
python: "3.10"
toxpython: "python3.10"
python_arch: "x64"
tox_env: "py310"
os: "ubuntu-latest"
# TODO: tests are failing on Windows because of line breaks
# - name: 'py310 (windows)'
# python: '3.10'
# toxpython: 'python3.10'
# python_arch: 'x64'
# tox_env: 'py310'
# os: 'windows-latest'
- name: "py311 (ubuntu)"
python: "3.11"
toxpython: "python3.11"
python_arch: "x64"
tox_env: "py311"
os: "ubuntu-latest"
# - name: 'py311 (windows)'
# python: '3.11'
# toxpython: 'python3.11'
# python_arch: 'x64'
# tox_env: 'py311'
# os: 'windows-latest'
- name: "py311 (macos)"
python: "3.11"
toxpython: "python3.11"
python_arch: "x64"
tox_env: "py311"
os: "macos-latest"
- name: "py312 (ubuntu)"
python: "3.12"
toxpython: "python3.12"
python_arch: "x64"
tox_env: "py312"
os: "ubuntu-latest"
# - name: 'py312 (windows)'
# python: '3.12'
# toxpython: 'python3.12'
# python_arch: 'x64'
# tox_env: 'py312'
# os: 'windows-latest'
- name: "py312 (macos)"
python: "3.12"
toxpython: "python3.12"
python_arch: "x64"
tox_env: "py312"
os: "macos-latest"
steps:
- uses: actions/checkout@v4
if: ${{ needs.pre_job.outputs.should_skip != 'true' || matrix.codecov }}
with:
fetch-depth: 0
- uses: actions/setup-python@v5
if: ${{ needs.pre_job.outputs.should_skip != 'true' || matrix.codecov }}
with:
python-version: ${{ matrix.python }}
architecture: ${{ matrix.python_arch }}
- name: install dependencies
if: ${{ needs.pre_job.outputs.should_skip != 'true' || matrix.codecov }}
run: |
python -mpip install --progress-bar=off -r ci/requirements.txt
virtualenv --version
pip --version
tox --version
pip list --format=freeze
# Thanks to https://github.com/lsst-sqre/safir/blob/master/.github/workflows/ci.yaml
- name: Cache tox environments
if: ${{ needs.pre_job.outputs.should_skip != 'true' || matrix.codecov }}
id: cache-tox
uses: actions/cache@v4
with:
path: .tox
# These files have versioning info that would impact the tox environment
key: tox-${{ matrix.python }}-${{ hashFiles('pyproject.toml', 'tox.ini') }}
- name: test
if: ${{ needs.pre_job.outputs.should_skip != 'true' || matrix.codecov }}
env:
TOXPYTHON: "${{ matrix.toxpython }}"
run: >
tox -e ${{ matrix.tox_env }} -v
- name: Upload coverage to CodeCov
uses: codecov/codecov-action@v5
if: ${{ matrix.codecov }}
with:
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: true