Попытка Перенести Процесс Ci/Cd Из Jenkins В Gitlab Runner + Docker В Windows

  • Автор темы Slon48
  • Обновлено
  • 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, настроенный как «докер».

Это должно быть масштабируемым, если оно создает контейнеры для строительства по требованию.

В связи с этим сценарием у меня есть пара вопросов:

  1. Есть ли у вас какие-либо предложения о том, как я могу создать образ докера, который сможет построить мой проект? Мне нужно использовать ОС Windows, ядро ​​.NET, прошивку .NET, nmake, Node.Js. Есть ли у вас какие-то конкретные изображения, рекомендованные для этой задачи?
  2. Должен ли я создать образ докера «sdk» (образ со всеми инструментами, необходимыми для сборки и тестирования) отдельно от исходного кода моего проекта, опубликовать этот образ в Docker Hub и «использовать» его в своем gitlab runner? Я имею в виду, как лучше всего действовать в этом случае, если предположить, что у моего клиента нет частного реестра Docker?
  3. Кто-нибудь пробовал этот сценарий (gitlab runner + docker в Windows) раньше и хотел бы получить отзыв, работает он или нет?
  4. Осуществим ли мой план по сокращению использования Jenkins и использованию большего количества программ Gitlab (по крайней мере, для этого проекта)? Я думал об этом, потому что в настоящее время нам приходится управлять «главным устройством Jenkins» и всеми машинами «подчиненных устройств Jenkins». При таком новом подходе «главным» фактически будет весь экземпляр Gitlab, а «подчиненными» будут несколько исполнителей GL, развернутых по мере необходимости, на которых я делегирую работу файлу «.yml» каждого проекта;
  5. Есть ли у вас лучший подход к тому, как я могу улучшить масштабируемый процесс CI/CD проекта Windows, кроме использования gitlab runner + docker?

#docker #gitlab #windows #cicd #gitlab-ci-runner

Slon48


Рег
16 Nov, 2014

Тем
57

Постов
178

Баллов
493
  • 25, Oct 2024
  • #2

Кто-нибудь пробовал этот сценарий (gitlab runner + docker в Windows) раньше и хотел бы получить отзыв, работает он или нет?

Я установил и зарегистрировал GitLab Runner на своем ноутбуке с Windows 10, следуя инструкциям GitLab. Установите GitLab Runner в Windows

Сначала у меня возникли проблемы с получением образа контейнера Windows:

 
 
 my_job:

script: systeminfo

tags:

- windows
 

После выбора опции «Переключиться на контейнеры Windows» в моем Windows Docker (в меню верхнего уровня, которое открывается с помощью значка Docker на панели инструментов), я смог .gitlab-ci.yml the Windows servercore image.

Однако мне не удалось запустить GitLab Runner на моем полностью исправленном и обновленном ноутбуке с Windows:

ERROR: Preparation failed: unsupported Windows version: Windows 10 Pro Version 1909 ...

Это слишком ново! Когда я читаю GitLab Политика поддержки версий Windows, GitLab должен поддерживать 1909 в течение 18 месяцев; но очевидно, что это еще не тот случай. 1903 — самая последняя поддерживаемая версия.

Однако по состоянию на январь 2020 года GitLab имеет Общие средства запуска Windows (бета-версия)

Я попробовал это, и это работает. Пример docker pull :

PS C:\GitLab-Runner> docker pull mcr.microsoft.com/windows/servercore Using default tag: latest Error response from daemon: manifest for mcr.microsoft.com/windows/servercore:latest not found: manifest unknown: manifest unknown PS C:\GitLab-Runner> docker pull mcr.microsoft.com/windows/servercore:1809 1809: Pulling from windows/servercore no matching manifest for linux/amd64 in the manifest list entries PS C:\GitLab-Runner>

Осуществим ли мой план по сокращению использования Jenkins и использованию большего количества программ Gitlab (по крайней мере, для этого проекта)?

Звучит хорошо для меня.

Есть ли у вас лучший подход к тому, как я могу улучшить масштабируемый процесс CI/CD проекта Windows, кроме использования gitlab runner + docker?

Нет. Я думаю, ты на правильном пути.

 

Rakhaev


Рег
31 Mar, 2009

Тем
59

Постов
211

Баллов
516
Похожие темы Дата
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно