Skip to content
Snippets Groups Projects
Select Git revision
  • 092ca89527c687292242efa235944f9ac005aef2
  • master default protected
  • correction
3 results

Jenkinsfile

Blame
  • 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()
    //                  }
            }
          }
        }
    
        }
    }