Jenkins" Console Output " расположение журнала в файловой системе
Я хочу получить доступ к выводу консоли Дженкинса и grep в качестве шага сборки post в той же работе, которая создает этот вывод. Перенаправление журналов с помощью >> log.txt не является решением, так как это не поддерживается моими шагами сборки.
Сборка:
echo "This is log"
Шаг сборки Post:
grep "is" path/to/console_output
Где находится конкретный файл журнала, созданный в файловой системе?
6 ответов:
У@Bruno Lavit есть отличный ответ, но если вы хотите, вы можете просто получить доступ к журналу и загрузить его в виде txt-файла в свое рабочее пространство с URL задания:
${BUILD_URL}/consoleTextТогда это всего лишь вопрос загрузки этой страницы в ваш
${Workspace}
- вы можете использовать "
Invoke ANT" и использовать GET target- в Linux вы можете использовать wget для загрузки его в рабочую область
- и т. д.
Удачи!
Править: Фактический файл журнала в файловой системе не находится на ведомом устройстве, но хранится в главной машине. Вы можете найти его в разделе:
$JENKINS_HOME/jobs/$JOB_NAME/builds/lastSuccessfulBuild/logЕсли вы ищете другую сборку, просто замените
lastSuccessfulBuildна ту сборку, которую вы ищете.
Вы можете установить этот плагинJenkins Console log для записи журнала в рабочую область в качестве шага сборки post.
Вы должны построить плагин самостоятельно и установить плагин вручную.
Далее, вы можете добавить шаг сборки post следующим образом:
С дополнительным после построения шаг (скрипт), вы сможете грэп ваш журнал.
Надеюсь, это помогло :)
Дженкинс сохраняет журнал консоли на master. Если вам нужен программный доступ к журналу, и вы работаете на master, вы можете получить доступ к журналу, который уже есть у Дженкинса, без копирования его в артефакты или получения URL-адреса задания http.
Из http://javadoc.jenkins.io/archive/jenkins-1.651/hudson/model/Run.html#getLogFile () , это возвращает объект File для вывода консоли (в файловой системе Дженкинса это файл" log " в выводе сборки справочник).
В моем случае мы используем цепное (дочернее) задание для разбора и анализа сборки родительского задания.
При использовании скрипта groovy, выполняемого в Jenkins, вы получаете объект с именем "build"для выполнения. Мы используем это, чтобы получить http://javadoc.jenkins.io/archive/jenkins-1.651/hudson/model/Build.html для вышестоящего задания, затем вызовите это задание .getLogFile ().
Добавлен бонус; так как это просто файловый объект, мы вызываем .getParent (), чтобы получить папку, где Дженкинс хранит создайте сопутствующие объекты (например, тестовые XML, переменные среды и другие объекты, которые не могут быть явно представлены через артефакты), которые мы также можем анализировать.
Двойной дополнительный бонус; мы также используем матричные задания. Это иногда делает вывод о пути к файлу в системе болью. .getLogFile ().getParent() забирает всю боль.
Это предназначено для использования, когда у вас есть шаг сборки скрипта оболочки. Используйте только первые две строки, чтобы получить имя файла.
Вы можете получить файл журнала консоли (используя bash magic) для текущей сборки из скрипта оболочки таким образом и проверить его на наличие некоторой строки ошибки, не выполнив задание, если оно найдено:
logFilename=${JENKINS_HOME}/${JOB_URL:${#JENKINS_URL}} logFilename=${logFilename//job\//jobs\/}builds/${BUILD_NUMBER}/log grep "**Failure**" ${logFilename} ; exitCode=$? [[ $exitCode -ne 1 ]] && exit 1Вы должны построить имя файла, взяв JOB_URL, убрав ведущую часть имени хоста, добавив путь к JENKINS_HOME, заменив "/ job/ " на " / jobs/", чтобы обработать все вложенные папки, добавляющие текущий номер сборки и имя файла.
Grep возвращает 0, если строка найдена, и 2, Если есть ошибка файла. Таким образом, 1 означает, что он нашел строку индикации ошибки. Это приводит к сбою сборки.
Я нашел консольный вывод моей работы в браузере по следующему адресу:
http://[Jenkins URL]/job/[Job Name]/default/[Build Number]/console
Для очень больших выходных журналов это может быть трудно открыть (задержка сети, прокрутка). Это решение я использую для проверки больших файлов журнала:
https://URL/jenkins/job/name/В левой колонке вы видите:
View as plain text. Сделайте правый щелчок мыши на нем и выберитеsave links as. Теперь вы можете сохранить свой Большой Журнал как .txt-файл. Откройте его с помощью notepad++, и вы можете легко просматривать свои журналы без сетевых задержек во время прокрутки.

Comments