Jenkins создает журналы в подчиненных узлах - PullRequest
0 голосов
/ 13 июня 2018

Я пытаюсь переместить наши логи сборки jenkins на S3.Я использовал плагин Groovy и следующий скрипт в фазе сборки

// This script should be run in a system groovy script build step.

// The FilePath class understands what node a path is on, not just the path.
import hudson.FilePath

// Get path to console log file on master.
logFile = build.getLogFile()

// Turn this into a FilePath object.
logFilePathOnMaster = new FilePath(logFile)

logFileName = build.envVars["JOB_BASE_NAME"] + build.envVars["RT_RELEASE_STAGING_VERSION"]  + '.txt'

// Create remote file path obj to build agent.
remoteLogFile = new FilePath(build.workspace, logFileName)

// Copy contents of master's console log to file on build agent.
remoteLogFile.copyFrom(logFilePathOnMaster)

И затем я использую плагин S3 для передачи файлов .txt в S3.

Но этот скриптизвлекает файл журнала сборки из главного узла.Как журналы сборки переносятся с подчиненного на главный узел?Могу ли я получить доступ к файлу журнала сборки на моем подчиненном узле вообще без участия мастера?

Подчиненный узел должен сохранять журналы сборки при сборке где-нибудь?Я не могу найти это.

1 Ответ

0 голосов
/ 20 августа 2019

Я не очень знаком с Groovy, но вот решение, которое сработало для меня с использованием сценария оболочки.Я использую плагин параметра Node and Label для Jenkins, чтобы запустить наш Java-процесс на подчиненном узле.Задание запускается с помощью опции «Построить >> Выполнить оболочку».Журнал собирается в файл, как показано ниже:

    sudo java  -jar xxx.jar | sudo tee -a ${JOB_NAME}/${BUILD_NUMBER}.log 2>&1

Этот файл журнала затем передается на S3:

    sudo aws --region ap-south-1  s3  cp ${JOB_NAME}/${BUILD_NUMBER}.log  s3://bucket/JenkinsLogs/${JOB_NAME}/${BUILD_NUMBER}.log

. Он отлично работает для нас.Надеюсь, вам это тоже поможет.

...