-
Notifications
You must be signed in to change notification settings - Fork 0
/
Jenkinsfile
90 lines (84 loc) · 2.49 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
pipeline {
agent {
docker {
image 'python:3.7'
}
}
stages {
stage ("Code pull"){
steps{
checkout scm
}
}
stage('Build environment') {
steps {
sh 'pip install --no-cache-dir -r requirements/dev.txt'
}
}
stage('Run tox Environments') {
steps {
script {
def envs = sh(returnStdout: true, script: "tox -l").trim().split('\n')
def cmds = envs.collectEntries({ tox_env ->
[tox_env, {
sh "tox --parallel--safe-build -vve $tox_env"
}]
})
parallel(cmds)
}
recordIssues(tools: [flake8(pattern: 'flake8.txt')])
}
post{
always{
step([$class: 'CoberturaPublisher',
autoUpdateHealth: true,
autoUpdateStability: true,
coberturaReportFile: 'coverage.xml',
failNoReports: false,
failUnhealthy: false,
failUnstable: false,
maxNumberOfBuilds: 10,
onlyStable: false,
sourceEncoding: 'ASCII',
zoomCoverageChart: false])
}
}
}
stage("PyPi") {
when {
buildingTag()
}
environment {
PYPI = credentials('PyPi')
}
steps {
sh '''python setup.py bdist_wheel
twine upload dist/* --verbose --repository-url ${PYPI_URL} -u ${PYPI_USR} -p ${PYPI_PSW}
'''
}
post {
always {
archiveArtifacts(allowEmptyArchive: true, artifacts: 'dist/*whl', fingerprint: true)
}
}
}
}
post {
always{
sh "make clean"
}
failure {
emailext(subject: "FAILED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'", body: """<p>FAILED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]':</p>
<p>Check console output at <a href='${env.BUILD_URL}'>${env.JOB_NAME} [${env.BUILD_NUMBER}]</a></p>""",
attachLog: true,
compressLog: true,
mimeType: 'text/html',
recipientProviders: [[$class: 'DevelopersRecipientProvider']])
}
}
options {
skipDefaultCheckout(true)
buildDiscarder(logRotator(numToKeepStr: '10'))
timestamps()
}
}