Запланировать конкретную цель сборки в Дженкинсе?

Группа, в которой я работаю, стандартизировала сборки Jenkins для непрерывной интеграции. Проверка кода запускает стандартную сборку, анализ Cobertura и публикацию в репозитории Artifactory SNAPSHOT. Я только что закончил добавлять новую цель в основной файл сборки, которая запустит запуск Sonar, но я не хочу, чтобы она запускалась при каждой регистрации.

Есть ли способ запланировать ночную сборку определенной цели сборки в Jenkins? Jenkins, очевидно, облегчает запланированные сборки, но каждый раз запускает обычную сборку проекта. Я хотел бы иметь возможность запланировать запуск цели сборки Sonar каждую ночь.

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


person Sam T.    schedule 21.10.2011    source источник


Ответы (2)


Вот один из способов сделать это, если вы согласны запускать сборку с помощью cron или другого инструмента планирования:

  • Сделайте сборку параметризованной и используйте параметр в файле сборки, чтобы решить должна ли цель сборки Sonar работать или нет.
  • Запустите сборку удаленно с помощью HTTP POST: отправив значения параметров в виде формы в http://[jenkins-host]/jobs/[jobname]/buildWithParameters. В зависимости от вашей версии и конфигурации Jenkins вам может потребоваться добавить Токен аутентификации и включите его в свой URL.
  • Аутентифицируйте свой POST, используя имя пользователя и пароль.

    wget --auth-no-challenge --http-user=USERNAME --http-password=PASSWORD "https://[jenkins-host]/job/[jobname]/buildWithParameters?token=<token defined in job configuration>&<param>=<value>&<param2>=<value2>"

person Anders Lindahl    schedule 22.10.2011
comment
+1 тоже не вижу лучшего способа. Я тоже был бы заинтересован в лучшем решении. - person Peter Schuetze; 28.10.2011

Я также ищу решение для этого. Мое текущее решение, на мой взгляд, состоит в том, чтобы создать 2 триггера в обычной сборке, один - ночная сборка, другой - опрос SCM.

В конфигурации плагина сонара есть возможность пропустить сборки, вызванные изменением SCM. Поэтому только ночная сборка запустит сонарный анализ.

У меня не было возможности проверить это сейчас, но я думаю, что это сработает.

Обновлено 19 декабря 2011 г. Приведенное выше решение не работает, если анализ сонара вызывается как отдельный этап сборки. Чтобы выполнить анализ сонара условно, вы можете использовать следующие 2 плагина:

  1. Условный плагин BuildStep — позволяет запускать анализ сонара условно.
  2. Подключаемый модуль Jenkins Environment Injector — позволяет вводить переменные, чтобы указать, как запускается сборка.
person Mingjiang Shi    schedule 17.12.2011