как получить доступ к "консольному выводу" Хадсона? - PullRequest
4 голосов
/ 30 мая 2011

У меня есть скрипт сборки bash, работающий под системой сборки Hudson, который записывает свой собственный файл журнала.Однако Hudson фиксирует все stdout и stderr сценария сборки, которые он выполняет, и отображает его как «консольный вывод» сборки.Кроме того, этот вывод сохраняется в истории сборки.

Как получить доступ к этому «выводу консоли» из самого скрипта?Я бы хотел 1) сохранить его как журнал вместе с артефактами;2) прикрепить его к уведомлению по электронной почте.Спасибо

Ответы [ 2 ]

7 голосов
/ 30 мая 2011
  1. Сохраняется вместе с артефактами (файл log в верхнем уровне каталога сборки, т.е. jobs/ имя задания /builds/ buildid /log).
  2. Он автоматически добавляется к электронному письму, которое отправляет Хадсон, хотя и урезается с самого начала.

Если вам нужно получить его где-то еще, есть два варианта:

  1. Вы можете обернуть скрипт в блок и передать его вывод через тройник. Итак, вы конвертируете:

    #!/bin/sh
    make this
    make that
    

    до:

    #!/bin/bash
    {
        make this
        make that
    } 2>&1 | tee output
    # Now the output is in file 'output' while Hudson did see it.
    

    К сожалению, я не уверен, как форсировать буферизацию строки в tee, поэтому печать журнала в реальном времени работает в Гудзоне (по крайней мере, в моей версии cygwin не упоминается опция -u).

  2. Вы можете использовать плагин Groovy и / или Плагин Groovy Postbuild для доступа к внутреннему API. «Системный» скрипт Groovy на этапе сборки и скрипт Groovy после сборки имеют доступ к объекту сборки (хотя и немного по-другому) типа hudson.model.AbstractBuild , и из него вы можете получить содержимое консоли с использованием метода hudson.model.Run # getLog (int) .

0 голосов
/ 04 марта 2015

Чтобы включить буферизацию строки в тройнике, просто запустите программу с unbuffer {command}, который входит в пакет expect. Другой альтернативой unbuffer является использование stdbuf -eL -oL {command}

...