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
Запускаем билд:
И результаты:
Готово.





