В результате выполнения шагов у вас будет готовый runner на виртуальной машине с Windows 7 с Cygwin, к которой можно будет подключиться по ssh.
Качаем установочный файл cygwin например в C:\dev\cygwin
.
Пакеты для Cygwin устанавливаются именно из него
Запускаем файл с правами администратора:
Устанавливаем Cygwin:
Указываем, где будет корень системы Cygwin:
Указываем, откуда будут устанавливаться пакеты:
Добавляем в систему пакеты openssh
, openssl
:
Добавляем в систему git
:
Запускаем настройку ssh:
ssh-host-config
Отвечаем на вопросы:
Запускаем демон:
cygrunsrv -S sshd
Проверяем, что служба успешно установлена:
Несмотря на то, что в Windows 7 создается учетка cyg_server
необходимо включить учетную запись sshd
, тк вход по ssh будет осуществляться именно из-под нее:
Включить в группу администраторов:
Задаем пароль пользователю sshd
:
Выключаем брэндмауер:
Выключаем виртуальную машину, и маппим порты, чтобы подключиться по ssh:
При выполнении "работы" gitlab-runner маппит порты таким же образом
Запускаем виртуальную машину из-под любого пользователя и подключаемся к ней по ssh:
ssh -p 5421 [email protected]
Так же на этом этапе необходимо включить автологин в учетную запись sshd
(чтобы были доступны все службы этого пользователя) и произвести все дополнительные настройки для учетной записи sshd
(установить доверенные SSL сертификаты или сертификаты ЭП пользователя).
Делаем snapshot.
Gitlab-runner по умолчанию для каждой "работы" клонирует виртуальную машину с последнего snapshot'а (а не с текущего состояния машины). При этом если в конце истории snapshot'ов несколько одноименных, то gitlab возьмет именно первый из них.
Устанавливаем ПО для запуска и регистрации runner'ов.
Регистрируем runner:
gitlab-runner register \
--url="http://gitlab.example.com/" \
--registration-token="xxxxxxxxxxxxxxxxxx" \
--name="vgoma-windows-7" \
--run-untagged="false" \
--locked="false" \
--tag-list="integration_win7_ie11" \
--executor="virtualbox"
Подправим конфиг путь к которому подскажет gitlab-runner list
, указав данные для ssh и название виртуалки:
concurrent = 1
check_interval = 0
[[runners]]
name = "vgoma-windows-7"
url = "http://gitlab.example.com/"
token = "6688aca0e17c436a3f4cf1c5dca89c"
executor = "virtualbox"
[runners.ssh]
user = "sshd"
password = "qwercvbn"
[runners.virtualbox]
base_name = "Windows 7"
disable_snapshots = false
[runners.cache]
Пример "работы" из .gitlab-ci.yml
:
e2e:
stage: test
tags:
- win7_ie11
variables:
TESTENV: "development"
script:
- cd end-to-end
# Если выводить в консоль установка никогда не завершится и заблокирует выполнение скрипта
- npm i > install-output.txt
- node index.js
cache:
paths:
- tests/node_modules/
Запускаем сервис:
gitlab-runner run
Теперь Gitlab будет выполнять работы на runner'ах с указанными тэгами.