Как настроить Jenkins для показа моих журналов в рабочей области?

Я использую Jenkins для CI - и хочу, чтобы можно было открыть журналы, поэтому нам не нужно подключаться к ящику CI, чтобы узнать, что происходит.

Есть ли плагин, который будет делать это? Или мне просто нужно написать script?

Ответ 1

Мой ответ о чтении файлов журнала приложений/контейнеров из разных ящиков, чем работает Jenkins. Например, если вы используете Jenkins для создания своих войн и затем развертываете их в нескольких средах, и вы хотите прочитать файлы журналов с вашего сервера Jenkins CI без необходимости вручную ssh/telnet других полей.

Вы можете создать проект/работу Jenkins, который сделает это за вас, после создания проекта Jenkins вы найдете параметр "Настройка" и внутри него есть опция в разделе "Сборка", где вы можете написать оболочку script:

Shell script area

Ваш script может быть примерно таким:

#!/bin/sh

USER=<your ssh user>
HOST=<your remote host>
LOG_DIR=<your log file location>
FILE=<your log file>

cmd="ssh [email protected]$HOST cat $LOG_DIR/$FILE"
echo $cmd
$cmd

Или что-то более сложное, например, передать параметры перед созданием Jenkins Job, чтобы ваши пользователи могли выбирать, какую среду и файл журнала они хотят видеть, есть опция "Эта сборка параметризована", которую вы можете выбрать и добавить параметры:

Adding parameters

С этой конфигурацией пользователь увидит что-то подобное при попытке построить проект:

enter image description here

Оболочка script может использовать следующие параметры:

#!/bin/sh

USER=<your ssh user>
LOG_DIR_DEV=<log files location in dev>
LOG_DIR_QA=<log files location in qa>

if [ $ENVIRONMENT = "dev" ]; then
  HOST=<your remote host for dev>
  LOG_DIR=$LOG_DIR_DEV
fi
if [ $ENVIRONMENT = "QA" ]; then
  HOST=<your remote host for qa>
  LOG_DIR=$LOG_DIR_QA
fi

echo ENVIRONMENT=$ENVIRONMENT
cmd="ssh [email protected]$HOST cat $LOG_DIR/$FILE"
echo $cmd
$cmd

После создания задания они могут видеть вывод из журналов в Jenkins Job Console, например:

Console Output

Если ваши файлы журнала слишком длинны, возможно, вы можете использовать "хвост" вместо "cat" в script.

Ответ 2

Если вы имеете в виду общий вывод сборки Jenkins, это доступно через веб-интерфейс для каждой сборки под ссылкой "Выход консоли".

Если вы имеете в виду конкретный файл журнала, сгенерированный в рабочей области во время сборки, вы можете выбрать опцию "Архивировать артефакты" в разделе "Послестрочные шаги" вашей конфигурации задания.

Здесь вы можете указать шаблон файла, например. **/*.log.

Любые файлы в рабочей области, соответствующие этому шаблону, будут архивироваться в конце каждой сборки и будут отображаться на веб-странице сборки.

Обратите внимание, что сборка завершится неудачно, если никакие файлы не соответствуют этому шаблону.

Ответ 3

Вы можете создавать журналы во время сборки и прикреплять их как артефакт, однако ядро ​​jenkins не позволяет вам сохранять консольный журнал в рабочей области. Если вы хотите сохранить консольный журнал, вам нужно будет установить плагин ConsoleLogToWorkspace. Этот плагин даст вам возможность сохранить весь журнал консоли jenkins.