@@ -9,93 +9,115 @@ pipeline {
99 }
1010
1111 environment {
12- PYTHON_MODULES = ' argunparse test *.py '
12+ PYTHON_PACKAGE = ' argunparse'
1313 }
1414
15- agent any
15+ agent {
16+ dockerfile {
17+ additionalBuildArgs ' --build-arg USER_ID=${USER_ID} --build-arg GROUP_ID=${GROUP_ID}' \
18+ + ' --build-arg AUX_GROUP_IDS="${AUX_GROUP_IDS}" --build-arg TIMEZONE=${TIMEZONE}'
19+ label ' docker'
20+ }
21+ }
1622
1723 stages {
18- stage(' Matrix' ) {
19- matrix {
20-
21- axes {
22- axis {
23- name ' PYTHON_VERSION'
24- values ' 3.8' , ' 3.9' , ' 3.10'
25- }
26- }
27-
28- agent {
29- dockerfile {
30- additionalBuildArgs ' --build-arg USER_ID=${USER_ID} --build-arg GROUP_ID=${GROUP_ID}' \
31- + ' --build-arg AUX_GROUP_IDS="${AUX_GROUP_IDS}" --build-arg TIMEZONE=${TIMEZONE}' \
32- + ' --build-arg PYTHON_VERSION=${PYTHON_VERSION}'
33- label ' docker'
34- }
35- }
36-
37- stages {
3824
39- stage(' Lint' ) {
40- when {
41- environment name : ' PYTHON_VERSION ' , value : ' 3.10 '
42- }
43- steps {
44- sh """ #!/usr/bin/env bash
45- set -Eeux
46- python -m pylint ${ PYTHON_MODULES} |& tee pylint.log
47- echo "\$ {PIPESTATUS[0]}" | tee pylint_status.log
48- python -m mypy ${ PYTHON_MODULES} |& tee mypy.log
49- echo "\$ {PIPESTATUS[0]}" | tee mypy_status.log
50- python -m flake518 ${ PYTHON_MODULES} |& tee flake518.log
51- echo "\$ {PIPESTATUS[0]}" | tee flake518_status.log
52- python -m pydocstyle ${ PYTHON_MODULES} |& tee pydocstyle.log
53- echo "\$ {PIPESTATUS[0]}" | tee pydocstyle_status.log
54- """
55- }
56- }
25+ stage(' Lint' ) {
26+ environment {
27+ PYTHON_MODULES = " ${ env.PYTHON_PACKAGE.replace('- ', '_') } test *.py "
28+ }
29+ steps {
30+ sh """ #!/usr/bin/env bash
31+ set -Eeux
32+ python3 -m pylint ${ PYTHON_MODULES} |& tee pylint.log
33+ echo "\$ {PIPESTATUS[0]}" | tee pylint_status.log
34+ python3 -m mypy ${ PYTHON_MODULES} |& tee mypy.log
35+ echo "\$ {PIPESTATUS[0]}" | tee mypy_status.log
36+ python3 -m flake518 ${ PYTHON_MODULES} |& tee flake518.log
37+ echo "\$ {PIPESTATUS[0]}" | tee flake518_status.log
38+ python3 -m pydocstyle ${ PYTHON_MODULES} |& tee pydocstyle.log
39+ echo "\$ {PIPESTATUS[0]}" | tee pydocstyle_status.log
40+ """
41+ }
42+ }
5743
58- stage(' Test' ) {
59- steps {
60- sh ''' #!/usr/bin/env bash
61- set -Eeuxo pipefail
62- TEST_PACKAGING=1 python -m coverage run --branch --source . -m unittest -v
63- '''
64- }
65- }
44+ stage(' Test' ) {
45+ steps {
46+ sh ''' #!/usr/bin/env bash
47+ set -Eeuxo pipefail
48+ python3 -m coverage run --branch --source . -m unittest -v
49+ '''
50+ }
51+ }
6652
67- stage(' Coverage' ) {
68- when {
69- environment name : ' PYTHON_VERSION' , value : ' 3.10'
70- }
71- steps {
72- sh ''' #!/usr/bin/env bash
73- set -Eeux
74- python -m coverage report --show-missing |& tee coverage.log
75- echo "${PIPESTATUS[0]}" | tee coverage_status.log
76- '''
77- script {
78- defaultHandlers. afterPythonBuild()
79- }
80- }
81- }
53+ stage(' Coverage' ) {
54+ steps {
55+ sh ''' #!/usr/bin/env bash
56+ set -Eeux
57+ python3 -m coverage report --show-missing |& tee coverage.log
58+ echo "${PIPESTATUS[0]}" | tee coverage_status.log
59+ '''
60+ script {
61+ defaultHandlers. afterPythonBuild()
62+ }
63+ }
64+ }
8265
83- stage(' Codecov' ) {
84- environment {
85- CODECOV_TOKEN = credentials(' codecov-token-mbdevpl-argunparse' )
86- }
87- steps {
88- sh ''' #!/usr/bin/env bash
89- set -Eeuxo pipefail
90- python -m codecov --token ${CODECOV_TOKEN}
91- '''
92- }
93- }
66+ stage(' Codecov' ) {
67+ environment {
68+ CODECOV_TOKEN = credentials(' codecov-token-mbdevpl-argunparse' )
69+ }
70+ steps {
71+ sh ''' #!/usr/bin/env bash
72+ set -Eeuxo pipefail
73+ python3 -m codecov --token ${CODECOV_TOKEN}
74+ '''
75+ }
76+ }
9477
78+ stage(' Upload' ) {
79+ when {
80+ anyOf {
81+ branch ' main'
82+ buildingTag()
9583 }
84+ }
85+ environment {
86+ VERSION = sh(script : ' python3 -m version_query --predict .' , returnStdout : true ). trim()
87+ PYPI_AUTH = credentials(' mbdev-pypi-auth' )
88+ TWINE_USERNAME = " ${ PYPI_AUTH_USR} "
89+ TWINE_PASSWORD = " ${ PYPI_AUTH_PSW} "
90+ TWINE_REPOSITORY_URL = credentials(' mbdev-pypi-public-url' )
91+ }
92+ steps {
93+ sh """ #!/usr/bin/env bash
94+ set -Eeuxo pipefail
95+ python3 -m twine upload \
96+ dist/${ PYTHON_PACKAGE.replace('-', '_')} -${ VERSION} -py3-none-any.whl \
97+ dist/${ PYTHON_PACKAGE} -${ VERSION} .tar.gz \
98+ dist/${ PYTHON_PACKAGE} -${ VERSION} .zip
99+ """
100+ }
101+ }
96102
103+ stage(' Release' ) {
104+ when {
105+ buildingTag()
106+ }
107+ environment {
108+ VERSION = sh(script : ' python3 -m version_query .' , returnStdout : true ). trim()
109+ }
110+ steps {
111+ script {
112+ githubUtils. createRelease([
113+ " dist/${ PYTHON_PACKAGE.replace('-', '_')} -${ VERSION} -py3-none-any.whl" ,
114+ " dist/${ PYTHON_PACKAGE} -${ VERSION} .tar.gz" ,
115+ " dist/${ PYTHON_PACKAGE} -${ VERSION} .zip"
116+ ])
117+ }
97118 }
98119 }
120+
99121 }
100122
101123 post {
0 commit comments