Как написать отчет об артефакте импорта last_successful_build плагина jenkins в текущую сборку - PullRequest
0 голосов
/ 29 мая 2018

Я написал плагин, следующий за

http://www.baeldung.com/jenkins-custom-plugin

И он генерирует HTML-отчет

            File artifactsDir = build.getArtifactsDir();
            String path = artifactsDir.getCanonicalPath() + REPORT_TEMPLATE_PATH;
            File reportFile = new File("path");
            // write report's text to the report's file

, и для следующей сборки я хочу импортировать этот отчетфайл, чтобы увидеть изменения

Я пробовал это, но ни одно из них не работает

build.getPreviousSuccessfulBuild().getArtifactManager().root() + REPORT_TEMPLATE_PATH
// fail with File not found, but the file is there in bash
build.getPreviousSuccessfulBuild().getArtifactsDir() + REPORT_TEMPLATE_PATH
// null pointer exception, seems to be generated by getArtifactsDir()
build.getPreviousBuild().getArtifactManager().root() + REPORT_TEMPLATE_PATH

Так как я могу получить последний файл отчета об успешной сборке в текущей сборке?

1 Ответ

0 голосов
/ 13 сентября 2018

Вот как я это сделал на конвейере.Я удалил части исходного кода, я надеюсь, что я не внес ошибку.Я также убрал обработку ошибок для ясности:

// find last successful build
def lastSuccessfulBuild = currentBuild.getPreviousBuild()
while (lastSuccessfulBuild && (lastSuccessfulBuild.currentResult != 'SUCCESS')) {
    lastSuccessfulBuild = lastSuccessfulBuild.getPreviousBuild()
}

// here I go for a file named 'crc.txt'
// this works only if you have a
// archiveArtifacts artifacts: 'crc.txt', fingerprint: true
// somewhere in your build
def build = lastSuccessfulBuild?.getRawBuild()
def artifact = build.getArtifacts().find { it.fileName == 'crc.txt' }
def uri = build.artifactManager.root().child(artifact.relativePath).toURI()
def content = uri.toURL().text

Когда я сравниваю наши решения: вы не используете child() и у вас есть относительный путь в REPORT_TEMPLATE_PATH, а я получаю его из артефакта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...