1
0
Fork 0
cvprac/Jenkinsfile
Daniel Baumann d2e39936a0
Adding upstream version 1.3.1+dfsg.
Signed-off-by: Daniel Baumann <daniel@debian.org>
2025-02-05 14:15:47 +01:00

136 lines
4.3 KiB
Groovy

#!/usr/bin/env groovy
/**
* Jenkinsfile
*/
pipeline {
agent{ label 'exec'}
options {
buildDiscarder(
// Only keep the 10 most recent builds
logRotator(numToKeepStr:'10'))
}
environment {
projectName = 'CvpRac'
emailTo = 'eosplus-dev@arista.com'
emailFrom = 'eosplus-dev+jenkins@arista.com'
}
stages {
stage ('Checkout') {
steps {
checkout scm
}
}
stage ('Install_Requirements') {
steps {
sh """
[[ -d venv ]] && rm -rf venv
virtualenv --python=python2.7 venv
source venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
pip install -r dev-requirements.txt
pip install codecov
"""
// Stub dummy .cloudvision.yaml file
writeFile file: "test/fixtures/cvp_nodes.yaml", text: "---\n- node: 10.81.111.9\n username: cvpadmin\n password: cvp123\n"
}
}
stage ('Check_style') {
steps {
sh """
source venv/bin/activate
make clean
[[ -d report ]] || mkdir report
echo "exclude report" >> MANIFEST.in
echo "exclude htmlcov" >> MANIFEST.in
make check || true
make pep8 | tee report/pep8_report.txt
make pyflakes
make pylint | tee report/pylint.out || true
"""
step([$class: 'WarningsPublisher',
parserConfigurations: [[
parserName: 'Pep8',
pattern: 'report/pep8_report.txt'
],
[
parserName: 'pylint',
pattern: 'report/pylint.out'
]],
unstableTotalAll: '0',
usePreviousBuildAsReference: true
])
}
}
stage ('System Test') {
steps {
sh """
source venv/bin/activate
#make tests || true
nosetests --with-xunit --all-modules --traverse-namespace --with-coverage --cover-package=cvprac --cover-inclusive --cover-html test/system/* || true
"""
}
post {
always {
junit keepLongStdio: true, testResults: 'nosetests.xml'
publishHTML target: [
reportDir: 'cover',
reportFiles: 'index.html',
reportName: 'Coverage Report'
]
}
}
}
stage ('Docs') {
steps {
sh """
source venv/bin/activate
PYTHONPATH=. pdoc --html --html-dir docs --overwrite cvprac
"""
}
post {
always {
publishHTML target: [
reportDir: 'docs/cvprac',
reportFiles: 'index.html',
reportName: 'Module Documentation'
]
}
}
}
stage ('Cleanup') {
steps {
sh 'rm -rf venv'
}
}
}
post {
failure {
mail body: "${env.JOB_NAME} (${env.BUILD_NUMBER}) ${env.projectName} build error " +
"is here: ${env.BUILD_URL}\nStarted by ${env.BUILD_CAUSE}" ,
from: env.emailFrom,
//replyTo: env.emailFrom,
subject: "${env.projectName} ${env.JOB_NAME} (${env.BUILD_NUMBER}) build failed",
to: env.emailTo
}
success {
mail body: "${env.JOB_NAME} (${env.BUILD_NUMBER}) ${env.projectName} build successful\n" +
"Started by ${env.BUILD_CAUSE}",
from: env.emailFrom,
//replyTo: env.emailFrom,
subject: "${env.projectName} ${env.JOB_NAME} (${env.BUILD_NUMBER}) build successful",
to: env.emailTo
}
}
}