-
-
Notifications
You must be signed in to change notification settings - Fork 143
136 lines (114 loc) · 3.52 KB
/
ci.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
name: CI
on:
push:
branches: ["main"]
pull_request:
branches: ["main"]
release:
types: ["published"]
jobs:
lint:
runs-on: ubuntu-latest
name: Lint with Ruff (Py${{ matrix.python-version }})
strategy:
fail-fast: false
matrix:
python-version: ["3.10", "3.11", "3.12"]
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Lint with Ruff
run: |
python -m pip install ruff
ruff --output-format=github .
continue-on-error: true
test:
name: Test with Py${{ matrix.python-version }} on ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu, windows, macos]
python-version: ["3.10", "3.11", "3.12"]
runs-on: ${{ matrix.os }}-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install pytest
pip install .
- name: Test with pytest
run: |
pip install pytest pytest-cov
touch .coveragerc
echo "[run]" > .coveragerc
echo "relative_files = True" >> .coveragerc
pytest --cov="rendercv" tests/
mv .coverage .coverage.${{ matrix.python-version }}.${{ matrix.os }}
- name: Store coverage files
uses: actions/upload-artifact@v3
with:
name: coverage
path: .coverage.${{ matrix.python-version }}.${{ matrix.os }}
report-coverage:
if: github.event_name == 'push'
name: Generate a coverage report
needs: [test]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python 3.12
uses: actions/setup-python@v4
with:
python-version: "3.12"
- name: Download coverage files
uses: actions/download-artifact@v3
with:
name: coverage
path: coverage
- name: Combine coverage files
run: |
pip install coverage
ls -la coverage
touch .coveragerc
echo "[run]" > .coveragerc
echo "relative_files = True" >> .coveragerc
coverage combine coverage
coverage report
coverage html --show-contexts --title "RenderCV coverage for ${{ github.sha }}"
- name: Upload coverage data to smokeshow
run: |
pip install smokeshow
smokeshow upload ./htmlcov
env:
SMOKESHOW_GITHUB_STATUS_DESCRIPTION: Coverage {coverage-percentage}
SMOKESHOW_GITHUB_COVERAGE_THRESHOLD: 50
SMOKESHOW_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SMOKESHOW_GITHUB_PR_HEAD_SHA: ${{ github.event.pull_request.head.sha }}
publish:
if: github.event_name == 'release'
name: Publish to PyPI
needs: [test]
runs-on: ubuntu-latest
environment: release
permissions:
id-token: write
steps:
- uses: actions/checkout@v4
- name: Set up Python 3.12
uses: actions/setup-python@v4
with:
python-version: "3.12"
- name: Build
run: |
pip install -U build
python -m build
- name: Upload package to PyPI
uses: pypa/gh-action-pypi-publish@release/v1