-
Notifications
You must be signed in to change notification settings - Fork 311
133 lines (120 loc) · 3.48 KB
/
main.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
132
133
name: Main
on:
push:
branches:
- main
pull_request:
schedule:
- cron: "0 0 * * *" # daily
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: true
env:
FORCE_COLOR: "1"
TOX_TESTENV_PASSENV: "FORCE_COLOR"
MIN_PYTHON_VERSION: "3.8"
DEFAULT_PYTHON_VERSION: "3.10"
permissions:
contents: read
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4.2.2
- uses: actions/setup-python@v5.3.0
with:
python-version: ${{ env.DEFAULT_PYTHON_VERSION }}
- name: Install dependencies
run: python -m pip install tox
- name: Run linting
run: python -m tox -e lint
test:
strategy:
matrix:
python-version:
- "3.8"
- "3.9"
- "3.10"
- "3.11"
- "3.12"
- "3.13"
platform:
- ubuntu-latest
- macos-latest
- windows-latest
tox-environment:
- py
include:
# Test with the oldest supported ``packaging`` version.
- platform: ubuntu-latest
- python-version: "3.8"
- tox-environment: py-packaging240
runs-on: ${{ matrix.platform }}
steps:
- uses: actions/checkout@v4.2.2
- uses: actions/setup-python@v5.3.0
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: python -m pip install tox
- name: Run type-checking
run: python -m tox -e types
- name: Run tests
run: python -m tox -e ${{ matrix.tox-environment }}
# Because the tests can be flaky, they shouldn't be required for merge, but
# it's still helpful to run them on PRs. See:
# https://github.com/pypa/twine/issues/684#issuecomment-703150619
integration:
# Only run on Ubuntu because most of the tests are skipped on Windows
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4.2.2
- uses: actions/setup-python@v5.3.0
with:
python-version: ${{ env.MIN_PYTHON_VERSION }}
- name: Install dependencies
run: python -m pip install tox
- name: Run tests
run: python -m tox -e integration
docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4.2.2
- uses: actions/setup-python@v5.3.0
with:
python-version: ${{ env.MIN_PYTHON_VERSION }}
- name: Install dependencies
run: python -m pip install tox
- name: Build docs
run: python -m tox -e docs
# https://github.com/marketplace/actions/alls-green#why
check: # This job does nothing and is only used for the branch protection
if: always()
needs:
- lint
- test
- integration
- docs
runs-on: ubuntu-latest
steps:
- name: Decide whether the needed jobs succeeded or failed
uses: re-actors/alls-green@release/v1
with:
allowed-failures: integration # can be flaky
jobs: ${{ toJSON(needs) }}
release:
needs:
- check
if: github.event_name == 'push' && contains(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4.2.2
- uses: actions/setup-python@v5.3.0
with:
python-version: ${{ env.MIN_PYTHON_VERSION }}
- name: Install dependencies
run: python -m pip install tox
- name: Release
run: tox -e release
env:
TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }}