Move Jenkins pipeline from Jenkins to repository
This commit is contained in:
parent
050a0dc97c
commit
29861e761f
1 changed files with 93 additions and 0 deletions
93
Jenkinsfile
vendored
Normal file
93
Jenkinsfile
vendored
Normal file
|
@ -0,0 +1,93 @@
|
|||
def pys = [
|
||||
[name: 'Python 3.6', docker:'python:3.6-stretch', tox:'py36,flake8', main: true],
|
||||
[name: 'Python 3.5', docker:'python:3.5-jessie', tox:'py35', main: false],
|
||||
[name: 'Python 2.7', docker:'python:2.7-stretch', tox:'py27', main: false]
|
||||
]
|
||||
|
||||
properties([
|
||||
durabilityHint('PERFORMANCE_OPTIMIZED'),
|
||||
buildDiscarder(logRotator(numToKeepStr: '5')),
|
||||
])
|
||||
|
||||
Map tasks = [failFast: true]
|
||||
|
||||
pys.each { py ->
|
||||
tasks[py.name] = {
|
||||
node {
|
||||
def image
|
||||
|
||||
stage("Prepare docker $py.name") {
|
||||
dir('dockerbuild') {
|
||||
deleteDir()
|
||||
buildDockerfile(py.docker)
|
||||
image = docker.build("dosage-$py.docker")
|
||||
}
|
||||
}
|
||||
|
||||
stage("Build $py.name") {
|
||||
image.inside {
|
||||
checkout scm
|
||||
sh '''
|
||||
git clean -fdx
|
||||
git fetch --tags
|
||||
'''
|
||||
|
||||
try {
|
||||
sh "tox -e $py.tox"
|
||||
} catch (err) {
|
||||
echo "tox failed: ${err}"
|
||||
currentBuild.result = 'UNSTABLE'
|
||||
}
|
||||
|
||||
if (py.main) {
|
||||
sh """
|
||||
python setup.py sdist bdist_wheel
|
||||
"""
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage ("Archive $py.name") {
|
||||
archiveArtifacts artifacts: '.tox/dist/*.zip', fingerprint: true
|
||||
if (py.main) {
|
||||
archiveArtifacts artifacts: 'dist/*', fingerprint: true
|
||||
def buildVer = findFiles(glob: 'dist/*.tar.gz')[0].name.replaceFirst(/\.tar\.gz$/, '')
|
||||
currentBuild.description = buildVer
|
||||
|
||||
cobertura autoUpdateHealth: false,
|
||||
autoUpdateStability: false,
|
||||
coberturaReportFile: '.tox/cov-*.xml',
|
||||
failUnhealthy: false,
|
||||
failUnstable: false,
|
||||
maxNumberOfBuilds: 0,
|
||||
onlyStable: false,
|
||||
zoomCoverageChart: false
|
||||
warnings consoleParsers: [[parserName: 'flake8']]
|
||||
}
|
||||
junit '.tox/junit-*.xml'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
timestamps {
|
||||
ansiColor('xterm') {
|
||||
parallel(tasks)
|
||||
}
|
||||
}
|
||||
|
||||
def buildDockerfile(image) {
|
||||
def uid = sh(returnStdout: true, script: 'id -u').trim()
|
||||
def toxInst = 'apt-get update && apt-get -y install tox'
|
||||
if (image.contains('jessie')) {
|
||||
toxInst = 'pip install tox' // Dirty!
|
||||
}
|
||||
|
||||
writeFile file: 'Dockerfile', text: """
|
||||
FROM $image
|
||||
RUN $toxInst
|
||||
RUN useradd -mu $uid dockerjenkins
|
||||
"""
|
||||
}
|
||||
|
||||
// vim: set ft=groovy:
|
Loading…
Reference in a new issue