From cd8525c8b15daba3569e3cb5dbdb5fab45a74286 Mon Sep 17 00:00:00 2001 From: William Petit Date: Tue, 11 Aug 2020 14:32:06 +0200 Subject: [PATCH] Ajout pipeline audit RGAA MSE Voir https://forge.cadoles.com/CNOUS/mse/issues/664 --- pipelines/mse-rgaa.jenkinsfile | 82 ++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 pipelines/mse-rgaa.jenkinsfile diff --git a/pipelines/mse-rgaa.jenkinsfile b/pipelines/mse-rgaa.jenkinsfile new file mode 100644 index 0000000..04cf57d --- /dev/null +++ b/pipelines/mse-rgaa.jenkinsfile @@ -0,0 +1,82 @@ +import hudson.tasks.test.AbstractTestResultAction + +@Library("cadoles") _ + +pipeline { + + parameters { + text(name: 'URLS', defaultValue: 'https://msedev.crous-toulouse.fr\nhttps://msedev.crous-toulouse.fr/envole/enregistrement\nhttps://msedev.crous-toulouse.fr/envole/page/faq\nhttps://msedev.crous-toulouse.fr/envole/page/?t=liens_utiles\nhttps://msedev.crous-toulouse.fr/envole/page/?t=mentions_legales\nhttps://msedev.crous-toulouse.fr/envole/message/new\nhttps://msedev.crous-toulouse.fr/envole/recuperation/email\nhttps://msedev.crous-toulouse.fr/envole/courriel/raz', description: 'Liste des URLs à tester, une par ligne') + string(name: 'USERNAME', defaultValue: '', description: "Nom d'utilisateur pour l'authentification Basic Auth, si nécessaire") + password(name: 'PASSWORD', defaultValue: '', description: "Mot de passe pour l'authentification Basic Auth, si nécessaire") + booleanParam(name: 'INCLUDE_WARNINGS', defaultValue: false, description: 'Inclure les avertissements') + booleanParam(name: 'INCLUDE_NOTICES', defaultValue: false, description: 'Inclure les notifications') + } + + options { + disableConcurrentBuilds() + } + + agent { + node { + label "mse" + } + } + + stages { + stage("Run RGAA audit") { + steps { + script { + def urls = params.URLS.split('\n') + + def count = 0 + urls.each { u -> + stage("Audit page '${u}'") { + def report = pa11y.audit(u.trim(), [ + reporter: 'junit', + username: params.USERNAME, + password: params.PASSWORD, + standard: 'WCAG2AA', + includeNotices: params.INCLUDE_NOTICES, + includeWarnings: params.INCLUDE_WARNINGS, + ]); + + writeFile file:"./report_${count}.xml", text:report + count++ + } + } + + junit "*.xml" + + rocketSend ( + channel: "#cnous-mse-dev", + avatar: 'https://jenkins.cadol.es/static/b5f67753/images/headshot.png', + message: """ + Audit RGAA | ${testStatuses()} + + - [Voir les tests](${env.RUN_DISPLAY_URL}) + + @here + """.stripIndent(), + rawMessage: true, + ) + + } + } + } + } + +} + +@NonCPS +def testStatuses() { + def testStatus = "" + AbstractTestResultAction testResultAction = currentBuild.rawBuild.getAction(AbstractTestResultAction.class) + if (testResultAction != null) { + def total = testResultAction.totalCount + def failed = testResultAction.failCount + def skipped = testResultAction.skipCount + def passed = total - failed - skipped + testStatus = "Passant(s): ${passed}, Échoué(s): ${failed} ${testResultAction.failureDiffString}, Désactivé(s): ${skipped}" + } + return testStatus +}