dosage/tests/modules/Jenkinsfile
Tobias Gruetzmacher cc582ce6bb Jenkins: Remove timestamps & ansicolor wrapper
Both plugins have an option to be applied globally nowadays, so we don't
need to add it to the Jenkinsfile.
2021-03-19 14:27:56 +01:00

70 lines
2.1 KiB
Groovy

#!groovy
def prepareDocker () {
def img
stage('Prepare environment') {
dir('.imagebuild') {
def uid = sh returnStdout: true, script: 'id -u'
writeFile file: 'Dockerfile', text: """
FROM python:3.8-buster
RUN pip install pytest-cov PySocks && \\
useradd -m -u ${uid.trim()} jenkins
"""
img = docker.build('local:test-all-comics')
}
}
return img
}
def runTests() {
stage ('Install lib') {
sh "pip install --user -e .[css,dev]"
}
stage ('Run tests') {
timeout(time: 12, unit: 'HOURS') {
withCredentials([string(credentialsId: 'proxymap', variable: 'PROXYMAP')]) {
sh '''
TESTALL=1 py.test -v --cov=dosagelib --cov-report xml \
--alluredir=allure-data \
--tb=short -n10 --junitxml=junit.xml \
tests/modules/check_comics.py || true
'''
}
}
}
stage('Report') {
junit 'junit.xml'
publishCoverage calculateDiffForChangeRequests: true,
sourceFileResolver: sourceFiles('STORE_LAST_BUILD'),
adapters: [
coberturaAdapter('coverage.xml')
]
}
}
// MAIN //
node {
def img = prepareDocker()
stage('Checkout') {
checkout scm
}
img.inside {
runTests()
}
stage('Allure Report') {
copyArtifacts filter: 'allure-history.zip', optional: true,
projectName: JOB_NAME, selector: lastWithArtifacts()
if (fileExists('allure-history.zip')) {
unzip dir: 'allure-data', quiet: true, zipFile: 'allure-history.zip'
sh 'rm -f allure-history.zip'
}
sh 'docker run --rm -v $PWD:/work -u $(id -u) tobix/allure-cli generate allure-data'
zip archive: true, dir: 'allure-report', glob: 'history/**', zipFile: 'allure-history.zip'
publishHTML reportDir: 'allure-report', reportFiles: 'index.html', reportName: 'Allure Report'
}
}