У нас есть коллекция связанных и частично взаимозависимых пакетов. Они живут в отдельных репозиториях Git. Как:
git@bitbucket.company:common
git@bitbucket.company:libfoo
git@bitbucket.company:libbar
git@bitbucket.compnay:libbarex
git@bitbucket.company:daemon
final-image
(просто рецепт изображения)
- зависит от
libfoo
, libbar
, libbarex
, daemon
Пакеты в настоящее время создаются путем настройки среды Yocto, проверки всех из них и запуска bitbake
с целью изображения, которая зависит от всех из них. Оформление осуществляется с помощью логики, содержащей специальную логику Это
git clone https://git.yoctoproject.org/git/poky
git clone -b $BRANCH git@bitbucket.company:common
git clone -b $BRANCH git@bitbucket.company:libfoo
git clone -b $BRANCH git@bitbucket.company:libbar
git clone -b $BRANCH git@bitbucket.company:libbarex
git clone -b $BRANCH git@bitbucket.company:daemon
. poky/oe-init-build-env
../common/add-layers.sh
bitbake final-image
Недостатком является то, что CI-сервер не понимает стороны управления конфигурацией, поэтому он не может делать такие вещи, как построение каждого pull-запроса, не говоря уже о том, чтобы сообщать об этом обратно менеджеру репозитория Git для управления pull-запросом. запросы на него.
Итак, я хотел бы начать разбивать сборку для сборки каждого пакета отдельно, вытягивая зависимости в соответствии с некоторой спецификацией, которая должна обновляться по мере необходимости.
Но как мне это сделать?
Я могу добавить
bitbake -c populate_sdk final-image
в основную сборку, а затем используйте SDK для сборки отдельных компонентов. Однако это означает, что любые изменения в common
должны быть объединены, и SDK должен быть перестроен, прежде чем я смогу собрать libfoo
, libbar
или daemon
, и дополнительно изменения в libbar
должны быть объединены, прежде чем я смогу собрать libbarex
.
Могу ли я перенести результаты этих инкрементных сборок в какое-то хранилище и вернуть их обратно для сборки зависимого компонента без необходимости перекомпоновки SDK?