Могу ли я использовать Jenkins Slaves для автоматизированного тестирования в разных операционных системах?

Я настраиваю рабочий процесс CI с помощью Jenkins. У меня есть различные базы кода, которые я хотел бы протестировать в разных операционных системах от Windows Server 2012 до 2003, а также в Red Hat и т. д.

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

Конкретными вопросами являются такие вещи, как:

  1. Если мастер выполняет проект, где определяется проект и где выполняется задание?
  2. Если я хочу выполнить задание, которое тестирует язык, который я не хочу поддерживать в основной операционной системе (например, Ruby в Windows), мне все еще нужно, чтобы мастер знал об этом языке, чтобы определить задание, скажем установив соответствующий плагин?
  3. Если я определяю подчиненное устройство, которое работает внутри виртуальной машины, и я останавливаю виртуальную машину, когда виртуальная машина снова запускается, мне придется запускать какую-то задачу запуска на подчиненном устройстве или предварительно выполнять задачу на главном устройстве, чтобы повторно зарегистрировать подчиненное устройство, прежде чем я смогу запустить проект, работающий на подчиненном устройстве?
  4. Когда подчиненная задача завершается и результаты возвращаются, сохраняются ли эти результаты на ведущем устройстве, чтобы я мог закрыть подчиненное устройство и по-прежнему иметь доступ к предыдущим результатам тестового запуска и информации о тенденциях?

Заранее благодарю за любой совет.


person Bill Hurt    schedule 25.03.2015    source источник


Ответы (1)


  1. Если мастер выполняет проект, где определяется проект и где выполняется задание?

Задания определяются и хранятся на ведущем, они выполняются на ведомых машинах. Вы можете определить, какие задания будут выполняться на каких ведомых устройствах, используя метки.

  1. Если я хочу выполнить задание, которое тестирует язык, который я не хочу поддерживать в основной операционной системе (например, Ruby в Windows), мне все еще нужно, чтобы мастер знал об этом языке, чтобы определить задание, скажем установив соответствующий плагин?

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

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

Это зависит от того, как вы подключаете Slave к Master. Например, если вы подключаете компьютер с Windows с помощью метода запуска: «Разрешить Jenkins управлять этим подчиненным устройством Windows как службой Windows». Он должен автоматически переподключиться, когда ведомое устройство снова будет в сети. Однако есть некоторые настройки, необходимые для того, чтобы заставить это работать.

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

Журнал консоли хранится на Мастере. Это, вероятно, то, что вы хотите.

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

person LeoLiu    schedule 25.03.2015
comment
Если вы настроили ведомое устройство с надлежащей средой сборки, означает ли это, что я должен в основном выполнить полную установку Jenkins на целевом ведомом устройстве, определить задание там и просто запустить его с главного устройства? - person Bill Hurt; 26.03.2015
comment
Правильная среда сборки просто означает, что ведомое устройство настроено с помощью инструментов, необходимых для запуска сборки. Такие вещи, как git, java sdk, g++ и т. д. На подчиненной машине не обязательно должен быть Jenkins. Только Мастер. Задания также определяются на Мастере. Раб просто строит ваши рабочие места. Подумайте о простом примере, где вы определяете задание на Мастере для выполнения команды «дата» в цикле. Для вашего Windows Slave вам нужно настроить его с помощью Cygwin для запуска команды оболочки. Запустите задание на ведущем, он делегирует его ведомому, и все готово. - person LeoLiu; 26.03.2015
comment
Спасибо, должно получиться. - person Bill Hurt; 26.03.2015