Мой ответ о чтении файлов журнала сервера приложений / контейнера из различных полей , чем работает Jenkins.Например, если вы используете Jenkins для построения своих войн, а затем развертываете их в нескольких средах и хотите читать файлы журналов с вашего CI-сервера Jenkins без необходимости вручную подключать другие ssh / telnet.
Вы можете создать проект / задание Jenkins, которое сделает это за вас, после создания проекта Jenkins вы найдете параметр Configure, а внутри него есть параметр в разделе Build, где вы можете написать сценарий оболочки:
Ваш сценарий может выглядеть примерно так:
#!/bin/sh
USER=<your ssh user>
HOST=<your remote host>
LOG_DIR=<your log file location>
FILE=<your log file>
cmd="ssh $USER@$HOST cat $LOG_DIR/$FILE"
echo $cmd
$cmd
Или что-то более сложное, например, передача параметров перед построением задания Jenkins, чтобы ваши пользователи могли выбиратькакую среду и файл журнала они хотят видеть, есть опция «Эта сборка параметризована», которую вы можете выбрать и добавить свои параметры:
При такой конфигурации пользовательбудет выглядеть примерно так при попытке создать проект:
Сценарий оболочки можетВот эти параметры:
#!/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 $USER@$HOST cat $LOG_DIR/$FILE"
echo $cmd
$cmd
После создания задания они могут видеть выходные данные из журналов в консоли заданий Jenkins, например:
Если ваши файлы журнала слишком длинные, возможно, вы можете использовать "tail" вместо "cat" в скрипте.