Как получить последнюю фиксацию от gocd и определить, изменила ли она какую-то конкретную папку?

Я использую инструмент непрерывной доставки gocd + git. Мой проект состоит из множества подпроектов. Я не хочу перестраивать все подпроекты при каждой фиксации и, таким образом, создавать один конвейер для каждого подпроекта. Я знаю, что для каждого конвейера, скажем, для проекта1, я должен выбрать соответствующий рабочий каталог и запустить что-то вроде этого:

  1. получить git commit, который запустил сборку gocd.
  2. определить, содержат ли изменения в этой фиксации папку project1
  3. если изменения во всем проекте также повлияли на папку проекта1, запустите пользовательскую команду сборки для проекта1.

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


person Baurzhan    schedule 26.02.2016    source источник


Ответы (3)


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

Для быстрого взлома вы можете использовать поле «Черный список» при добавлении материала. По сути, это говорит о том, что конвейер не запускает (начинает сборку), когда эти файлы (введенные в поле «Черный список») изменяются в фиксации.

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

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

person RaviTezu    schedule 29.04.2016

Как обнаружить влияние коммита на папку в bash?

Вы можете использовать git diff --name-only.

git diff --name-only <commit1> <commit2>

выведет список файлов, которые были созданы/изменены/удалены между двумя фиксациями.

git diff --name-only <commit1> <commit2> -- directory/path/

перечислит модификации внутри directory/path/

person LeGEC    schedule 26.02.2016

Здесь приведен частичный ответ (каждая фиксация записывается в какую-либо переменную среды) https://github.com/gocd/gocd/issues/2001

person Baurzhan    schedule 05.04.2016