Allure – фреймворк для создания репортов о результатах выполнения тестов.
Для Jenkins имеется плагин allure-jenkins-plugin, который сегодня и будем подключать в Scripted Pipeline Jenkins-а. Документация тут>>> и тут>>>.
Устанавливаем плагин:
Переходим в http://jenkinsurl/configureTools/, настраиваем Allure Commandline:
Переходим в http://jenkinsurl/pipeline-syntax/, и генерируем скрипт:
В результате весь скрипт наших автотестов выглядит сейчас так:
#!/usr/bin/env groovy node { stage('Run tests') { dir ('ciscripts') { git branch: "${DEPLOYMENT_REPO_BRANCH}", url: "${DEPLOYMENT_REPO_URL}", credentialsId: "jenkins-github" } def tests = load 'ciscripts/api_tests/main.groovy' try { tests.notifySlack() tests.runTests("${XML_CONFIG}") } catch (e) { currentBuild.result = 'FAILURE' throw e } finally { tests.notifySlack(currentBuild.result) stage('Reports') { allure([ includeProperties: false, jdk: '', properties: [], reportBuildPolicy: 'ALWAYS', results: [[path: 'target/allure-results']] ]) } } } }
stage('Reports')
вынесен в try/catch
и выполняется в finally
, что бы сгенерировать репорты в любом случае, даже если stage('Run tests')
завершится с ошибкой.
Скрипт ciscripts/api_tests/main.groovy
: (настройка уведомлений в Slack есть в посте Jenkins: уведомление в Slack из Jenkins Scripted Pipeline):
#!/usr/bin/env groovy def notifySlack(String buildStatus = 'STARTED') { // Build status of null means success. buildStatus = buildStatus ?: 'SUCCESS' def color if (buildStatus == 'STARTED') { color = '#D4DADF' } else if (buildStatus == 'SUCCESS') { color = '#BDFFC3' } else if (buildStatus == 'UNSTABLE') { color = '#FFFE89' } else { color = '#FF9FA1' } def msg = "${buildStatus}: `${env.JOB_NAME}` #${env.BUILD_NUMBER}:\n${env.BUILD_URL}allure/" slackSend(color: color, message: msg) } def runTests(xml_config='1') { docker.image('maven').inside('-v /var/run/docker.sock:/var/run/docker.sock -v /home/admin/.m2:/root/.m2') { git branch: "${APITESTS_REPO_BRANCH}", url: "${APITESTS_REPO_URL}", credentialsId: "jenkins-github" sh "mvn test -Dxml.file=${xml_config}" } } return this
Запускаем билд:
И результаты:
Готово.