1
0
mirror of https://github.com/firstBitMarksistskaya/jenkins-lib.git synced 2025-02-12 14:57:15 +02:00

Сохранение allure

This commit is contained in:
Nikita Gryzlov 2020-10-19 16:48:07 +03:00 committed by kuzja086
parent 58ae0ac197
commit 6893b6610e
7 changed files with 134 additions and 8 deletions

View File

@ -48,9 +48,9 @@ interface IStepExecutor {
def catchError(Closure body)
def httpRequest(String url, String outputFile)
def httpRequest(String url, String outputFile, String responseHandle, boolean wrapAsMultipart)
def error(String errorMessage)
def allure(List<String> results)
}

View File

@ -113,4 +113,16 @@ class StepExecutor implements IStepExecutor {
def error(String errorMessage) {
steps.error errorMessage
}
@Override
def allure(List<String> results) {
steps.allure([
commandline: 'allure',
includeProperties: false,
jdk: '',
properties: [],
reportBuildPolicy: 'ALWAYS',
results: results
])
}
}

View File

@ -29,7 +29,9 @@ class InitInfobase implements Serializable {
Logger.println("Запуск миграции ИБ")
// Запуск миграции
steps.cmd('oscript_modules/bin/vrunner run --command "ЗапуститьОбновлениеИнформационнойБазы;ЗавершитьРаботуСистемы;" --execute \\$runnerRoot/epf/ЗакрытьПредприятие.epf --ibconnection "/F./build/ib"')
steps.catchError {
steps.cmd('oscript_modules/bin/vrunner run --command "ЗапуститьОбновлениеИнформационнойБазы;ЗавершитьРаботуСистемы;" --execute \\$runnerRoot/epf/ЗакрытьПредприятие.epf --ibconnection "/F./build/ib"')
}
} else {
Logger.println("Шаг миграции ИБ выключен")
}
@ -40,9 +42,11 @@ class InitInfobase implements Serializable {
'oscript_modules/vanessa-automation-single/vanessa-automation-single.epf'
)
config.initInfobaseOptions.additionalMigrationSteps.each {
Logger.println("Первичная инициализация командой ${it}")
steps.cmd("oscript_modules/bin/vrunner ${it} --ibconnection \"/F./build/ib\"")
steps.catchError {
config.initInfobaseOptions.additionalMigrationSteps.each {
Logger.println("Первичная инициализация командой ${it}")
steps.cmd("oscript_modules/bin/vrunner ${it} --ibconnection \"/F./build/ib\"")
}
}
steps.stash('init-allure', 'build/out/allure/*', true)

View File

@ -0,0 +1,45 @@
package ru.pulsar.jenkins.library.steps
import hudson.FilePath
import ru.pulsar.jenkins.library.IStepExecutor
import ru.pulsar.jenkins.library.configuration.JobConfiguration
import ru.pulsar.jenkins.library.ioc.ContextRegistry
import ru.pulsar.jenkins.library.utils.FileUtils
import ru.pulsar.jenkins.library.utils.Logger
class PublishAllure implements Serializable {
private final JobConfiguration config;
PublishAllure(JobConfiguration config) {
this.config = config
}
def run() {
IStepExecutor steps = ContextRegistry.getContext().getStepExecutor()
Logger.printLocation()
steps.unstash('init-allure')
FilePath allurePath = FileUtils.getFilePath('build/out/allure')
if (!allurePath.exists()) {
Logger.println("Отсутствуют результаты allure для публикации")
}
List<String> results = new ArrayList<>();
def allureSubDirs = allurePath.listDirectories()
if (allureSubDirs.size() > 0) {
allureSubDirs.forEach({ filePath -> results.add(getPath(filePath)) })
} else {
results.add(getPath(allurePath))
}
steps.allure(results)
}
private static String getPath(FilePath filePath) {
filePath.getBaseName() + File.separator + filePath.getName()
}
}

View File

@ -0,0 +1,27 @@
package ru.pulsar.jenkins.library.utils
import hudson.FilePath
import jenkins.model.Jenkins
import ru.pulsar.jenkins.library.IStepExecutor
import ru.pulsar.jenkins.library.ioc.ContextRegistry
class FileUtils {
static FilePath getFilePath(String path) {
IStepExecutor steps = ContextRegistry.getContext().getStepExecutor()
def env = steps.env();
String nodeName = env.NODE_NAME;
if (nodeName == null) {
steps.error 'Переменная среды NODE_NAME не задана. Запуск вне node или без agent?'
}
if (nodeName == "master") {
return new FilePath(new File(path));
} else {
return new FilePath(Jenkins.getInstanceOrNull().getComputer(nodeName).getChannel(), path);
}
}
}

View File

@ -66,8 +66,6 @@ void call() {
expression { config.stageFlags.initSteps }
}
steps {
printLocation()
// Инициализация и первичная миграция
initInfobase config
}
@ -169,6 +167,14 @@ void call() {
}
}
}
post('post-stage') {
always {
node('agent') {
saveResults config
}
}
}
}
}

32
vars/saveResults.groovy Normal file
View File

@ -0,0 +1,32 @@
import ru.pulsar.jenkins.library.configuration.JobConfiguration
import ru.pulsar.jenkins.library.ioc.ContextRegistry
import ru.pulsar.jenkins.library.steps.PublishAllure
def call(JobConfiguration config) {
ContextRegistry.registerDefaultContext(this)
def publishAllure = new PublishAllure(config)
publishAllure.run()
// step([
// $class: 'CucumberReportPublisher',
// fileIncludePattern: '*.json',
// jsonReportDirectory: 'build/out/cucumber'
// ])
//
// step([
// $class: 'CukedoctorPublisher',
// featuresDir: 'build/out/cucumber',
// format: 'HTML',
// hideFeaturesSection: false,
// hideScenarioKeyword: false,
// hideStepTime: false,
// hideSummary: false,
// hideTags: false,
// numbered: true,
// sectAnchors: true,
// title: 'Living Documentation',
// toc: 'LEFT'
// ])
}