Дженкинс по электронной почте отправить отчет удаленного сервера огурец - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть требование, позвольте мне объяснить сценарий,

  • Это компьютер COMPUTER-A (сервер Jenkins), с помощью которого мы запустили конвейерную сборку
  • Первый шаг - создание виртуальной машины (COMPUTER-B) на компьютере vlab и получение IP
  • Вторым шагом будет выполнение testsuites.sh в COMPUTER-B через ssh, ниже - псевдокод

    steps {
      script {
        sh """
          ssh -i id_rsa -o StrictHostKeyChecking=no ${USER}@${env.IP} "nohup /home/testsuites.sh > foo.out 2> foo.err < /dev/null & "
        """
      }
    }
    

    этот скрипт запускается в фоновом режиме "mvn clean test", который запустит весь тестовый пример и сгенерирует отчет об огурце в конце сборки.

    пока это не работает нормально.

    Поскольку его запуск в фоновом режиме, задание Дженкинса не будет ждать и перейдет к следующему этапу

  • Третий шаг Jenkins Server COMPUTER-A отправит успешное письмо

Теперь, когда сборка прошла успешно, мне нужно отправить отчет о проверке огурца по другой почте. Как уведомить задание jenkins в COMPUTER-A (поскольку оно уже выполнено) для отправки почты с файлом отчета об огурцах, который находится на удаленном сервере COMPUTER-B.

Я могу запустить задание по кукурузе, чтобы проверить успешность сборки, но как уведомить Дженкинса об отправке электронного письма с отчетом об испытаниях огурца.

Ответы [ 2 ]

0 голосов
/ 18 ноября 2018

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

curl -X POST http://user:password@<jenkins-url>:8080/job/test/build

Если задание может выполняться на той же машине, результаты должны быть легко собраны, если нет, вы можете просто скопировать артефакты с помощью scp.

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

Возможно, лучшая идея - создать временного раба Дженкинса. Вы также можете сделать это через REST API: Создание-узла-с-REST-API

0 голосов
/ 12 ноября 2018

То, что вам нужно, это Тихий период

node {
    build job: 'FetchCucumberReport',
          quietPeriod: 60,// in secs -->1min
          wait: false
}

Итак, код, приведенный выше, запускает FetchCucumberReport Задание через 1 минуту. Если вы приблизительно знаете, сколько времени потребуется тестам для выполнения всех задач (скажем, 4 часа), задайте quietPeriod:14400 (секунд), и сборка будет запущена через 4 часа.

ОБНОВЛЕНО
Вам придется изучить вызовы API https://wiki.jenkins.io/display/JENKINS/Remote+access+API

Например,

curl -X POST -u user:password http://localhost:8080/job/FetchCucumberReport/build

Надеюсь, это поможет:)

...