Сборка из Дженкинса с несколькими репозитариями
Всем привет,
У меня есть большой набор классов POCO, которые используются несколькими проектами, и я хотел бы поместить их в отдельный проект и просто ссылаться на сборку из других проектов.
Это обычно просто. Проблема в том, что я автоматизирую свои сборки с помощью Дженкинса. В настоящее время для всех моих проектов я включаю весь код классов в каждый проект, который явно не идеален. Что я хотел бы сделать, так это заставить Дженкинса вытащить общий код класса ( который будет находиться в его собственном РЕПО ) и включить его во все сборки
В настоящее время я использую файл Jenkinsfile для всех сборок, который работает очень хорошо, но я должен помнить, чтобы изменить несколько версий классов. Я надеюсь, что это имеет смысл.
Это все с использованием net core
Что я уже пробовал:
Добавление клонов git в мои конвейеры, чтобы попытаться вытащить классы POCO
Sander Rossel
Похоже, вы могли бы использовать частный репозиторий NuGet со своим собственным пакетом, содержащим классы POCO, и ссылаться на него во всех проектах?
Вам не придется менять свои сборки Jenkins, потому что это просто еще один пакет в NuGet.
Разве это возможно?
pkfox
Как я мог это сделать, Сандер ?
Sander Rossel
Привет ПК, я не видел твоего комментария, потому что ты ответил себе, а не мне :)
Во всяком случае, я не знаю, как настроить частный канал NuGet на вашем собственном сервере, но я знаю, что вы можете размещать пакеты NuGet в Azure DevOps (https://docs.microsoft.com/en-us/azure/devops/artifacts/get-started-nuget?view=azure-devops).
Кстати, еще один вариант, который я использовал в прошлом, - это всегда проверять два репозитория в одних и тех же папках.
Итак, допустим, у вас есть папка myprojects.
Внутри этой папки находятся ваши репозитории.
проект А, Проект Б, проект и sharedProject.
А, B и c ссылкой sharedProject по /../../sharedProject/sharedProject.csproj (или нечто подобное).
Конечно, A, B и C не будут строить, если shared не находится в этом точном месте.
Однако, если вы проверите их таким образом в Jenkins, что должно быть возможно, он будет строить и обновлять sharedProject может вызвать сборки A, B и C.
Хотите ли вы этого, зависит только от вас.
pkfox
Привет, Сандер,я такой дурак ( отвечая самому себе), что ты предлагаешь примерно то, что я имел в виду. В моем текущем состоянии я просто пытаюсь получить успешную сборку с двумя проектами, давайте назовем их EntityConsumer и Entities, если я правильно вас понял, вы говорите, что строите сущности, а затем запускаете сборку EntityConsumer, которая имеет зависимость от сущностей ? ( что может пойти не так :-) ? ) Я попробую - большое спасибо за вашу помощь и терпение
Sander Rossel
Да, прошло уже много времени с тех пор, как я это делал, и сейчас у меня нет Дженкинса, но это должно дать вам представление о том, как это сделать: https://stackoverflow.com/a/40225216
По крайней мере, я знаю, что это возможно.
И еще одно соображение.
Я работал с такими установками, как вы описываете, одна модель, чтобы управлять ими всеми.
Также называется канонической моделью данных.
Я сам их не очень люблю.
Он в основном плотно связывает все ваши услуги друг с другом.
Я фанат каждой службы, имеющей свою собственную модель.
Это дает вам полный контроль над каждой услугой, и это вряд ли дополнительная работа, так как вам все равно приходится каждый раз менять каждую услугу.
Может быть, вам это нужно, может быть, нет, но сейчас слишком много работы, чтобы изменить это, но спросите себя, действительно ли вам это нужно и есть ли у вас какие-либо альтернативы.
pkfox
Успех !!! хотя и не очень красиво - я создал новый элемент конвейера Дженкинса, который тянет два РЕПО ( вы не можете сделать то, что вы вложили в одну и ту же папку, так как он перезаписывается вторым), а затем сначала строит общее РЕПО, а затем второе ( вот вам ужасный бит).
/home/pjk/Jenkins/Linux-ARM64/Common/Common.dll
в файле Consumer.csproj в github в качестве ссылки на ItemGroup - я выполняю сборку dotnet в скрипте, который выводит Common.dll в эту папку - это только начало, хотя - мысли ?
Sander Rossel
Ну, если это выглядит глупо и работает, то это не глупо :D
BillWoodruff
PKFox: я знаю, что вы очень умный парень, разве это не тот вопрос, с которым форумы сообщества Дженкинса могут помочь ? https://www.jenkins.io/chat/
pkfox
Привет, Билл, спасибо за комплимент - большинство ссылок Дженкинса, которые я нашел, - это IRC-комнаты, но они мне не очень нравятся