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

#continuous-integration #hudson #jenkins #sonarqube

#непрерывная интеграция #хадсон #Дженкинс #sonarqube

Вопрос:

Группа, в которой я работаю, стандартизировала сборки Jenkins для непрерывной интеграции. Возврат кода запускает стандартную сборку, анализ Cobertura и публикацию в репозитории МОМЕНТАЛЬНЫХ СНИМКОВ Artifactory. Я только что закончил добавлять новую цель в главный файл сборки, который запустит запуск Sonar, но я не хочу, чтобы он запускался при каждой регистрации.

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

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

Ответ №1:

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

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

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

Комментарии:

1. 1 тоже не вижу лучшего способа. Мне тоже было бы интересно лучшее решение.

Ответ №2:

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

В конфигурации плагина sonar у него есть опции для пропуска сборок, вызванных изменением SCM. Таким образом, только ночная сборка запустит анализ сонара.

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

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

  1. Плагин Conditional BuildStep — это позволяет выполнять анализ sonar условно
  2. Подключаемый модуль Jenkins Environment Injector — позволяет вводить переменные, указывающие, как запускается сборка.