-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathJenkinsfile
96 lines (84 loc) · 2.32 KB
/
Jenkinsfile
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
#!/usr/bin/env groovy
library 'scoville-jenkins-libs'
pipeline {
options {
ansiColor('xterm')
}
environment {
PYTHON_MODULES = 'dryeye_defender tests'
}
agent {
dockerfile {
filename './Dockerfile'
additionalBuildArgs '--build-arg USER_ID=${USER_ID} --build-arg GROUP_ID=${GROUP_ID}' \
+ ' --build-arg AUX_GROUP_IDS="${AUX_GROUP_IDS}"'
}
}
stages {
stage('Lint') {
steps {
sh """#!/usr/bin/env bash
set -Eeux
python3 -m pylint ${PYTHON_MODULES} |& tee pylint.log
echo "\${PIPESTATUS[0]}" | tee pylint_status.log
python3 -m mypy ${PYTHON_MODULES} |& tee mypy.log
echo "\${PIPESTATUS[0]}" | tee mypy_status.log
python3 -m pycodestyle ${PYTHON_MODULES} |& tee pycodestyle.log
echo "\${PIPESTATUS[0]}" | tee pycodestyle_status.log
# I have commented out pydocstyle as it's set to DEBUG mode and I cannot figure out why
# This is resulting in too much spam logs, which breaks the PR report.
# python -m pydocstyle ${PYTHON_MODULES} |& tee pydocstyle.log
# echo "\${PIPESTATUS[0]}" | tee pydocstyle_status.log
"""
}
}
stage('Test') {
steps {
sh '''#!/usr/bin/env bash
set -Eeuxo pipefail
python3 -m coverage run --branch --source . -m pytest -rf --durations=30 --timeout 60 --log-cli-level=DEBUG -s -v
'''
}
}
stage('Coverage') {
steps {
sh '''#!/usr/bin/env bash
set -Eeux
python3 -m coverage report --show-missing |& tee coverage.log
echo "${PIPESTATUS[0]}" | tee coverage_status.log
'''
}
}
stage('Build') {
steps {
sh '''#!/usr/bin/env bash
set -Eeux
# build to binary with cxfreeze library, it uses the setup_windows.py and pyproject.toml files
RELEASE_VERSION="0.0.1" python3 setup_windows.py build
'''
}
}
}
post {
unsuccessful {
script {
defaultHandlers.afterBuildFailed()
}
}
regression {
script {
defaultHandlers.afterBuildBroken()
}
}
fixed {
script {
defaultHandlers.afterBuildFixed()
}
}
always {
script {
defaultHandlers.afterPythonBuild()
}
}
}
}