49 votes

Rapport de couverture de code Cobertura pour les travaux du pipeline jenkins

J'utilise le plugin pipeline pour Jenkins et j'aimerais générer un rapport de couverture de code pour chaque exécution et l'afficher avec l'interface utilisateur du pipeline. Existe-t-il un plugin que je puisse utiliser pour faire cela (par exemple Cobertura mais il ne semble pas être supporté par pipeline) ?

0 votes

Vous auriez dû fournir plus d'informations. Quel langage de programmation utilisez-vous ? Quel outil de construction préférez-vous ?

1 votes

J'ai des projets python, javascript et d'autres types de projets et j'ai utilisé Cobertura sur des projets libres pour afficher des rapports de couverture de code. Cependant, après être passé au pipeline, je n'ai pas l'interface utilisateur post-construction pour configurer Cobertura pour le projet.

1 votes

Vérifiez si votre plugin est supporté par par le travail sur les pipelines.

45voto

Roman Kutlak Points 547

Il y a un moyen d'ajouter une étape de pipeline pour publier votre rapport de couverture mais il ne s'affiche pas sous l'interface BlueOcean. Il s'affiche bien dans l'interface normale.

pipeline {
    agent any

    stages {
        ...
    }
    post {
        always {
            junit '**/nosetests.xml'
            step([$class: 'CoberturaPublisher', autoUpdateHealth: false, autoUpdateStability: false, coberturaReportFile: '**/coverage.xml', failUnhealthy: false, failUnstable: false, maxNumberOfBuilds: 0, onlyStable: false, sourceEncoding: 'ASCII', zoomCoverageChart: false])
        }
    }
}

Notez que l'un des paramètres du plugin Cobertura est le XML qu'il utilisera ('**/coverage.xml' dans l'exemple).

Si vous utilisez python, vous voudrez utiliser quelque chose comme :

nosetests --with-coverage --cover-xml --cover-package=pkg1,pkg2 --with-xunit test

4 votes

Vous êtes incroyable. Merci. Avez-vous un lien vers une quelconque documentation à ce sujet ?

38voto

hwjp Points 3041

Aujourd'hui, vous pouvez également utiliser le cobertura directement dans un fichier Jenkins

stage ("Extract test results") {
    cobertura coberturaReportFile: 'path-to/coverage.xml'
}

source : https://issues.jenkins-ci.org/browse/JENKINS-30700

6voto

chim Points 1799

La réponse de hwjp est correcte, mais il existe des paramètres supplémentaires que vous pouvez ajouter à la commande et qui ne sont pas faciles à trouver.

Une fois que vous avez installé le plugin Cobertura, vous pouvez trouver les options de l'étape cobertura dans

Page Job Dashboard -> Syntaxe des pipelines -> Référence des étapes

Il y a aussi un générateur d'extraits qui est très utile pour commencer à travailler.

Page Job Dashboard -> Syntaxe des pipelines

exemple de commande :

cobertura coberturaReportFile: 'coverage.xml', enableNewApi: true, lineCoverageTargets: '80, 60, 70'

enableNewApi est une bonne option à mettre à true, car la nouvelle API est beaucoup plus jolie :D la définition des objectifs de couverture fera automatiquement échouer le travail si la couverture du code est trop faible.

-2voto

SACn Points 1174

Générer un rapport en utilisant ligne de commande cobertura-report dans le répertoire spécifié et attachez les résultats comme artefacts.

cobertura-report   [--datafile   file]    --destination  dir  [--format
       html|xml]  [--encoding encoding]  directory [--basedir dir]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X