2016-02-29 5 views
3

Наш проект вложен в моно-репозиторий. Представьте, у нас есть проект в папке «проекты». Например, «проекты/наш проект». Ну, мы хотели бы иметь возможность проверить наш .drone.yml на просто «наш проект», но, похоже, Drone хочет, чтобы файл конфигурации находился в корне проекта, и это нормально, мы можем с этим работать, команды "наших сборников. Проблема, с которой мы сталкиваемся, заключается в том, что мы хотим только запустить сборки, когда что-то в «нашем-проекте» изменится. Я не могу найти способ сделать это именно с Drone, поэтому наша ближайшая ближайшая ставка - conditions. Я полагаю, что мы можем создать пространство имен для всех наших филиалов для «нашего проекта», как этот «наш проект/некоторая ветвь». Тогда мы могли бы создать условия, чтобы работать только опирается на «наш-проект/какую-ветви» и «мастера» это было бы ограничить число «подделка строит» мы бежим от других ветвей проектов:Использование «Drone Conditions» для запуска сборки части репозитория

build: 
    when: 
    branch: 
     - master 
     - our-project/* 

Проблема заключается в том, что мы пытаемся вытащить запрос из ветки «наш-проект/» в «master», сборка не будет запущена, я предполагаю, потому что ее запускают на комманде, который не находится в главном или «наш-проект/»

Мой вопрос заключается в два раза: 1. Каков наилучший способ использовать беспилотник, используя шаблон моно хранилище (несколько проектов, один репозиторий) 2. Если дрон делает не имеют поддержки для этой модели или не предназначены для этого, что лучше всего подходит для ограничения «поддельных сборок»

Примечание: Мы могли бы в начале нашей проверки сборки внести изменения в наши подкатегории, и вернуть зеленый, если таковых нет. Я рекомендую этот подход?

+1

Эй, вы решили эту проблему? Мне нужен тот же самый .. запустить шаг на ветке «master» и на запросы на pull. – jakubka

ответ

0

Я предполагаю, что Дрон навязывает определенный макет проекта, потому что одно ограничение:

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

Следующие два препятствия, также имеют важное значение, но не детерминант в этом случае:

  • Один репозиторий, один .drone.yml, один трубопровод
  • .drone.yml должен находиться в корневом каталоге проекта

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

Если у вас большие проекты с несколькими модулями, и вы не хотите строить весь проект на каждом нажатии, лучше всего реорганизовать проект, размещая каждый модуль в собственном репозитории и настраивая конвейеры Drone для запуска downstream/upstream основывается на зависимостях/иждивенцах по мере необходимости.