Select Git revision
Jenkinsfile

SEBASTIA Yannick authored
Jenkinsfile 4.00 KiB
pipeline {
agent any
stages {
// Liaison du pipeline au dépot scmmanager
// stage ('link') {
// agent any
// steps{
// checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: 'scmadmin', url: 'http://scm:8080/scm/repo/scmadmin/test/code/sources/master/']]])
// sh 'ls -l'
// }
//
// }
// Analyse statique du Dockerfile de test
stage ('Test') {
parallel {
stage ('Test Dockerfile') {
agent {
docker {
image 'docker.io/hadolint/hadolint:v2.12.0-alpine'
}
}
// Exécution des tests et création d'un fichier pour le stockage des tests et publication des résultats
steps {
sh 'touch hadolint.json'
sh 'find ./ -iname "Dockerfile" | xargs hadolint -f json | tee -a hadolint.json'
recordIssues qualityGates: [[threshold: 1, type: 'TOTAL', unstable: false]], tools: [hadoLint(pattern: 'hadolint.json')]
// supression du fichier après publication
sh 'rm hadolint.json'
}
}
// Exécution des analyses de qualité de code
stage ('tests statiques') {
// Création d'un agent à partir de notre dockerfile d'intégration
agent {
dockerfile {
dir ''
filename 'Dockerfile'
}
}
steps {
echo "Réalisation des tests statiques"
sh 'flake8 --format=pylint > flake8_output.txt || true'
// Publication des résultats
echo "Publication des erreurs"
recordIssues(tools: [flake8(pattern: 'flake8_output.txt')])
sh 'rm flake8_output.txt'
}
}
// Exécution tes tests unitaires
stage ('tests unitaires') {
agent {
dockerfile {
dir ''
filename 'Dockerfile'
}
}
steps {
echo "Réalisation des tests unitaires"
// Copie du résultat des tests dans le fichier output.xml et affichage de la couverture de code
sh 'pytest --cov=utilities -v tests/ --junitxml=./xmlReport/output.xml'
// Couverture de code dans le fichier coverage.xml
sh 'python -m coverage xml'
// Plublication de la couverture de code avec cobertura
echo "publication couverture de code"
cobertura autoUpdateHealth: false, autoUpdateStability: false, coberturaReportFile: 'coverage*.xml', conditionalCoverageTargets: '70, 0, 0', failUnhealthy: false, failUnstable: false, lineCoverageTargets: '80, 0, 0', maxNumberOfBuilds: 0, methodCoverageTargets: '80, 0, 0', onlyStable: false, sourceEncoding: 'ASCII', zoomCoverageChart: false
// Publication des tests unitaires
echo "Publication des tests unitaires"
xunit checksName: '', tools: [JUnit(excludesPattern: '', pattern: 'xmlReport/output.xml', stopProcessingIfError: true)]
}
}
}
}
// Build et Déploiement de l'image de livraison sur le dépôt scm
stage('Deploy') {
agent any
steps {
script {
docker.build("test:${env.BUILD_ID}", "./app")
// docker.withRegistry('http://localhost:5000') {
// docker.build("test:${env.BUILD_ID}", "./app").push()
// }
}
}
}
}
}