-
Notifications
You must be signed in to change notification settings - Fork 4
/
.azure-pipelines.yml
130 lines (116 loc) · 2.98 KB
/
.azure-pipelines.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
trigger:
branches:
include:
- '*'
tags:
include:
- '*'
stages:
- stage: static
displayName: Static Analysis
jobs:
- job: checks
displayName: static code analysis
pool:
vmImage: ubuntu-latest
steps:
# Run syntax validation using oldest and latest Python
- task: UsePythonVersion@0
displayName: Set up python
inputs:
versionSpec: 3.8
- bash: python .azure-pipelines/syntax-validation.py
displayName: Syntax validation (3.8)
- task: UsePythonVersion@0
displayName: Set up python
inputs:
versionSpec: 3.11
- bash: python .azure-pipelines/syntax-validation.py
displayName: Syntax validation (3.11)
# Run flake8 validation
- bash: |
pip install --disable-pip-version-check flake8 && \
python .azure-pipelines/flake8-validation.py
displayName: Flake8 validation
- stage: tests
displayName: Run unit tests
jobs:
- job: linux
pool:
vmImage: ubuntu-latest
strategy:
matrix:
python38:
PYTHON_VERSION: 3.8
python39:
PYTHON_VERSION: 3.9
python310:
PYTHON_VERSION: 3.10
python311:
PYTHON_VERSION: 3.11
steps:
- template: .azure-pipelines/ci.yml
- job: macOS
pool:
vmImage: macOS-latest
strategy:
matrix:
python38:
PYTHON_VERSION: 3.8
python39:
PYTHON_VERSION: 3.9
python310:
PYTHON_VERSION: 3.10
python311:
PYTHON_VERSION: 3.11
steps:
- template: .azure-pipelines/ci.yml
- job: windows
pool:
vmImage: windows-latest
strategy:
matrix:
python38:
PYTHON_VERSION: 3.8
python39:
PYTHON_VERSION: 3.9
python310:
PYTHON_VERSION: 3.10
python311:
PYTHON_VERSION: 3.11
steps:
- template: .azure-pipelines/ci.yml
- stage: deploy
displayName: Publish release
dependsOn:
- tests
- static
condition: and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))
jobs:
- job: pypi
displayName: Publish pypi release
pool:
vmImage: ubuntu-latest
steps:
- task: UsePythonVersion@0
displayName: Set up python
inputs:
versionSpec: 3.9
- bash: |
python -m pip install -r requirements_dev.txt
displayName: Install dependencies
- bash: |
python setup.py sdist bdist_wheel
ls -la dist
displayName: Build python package
- task: PublishBuildArtifacts@1
inputs:
pathToPublish: dist/
artifactName: python-release
- task: TwineAuthenticate@1
displayName: Set up credentials
inputs:
pythonUploadServiceConnection: pypi-procrunner
- bash: |
python -m twine upload -r pypi-procrunner --config-file $(PYPIRC_PATH) dist/*.tar.gz dist/*.whl
displayName: Publish package