Может ли Дженкинс собрать только один пакет python в монореполе с несколькими пакетами? - PullRequest
0 голосов
/ 17 ноября 2018

Предположим, что есть монорепо с несколькими независимо компилируемыми пакетами Python в разных каталогах, что-то в формате, показанном ниже, где foo и bar независимо компилируются.

Теперь предположим, что кто-то отправляет код в gitхранилище, в котором он находится, и редакции кода находятся только в пакете barЕсли Дженкинс получает сигнал, может ли Дженкинс определить, какой пакет был изменен, и только создать и развернуть измененный пакет, например, bar?

Или, альтернативно, так ли это?просто стандартная практика, чтобы Jenkins пересобрал / заново развернул все пакеты в monorepo, независимо от того, какие изменения были переданы?.

root/
 └ src/
    ├ foo/
    │  ├ requirements.txt
    │  ├ setup.py
    │  └ foo/
    │     ├ __init__.py
    │     ├ module1.py
    │     ├ ...
    │     └ moduleN.py
    .
    .
    .
    └ bar/
       ├ requirements.txt
       ├ setup.py
       └ bar/
          ├ __init__.py
          ├ module1.py
          ├ ...
          └ moduleN.py

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Я тоже искал это. Я нашел запись в блоге от Pinterest, где они используют Штаны :

https://medium.com/@Pinterest_Engineering/building-a-python-monorepo-for-fast-reliable-development-be763781f67

В одной части они говорят:

Pants обеспечивает быструю, воспроизводимую сборку для наших пакетов. Штаны выполняет инкрементные сборки для своих целей, поэтому только измененные модули перестраиваются, что ускоряет процесс сборки. Запуск всей сборки цели в виртуальной среде обеспечивают воспроизводимость сборок.

Это выглядит хорошо для меня, хотя Pants не работает в Windows.

0 голосов
/ 27 ноября 2018

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

Другой вариант - попытаться определить, что изменилось, что мне тоже не нравится, но вот обнаруженное мной git-репо, в котором есть скрипт, который делает это https://github.com/slimm609/monorepo-gitwatcher

Я надеюсь, что есть лучшее решение, я нашел блог на Shazam (https://blog.shazam.com/python-microlibs-5be9461ad979), в котором говорится об этом, и похоже, что они решили свою проблему. Я прокомментировал, чтобы попытаться получить немного разъяснение по этой части.

Меня не волнует ни одно из этих решений, но я не могу придумать или найти что-то лучшее в данный момент!

Редактировать: в ответе Хорхе на статью Shazam упоминается, что они решают эту проблему, помечая репо определенным именем, и это указывает Дженкинсу, какой из пакетов нужно встроить в монорепо. Это не полностью автоматизировано, но я полагаю, это зависит от того, сколько времени вы готовы потратить на это и как часто это происходит!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...