2016-08-05 3 views
1

Я хочу сделать очень простую вещь - для каждого нового запроса на растяжение, который создается под моим репо, я хочу создать новое задание jenkins с конфигурацией similer (запустить несколько пакетов), что будет проверять ветвь, которая объединяется (а не ветвь назначения).работа Дженкинса для каждого запроса на растяжение

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

Как это сделать? Каждый Дженкинс плагин, который я нашел, создает рабочие места для всех моих ветвей, или для определенного списка отраслей, а не только на новые или просто неслиянных запросов выдвижными

ответ

0

ОК, наконец, я согласился, и тогда я подумал. Я нашел плагин jenkins под названием «Bitbucket pullrequest builder plugin», и это делает невероятно легким создание заданий для запросов на pull.Единственное, что я не мог заставить его работать с любым потребителем OAuth и должен был предоставить ему свои собственные учетные данные. Но кроме того, что он работает красиво.

+0

, возможно, добавить ссылку на плагин? – njzk2

+0

https://wiki.jenkins-ci.org/display/JENKINS/Bitbucket+pullrequest+builder+plugin –

+0

Работает ли он еще? Не могли бы вы предоставить номера версий jenkins, bitbucket (облако? По обещанию?) И плагин? Заранее спасибо –

2

Вот один способ, которым Вы могли бы решить эту проблему:

  1. Создайте задание шаблона, содержащее логику, которую вы хотите сделать для каждой новой ветви (т. Е. Запустите некоторую партию).
  2. Создайте задание, которое запускается для каждого нового запроса на перенос в вашем репо. Вероятно, вы можете сделать это с помощью Script SCM Plugin, используя короткий скрипт.
  3. Внутри этой заданной задачи клонируйте задание в # 1, используя Jobcopy Plugin. Замените все строки (например, git url) тем, что необходимо для работы.
  4. Вы можете написать другое задание, которое запускается через плагин Script SCM, когда необходимо удалить ветвь. Вы можете удалить его, используя Groovy Postbuild Plugin.
+0

Но это даст мне ветку, которая сливается, или ветку, к которой она присоединена? Проблема заключается в том, что «все, что необходимо для работы на рабочем месте», является динамическим именем ветки. –

+0

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

+0

Что касается разъяснения комментария «все, что необходимо для получения работы», плагин jobcopy просто заменяет строки в конфигурации одного задания тем, что вы ему рассказываете. Таким образом, вы, вероятно, обновите имя проекта Job, git url, параметры командной строки (и все, что вам нужно). Опять же, это полностью зависит от того, как шаблонная работа преобразуется в рабочее задание. –

0

Это очень похоже на то, что мы сделали в нашей команде (у нас более 10 филиалов развития, а также релиз много филиалов)

Я думаю, самый простой способ заключается в следующем:

Plugin следует использовать:

gerrit trigger plugin используется, чтобы получить срабатывает, когда есть новый коммит приходят в

job dsl plugin Используется для создания рабочих мест на основе сценария Dsl

build flow plugin Используется для определения выполнение потока

  1. Создать Дженкинс построить работу потока «EntryPoint» (Эта работа будет срабатывать, если есть новый совершить толчок для обзора)

  2. Создает на работе генератора задания (эту работу будет вызывать сценарий работы Dsl для создания рабочих мест шаблона на основе входных параметров, такие, как ветвь)

  3. Создать новую работу, чтобы сделать работу по очистке или, как сказал Даниэль, вы можете сделать это с заводным постом построить

  4. Внутри задания потока сборки, простого поток следующего

    //Get current branch from gerrit trigger plugin 
    def currentBranch = params[GERRIT_BRANCH] 
    //Invoke job generator job and pass the branch info to it 
    build ("job_generator",BRANCH:currentBranch) 
    //Invoke the generated job by job_generator 
    build("$currentBrnch_Build") 
    //Remove the generated job 
    build("CleanUpJob") 
    
+0

Но будет это дает мне ветку, которая сливается, или ветку, к которой она присоединена? –

+0

Если вы имеете в виду, какой код он выдает, то это фиксация, которую вы нажали. – Tim

+0

Моя проблема в том, что я не понимаю, как я предполагаю получить название ветки. Я получаю, как запускать работу jenkins, когда ветвь X запрашивает слияние в ветку Y, и я получаю, как создать новое задание с разными параметрами, но я не знаю, как получить имя ветки X. –

Смежные вопросы