Я пытаюсь создать новую конфигурацию проекта для сервера сборки Jenkins. Чтобы упростить то, что я пытаюсь сделать, я буду использовать только два компонента для описания проблемы.
Componentap >
- Изменение этого компонента запускает сборку этого проекта на сервере CI.
- Сервер CI имеет статически настроенную ветвь для мониторинга изменений и сборки. Например. мастер или разработать ветвь.
- Этот компонент содержит файл конфигурации с требуемой версией ComponentB, от которого он зависит.
ComponentB
- Изменения этого компонента не инициируют сборку этого проекта на CI-сервере (там будет еще один проект для разработки ComponentB).
- Отдельные версии компонента помечены тегом
- ComponentA имеет требуемую версию ComponentB в своем файле конфигурации
- Сервер CI не знает, какую ветку (тег) проверять до тех пор, пока файл конфигурации ComponentA не будет каким-то образом разбираться.
Каков правильный путь для достижения Дженкинса? Я пытался выяснить, как добавить это динамическое поведение для разбора файла конфигурации и создания плагина Git, чтобы проверить ветвь на основе ожидаемой версии ComponentB, но до сих пор я понятия не имею.
На следующем шаге я могу даже захотеть создать в файле конфигурации подстановочные знаки (например, 5.3. *), поэтому мне нужно будет найти новый тег ComponentB, соответствующий шаблону.
ИЗМЕНИТЬ
Теперь я вижу, что я слишком упростил свою проблему, и из-за упрощения основное ограничение больше не присутствует.
Основное ограничение заключается в том, что Компонент A и B должны быть объединены. Их невозможно создать отдельно, поскольку они образуют одну исполняемую/библиотеку, а сборку script нужны исходные файлы из обоих компонентов.
Если вы спросите, почему такая странная конфигурация, дайте Компоненту A и B некоторое описание:
- ComponentA: собственный код для конкретной платформы
- ComponentB: независимый независимый от платформы код
Может быть много Компонента As - один для каждой платформы, но только один компонент B. Объединение определенного A с B дает полный исходный код для одной платформы, но не каждая платформа может быть обновлена до последней версии B, поэтому ей необходимо имеют контроль над тем, какая версия B должна использоваться для построения.