- 22, Oct 2024
- #1
Мне нужно улучшить процесс CI в моих проектах, который в основном состоит из следующих вещей:
- сервер Linux, содержащий мастер Jenkins
- виртуальная машина с Windows 10, с подчиненным устройством Jenkins, ответственным за создание одного из моих проектов (который использует ядро .NET, .NET Framework, Node.JS и nmake)
- задание конвейера Jenkins, которое компилирует проект (при условии, что необходимые инструменты уже установлены) -> это используется для создания окончательных выпущенных версий для клиента.
- Gitlab Runner на некоторых компьютерах с Windows (настроенный как исполнители оболочки) -> это легко используется с нашим gitlab для непрерывной интеграции и конвейеров, чтобы быть видимым, например, в мерж-реквестах.
Проблемы: мы вручную вошли в виртуальную машину, указанную выше, и установили все инструменты, необходимые для создания приложений. Если для проектов требуются новые инструменты, нам необходимо вручную ввести машины и установить их перед запуском заданий сборки.
Чего я хочу: Я планирую улучшить эту среду CI с помощью Docker (хотя я в этом новичок), чтобы иметь возможность легко масштабировать бегуны по работе. Я подумываю об использовании меньшего количества экземпляров Jenkins и большего количества экземпляров Gitlab Runner (настроенных как исполнитель «докера»), чтобы иметь возможность делегат CI/CD обрабатывает каждый файл '.yml', созданный для каждого проекта.
Чтобы выполнить вышеизложенное, я подумал о некоторых подходах:
Поместите Gitlab Runner, настроенный как «докер+машина».
Это порождает столько бегунов «докеров», сколько необходимо --> это легко масштабируется.
Проблема: «Docker Machine» создает только виртуальные машины Linux, а мне специально для этого проекта нужна среда Windows для сборки.
Используйте Gitlab Runner, настроенный как «докер».
Это должно быть масштабируемым, если оно создает контейнеры для строительства по требованию.
В связи с этим сценарием у меня есть пара вопросов:
- Есть ли у вас какие-либо предложения о том, как я могу создать образ докера, который сможет построить мой проект? Мне нужно использовать ОС Windows, ядро .NET, прошивку .NET, nmake, Node.Js. Есть ли у вас какие-то конкретные изображения, рекомендованные для этой задачи?
- Должен ли я создать образ докера «sdk» (образ со всеми инструментами, необходимыми для сборки и тестирования) отдельно от исходного кода моего проекта, опубликовать этот образ в Docker Hub и «использовать» его в своем gitlab runner? Я имею в виду, как лучше всего действовать в этом случае, если предположить, что у моего клиента нет частного реестра Docker?
- Кто-нибудь пробовал этот сценарий (gitlab runner + docker в Windows) раньше и хотел бы получить отзыв, работает он или нет?
- Осуществим ли мой план по сокращению использования Jenkins и использованию большего количества программ Gitlab (по крайней мере, для этого проекта)? Я думал об этом, потому что в настоящее время нам приходится управлять «главным устройством Jenkins» и всеми машинами «подчиненных устройств Jenkins». При таком новом подходе «главным» фактически будет весь экземпляр Gitlab, а «подчиненными» будут несколько исполнителей GL, развернутых по мере необходимости, на которых я делегирую работу файлу «.yml» каждого проекта;
- Есть ли у вас лучший подход к тому, как я могу улучшить масштабируемый процесс CI/CD проекта Windows, кроме использования gitlab runner + docker?
#docker #gitlab #windows #cicd #gitlab-ci-runner