Меркуриал, субрепозитории и CI
Jan. 26th, 2014 03:44 pmДостаточно давно не могу придумать, как настроить CI для такой организации нескольких проектов:
1) Есть базовые либы
2) Есть зависящие от них несколько промежуточных проектов (ну типа "общий гуй", "общий веб-сервис")
3) Есть конечные проекты, зависящие от базовых либ и промежуточных проектов.
Каждая группа проектов лежит в своем репозитории, все они являются субрепозиториями для общего репозитория, чтобы "достать все одним hg clone")
И есть желание, чтобы CI собирал таким образом: "при изменении в проекте собирается он и все зависящие от него рекурсивно по зависимостям". Чтобы, например, если коллеги меняют свой конечный проект - пересобирался только он, а остальные проекты не трогались.
Субрепозитории меркуриала хреново ложатся на идею "зависимости между проектами".
Проекты в дотнете можно сделать либо в виде зависимостей-по-исходникам (т.е. все либы включены в .sln файл в виде проектов) или в виде бинарных зависимостей (проекты ссылаются на артефакты билда базовых проектов в виде .dll файлов), первое очень быстро вырождается в sln с 50-100 проектов, второе - в безумное отслеживание зависимостей руками и msbuild скрипты по копированию результатов билда "куда надо".
CI и его триггера для сборки тоже в зависимости умеют непонятно как.
1) Есть базовые либы
2) Есть зависящие от них несколько промежуточных проектов (ну типа "общий гуй", "общий веб-сервис")
3) Есть конечные проекты, зависящие от базовых либ и промежуточных проектов.
Каждая группа проектов лежит в своем репозитории, все они являются субрепозиториями для общего репозитория, чтобы "достать все одним hg clone")
И есть желание, чтобы CI собирал таким образом: "при изменении в проекте собирается он и все зависящие от него рекурсивно по зависимостям". Чтобы, например, если коллеги меняют свой конечный проект - пересобирался только он, а остальные проекты не трогались.
Субрепозитории меркуриала хреново ложатся на идею "зависимости между проектами".
Проекты в дотнете можно сделать либо в виде зависимостей-по-исходникам (т.е. все либы включены в .sln файл в виде проектов) или в виде бинарных зависимостей (проекты ссылаются на артефакты билда базовых проектов в виде .dll файлов), первое очень быстро вырождается в sln с 50-100 проектов, второе - в безумное отслеживание зависимостей руками и msbuild скрипты по копированию результатов билда "куда надо".
CI и его триггера для сборки тоже в зависимости умеют непонятно как.