-
-
Notifications
You must be signed in to change notification settings - Fork 0
133 lines (119 loc) · 3.96 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
132
133
# This workflow will install Python dependencies, run tests and lint with a single version of Python
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python
name: CI
on:
push:
branches:
- main
pull_request:
branches:
- main
permissions:
contents: read
concurrency:
group: ${{ github.event.number || github.run_id }}
cancel-in-progress: true
jobs:
test:
env:
PYTHONDEVMODE: 1
API_USERNAME: ${{ secrets.API_USERNAME }}
API_KEY: ${{ secrets.API_KEY }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
python-version: ["3.11", "3.12", "3.13"]
os: [ubuntu-latest, macos-latest, windows-latest]
install-via: [pip]
arch: [x64]
include:
- python-version: "3.10"
os: ubuntu-latest
install-via: pip
arch: x64
- python-version: "3.10"
os: macos-13
install-via: pip
arch: x64
- python-version: "3.10"
os: windows-latest
install-via: pip
arch: x64
- python-version: "3.11"
os: macos-latest
install-via: pip
arch: arm64
- python-version: "3.12"
os: macos-latest
install-via: pip
arch: arm64
- python-version: "3.13"
os: macos-latest
install-via: pip
arch: arm64
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
architecture: ${{ matrix.arch }}
allow-prereleases: false
- name: Set Variables
id: set_variables
shell: bash
run: |
echo "PY=$(python -c 'import hashlib, sys;print(hashlib.sha256(sys.version.encode()+sys.executable.encode()).hexdigest())')" >> $GITHUB_OUTPUT
echo "PIP_CACHE=$(pip cache dir)" >> $GITHUB_OUTPUT
- name: Cache pip
uses: actions/cache@v4
with:
path: ${{ steps.set_variables.outputs.PIP_CACHE }}
key: ${{ runner.os }}-pip-${{ steps.set_variables.outputs.PY }}
- name: Cache venv
uses: actions/cache@v4
with:
path: .venv
key: venv-${{ runner.os }}-${{ matrix.arch }}-${{ matrix.python-version }}-${{ hashFiles('pdm.lock') }}
restore-keys: |
venv-${{ runner.os }}-${{ matrix.arch }}-${{ matrix.python-version }}-
- name: Install current PDM via pip
if: matrix.install-via == 'pip'
run: |
python -m pip install pdm
pdm info -v
pdm venv list -v
pdm use -f .venv
echo "$VIRTUAL_ENV/bin" >> $GITHUB_PATH
echo "VIRTUAL_ENV=$VIRTUAL_ENV" >> $GITHUB_ENV
echo "GITHUB_PATH=$GITHUB_PATH"
echo "GITHUB_ENV=$GITHUB_ENV"
- name: Install current PDM via install script
if: matrix.install-via == 'script'
run: |
curl -sSLO https://pdm-project.org/install-pdm.py
curl -sSL https://raw.githubusercontent.com/pdm-project/pdm/main/install-pdm.py.sha256 | shasum -a 256 -c -
python3 install-pdm.py
pdm info -v
pdm venv list -v
pdm use -f .venv
echo "$VIRTUAL_ENV/bin" >> $GITHUB_PATH
echo "VIRTUAL_ENV=$VIRTUAL_ENV" >> $GITHUB_ENV
echo "GITHUB_PATH=$GITHUB_PATH"
echo "GITHUB_ENV=$GITHUB_ENV"
- name: Lint + Run unit & acceptance tests + Measure code coverage
run: |
pdm use -f .venv
pdm install -v -dGlint --no-self --no-isolation
pdm run -v lint
pdm install -v -dGtest --no-self --no-isolation
pdm run -v pytest
pdm run -v doctests
- name: Upload coverage reports to Codecov
uses: codecov/[email protected]
with:
token: ${{ secrets.CODECOV_TOKEN }}
slug: sr-murthy/fsrapiclient
file: ./coverage.xml
flags: unit