-
Notifications
You must be signed in to change notification settings - Fork 0
156 lines (150 loc) · 4.96 KB
/
pythonpackage.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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
name: Python package
on:
push:
branches:
- "main"
pull_request:
branches:
- "**"
types: [opened, synchronize, reopened]
create:
branches:
- "**"
jobs:
python-lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.10"
- uses: actions/cache@v4
id: cache
with:
path: ${{ env.pythonLocation }}
key: ${{ runner.os }}-python-${{ env.pythonLocation }}-${{ hashFiles('pyproject.toml') }}-root
- name: Install pdm
if: steps.cache.outputs.cache-hit != 'true'
run: |
python -m pip install --upgrade pip
python -m pip install pdm>=2.11.1
- name: Install Dependencies
run: python -m pdm install -G lint -G dev
- name: Lint
run: python -m pdm run lint
- name: Archive lint reports
uses: actions/upload-artifact@v4
with:
name: lint-reports
path: reports
python-test:
strategy:
matrix:
python-version: ["3.10", "3.11", "3.12"]
platform: [ubuntu-latest, windows-latest]
fail-fast: false
runs-on: ${{ matrix.platform }}
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- uses: actions/cache@v4
id: cache
with:
path: ${{ env.pythonLocation }}
key: ${{ runner.os }}-python-${{ env.pythonLocation }}-${{ hashFiles('pyproject.toml') }}-root
- name: Install pdm
if: steps.cache.outputs.cache-hit != 'true'
run: |
python -m pip install --upgrade pip
python -m pip install pdm>=2.11.1
- name: Install Dependencies
run: python -m pdm install -dG test
- name: Test
run: python -m pdm run test
- name: Coveralls Parallel
uses: coverallsapp/github-action@v2
with:
flag-name: run-${{ join(matrix.*, '-') }}
parallel: true
- name: Archive code coverage results
uses: actions/upload-artifact@v4
with:
name: coverage-${{ matrix.platform }}-${{ matrix.python-version }}
path: reports/.coverage
include-hidden-files: true
coveralls-finish:
needs: [python-test]
if: ${{ always() }}
runs-on: ubuntu-latest
steps:
- name: Coveralls Finished
uses: coverallsapp/[email protected]
with:
parallel-finished: true
carryforward: "run-ubuntu-latest-3.10,run-ubuntu-latest-3.11,run-ubuntu-latest-3.12,run-windows-latest-3.10,run-windows-latest-3.11,run-windows-latest-3.12"
sonarcloud:
needs: [python-test]
name: SonarCloud
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Install coverage
run: pip install coverage[toml]
- name: Download artifacts
uses: actions/download-artifact@v4
with:
name: coverage-ubuntu-latest-3.12
path: reports
- name: Create coverage XML
run: |
ls -al reports
coverage xml
- name: Generate sonar properties
run: |
cat << EOF > sonar-project.properties
sonar.projectKey=ljnsn_coinapi-rest
sonar.organization=ljnsn
sonar.python.version=3.10
sonar.python.coverage.reportPaths=reports/coverage.xml
sonar.sources=src/
sonar.tests=tests/
sonar.projectVersion="$(git describe --tags HEAD)"
EOF
- name: SonarCloud Scan
uses: SonarSource/sonarcloud-github-action@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
bump-version:
runs-on: ubuntu-latest
needs: [python-lint, python-test]
if: |
github.event_name == 'push' &&
github.ref_name == 'main' &&
github.ref_type == 'branch' &&
!startsWith(github.event.head_commit.message, '🔖 bump(release):') &&
!startsWith(github.event.head_commit.message, 'bump(release):') &&
!startsWith(github.event.head_commit.message, '🔖 bump:') &&
!startsWith(github.event.head_commit.message, 'bump:')
name: "Bump version and create changelog with commitizen"
steps:
- name: Check out
uses: actions/checkout@v4
with:
fetch-depth: 0
token: "${{ secrets.PERSONAL_ACCESS_TOKEN }}"
- name: Create bump and changelog
uses: commitizen-tools/commitizen-action@master
with:
github_token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
extra_requirements: "cz-conventional-gitmoji"