У меня есть приложение Spring Boot под gitlab. Сегодня я использую Gitlab CI / CD и имею несколько шагов:
- Сборка приложения (создание jar)
- Тест
- Доставка в клиентской (01) машине верна папка.
- Запустите приложение, используя производственный профиль, используя Systemd в сентос 8. Этот профиль содержит определенные c конфигурации для клиентского производства. Важно : Gitlab runner работает под инфраструктурой клиента, потому что мы не можем получить доступ к вашей инфраструктуре через inte rnet.
Теперь у меня есть новый клиент (02), который должен использовать тот же код проекта, но в совершенно другой среде. Давайте рассмотрим некоторые трудности:
- Средство запуска gitlab работает только под клиентом 01
- Клиент 02 также не принимает доступ от inte rnet к вашей инфраструктуре, как клиент 01. Так что Я могу использовать один и тот же Gitlab Runner для обоих клиентов.
- У меня должно быть приложение. Свойства для каждого клиента, сегодня я просто разделил его профилями внутри кода.
- Клиент 02 использует centos6, поэтому у меня нет Systemd для запуска службы. Я должен использовать SysV. Итак, другой подход к запуску сервиса.
Я подумал об одном решении этого вопроса, но я хотел бы знать, существует ли что-то лучше, мне действительно нравится интерфейс Gitlab ci / cd.
Мое решение: установить Jenkins в каждой клиентской инфраструктуре и заставить ее прослушивать коммиты Gitlab. Каждый Jenkins, в каждом клиенте позаботится об установке и настройке приложения.
Чтобы решить проблему с application.properties, я создам репозиторий только для него, отделенный именем клиента. Итак, у меня будет что-то вроде этого: application-client01.properties и др. c. Дженкинс просто выберет правильные свойства, потому что будет установлен в клиентской среде.
Какое-нибудь лучшее решение?