metaclass: (Default)
[personal profile] metaclass
Достаточно давно не могу придумать, как настроить CI для такой организации нескольких проектов:
1) Есть базовые либы
2) Есть зависящие от них несколько промежуточных проектов (ну типа "общий гуй", "общий веб-сервис")
3) Есть конечные проекты, зависящие от базовых либ и промежуточных проектов.

Каждая группа проектов лежит в своем репозитории, все они являются субрепозиториями для общего репозитория, чтобы "достать все одним hg clone")
И есть желание, чтобы CI собирал таким образом: "при изменении в проекте собирается он и все зависящие от него рекурсивно по зависимостям". Чтобы, например, если коллеги меняют свой конечный проект - пересобирался только он, а остальные проекты не трогались.

Субрепозитории меркуриала хреново ложатся на идею "зависимости между проектами".
Проекты в дотнете можно сделать либо в виде зависимостей-по-исходникам (т.е. все либы включены в .sln файл в виде проектов) или в виде бинарных зависимостей (проекты ссылаются на артефакты билда базовых проектов в виде .dll файлов), первое очень быстро вырождается в sln с 50-100 проектов, второе - в безумное отслеживание зависимостей руками и msbuild скрипты по копированию результатов билда "куда надо".
CI и его триггера для сборки тоже в зависимости умеют непонятно как.

Date: 2014-01-26 01:28 pm (UTC)
From: [identity profile] vit-r.livejournal.com
и все зависящие от него рекурсивно по зависимостям

Всё это работает, если изменения делают святые люди, не сажающие в систему новые ошибки. А так, хорошо проверенные вещи внезапно перестают работать.

Единственное, что видел нормального на эту тему, самописанные скрипты, связанные с системой контроля качества. Новые версии библиотек подключаются только по зелёному свистку после полноценной проверки.

Date: 2014-01-26 01:32 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Оно как раз против ошибок.
В релиз (отдельная репа, второй CI) это дело попадает только после прохождения автоматического и прочего тестирования и только по моей команде.

Date: 2014-01-26 01:29 pm (UTC)
From: [identity profile] dr-cha0s.livejournal.com
я конечно не совсем сварщик... но все зависимости настраиваются в CI, например, jenkins, а не через студию, hg etc...

Date: 2014-01-26 01:34 pm (UTC)
From: [identity profile] metaclass.livejournal.com
В этом есть зло.
Я пытаюсь сделать такое:
1) Зависимости настраиваются 1 раз
2) Работник одной командой получает на своей машине готовую для работы копию
3) Работник может одной командой собрать полный билд
4) CI использует ту же команду для сборки.

Date: 2014-01-26 02:16 pm (UTC)
From: [identity profile] dr-cha0s.livejournal.com
зачем 4й пункт? ты же понимаешь что выпуск релизов и разработка разные вещи? кроме того для CI это можно настроить единожды.

Date: 2014-01-26 02:30 pm (UTC)
From: [identity profile] berezovsky.livejournal.com
А скрипт для CI положить в репозиторий с базовыми проектами, чтобы CI определял изменения в репозитории и перенастраивал сам себя! O_O

Date: 2014-01-26 01:49 pm (UTC)
From: [identity profile] berezovsky.livejournal.com
Круиз контроль вроде умел запускать билд и прочее по изменению в репозитории, только надо скрипт писать, какие билды по каким изменениям запускать и чё ещё делать.
(deleted comment)

Date: 2014-01-27 01:42 am (UTC)
From: [identity profile] darkdrip.livejournal.com
Юра, ты опять бредишь? ты щизофреник, тебя надо лечить.

Date: 2014-01-26 02:05 pm (UTC)
From: [identity profile] berezovsky.livejournal.com
Можно, конечно, написать тулзу, чтоб сама за репозиториями следила и дерева зависимостей между проектами строила, но это рак.

Date: 2014-01-26 06:34 pm (UTC)
From: [identity profile] osdm.livejournal.com
Не понял вашей проблемы с 50-100 проектами в *.sln. У нас в *.sln около 200 проектов, меркуриал, три субрепо, CI через TeamCity. Все отлично работает и собирается через msbuild (правда, в скриптах для msbuild есть неизвестная мне магия).

Date: 2014-01-27 02:58 am (UTC)
From: [identity profile] anonim-legion.livejournal.com
Сначала прочитал как Меркуриал, субрепозитории и 1С. Аж интересно стало.

Date: 2014-01-27 03:19 am (UTC)
From: [identity profile] theaspect.livejournal.com
А в чем проблема? Пусть все собирается по мере поступления, а бинарные артефакты хранятся отдельно.

PS Специально посмотрел: nuget позволяет свои репозитории создавать
Edited Date: 2014-01-27 03:21 am (UTC)

Date: 2014-01-27 05:44 am (UTC)
From: [identity profile] permea-kra.livejournal.com
Просто удивительно какие костыли городят люди, ниасилившие Make.

Date: 2014-01-27 07:54 am (UTC)
From: [identity profile] metaclass.livejournal.com
Тут msbuild, какой еще нахрен мейк?

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Oct. 9th, 2025 03:49 am
Powered by Dreamwidth Studios