В результате выполнения шагов у вас будет готовый runner на виртуальной машине с Windows XP с Cygwin, к которой можно будет подключиться по ssh.
Качаем установочный файл например в C:\dev\cygwin.
Пакеты для Cygwin устанавливаются именно из него
Запускаем файл с правами администратора:
C:\dev\cygwin\setup-x86-2.874.exe -X
Добавляем и указываем зеркало:
ftp://www.fruitbat.org/pub/cygwin/circa/2016/08/30/104223
Добавляем пакеты openssh, openssl:
Добавляем пакет git:
Запускаем настройку ssh:
ssh-host-configОтвечаем на вопросы:
Запускаем демон:
cygrunsrv -S sshdПроверяем, что служба успешно установлена:
Включаем учетную запись sshd:
Включаем sshd в группу администраторов:
Задаем пароль для учетки sshd:
Добавить в файл хостов виртуальной машины: C:\WINDOWS\system32\drivers\etc\hosts запись:
127.0.0.1 gitlab.example.com
Подставить реальный ip
Выключаем брэндмауер:
Так же необходимо открыть 22 порт для TCP соединений если он закрыт. Посмотреть список открытых портов в Windows:
netstat -anПосмотреть IP адрес виртуальной машины (изнутри):
ipconfigВключить автоматическое определение настроек proxy:
Чтобы работать с node/npm из-под пользователя sshd через cygwin, необходимо добавить в системные переменные среды виртуальной машины:
APPDATA: C:\Program Files\nodejs\node_modules\npm\npmrc
NODE_PATH: %AppData%\npm\node_modules
Так же необходимо удалить файл: C:\Program Files\nodejs\node_modules\npm\npmrc
Выключаем виртуальную машину, и маппим порты, чтобы подключиться по ssh:
При выполнении "работы" gitlab-runner маппит порты таким же образом
Запускаем виртуальную машину из-под любого пользователя и подключаемся к ней по ssh:
ssh -p 5521 sshd@127.0.0.1Так же на этом этапе необходимо включить автологин в учетную запись sshd (чтобы были доступны все службы этого пользователя) и произвести все дополнительные настройки для учетной записи sshd (установить доверенные SSL сертификаты или сертификаты ЭП пользователя).
Делаем snapshot.
Gitlab-runner по умолчанию для каждой "работы" клонирует виртуальную машину с последнего snapshot'а (а не с текущего состояния машины). При этом если в конце истории snapshot'ов несколько одноименных, то gitlab возьмет именно первый из них.
Чтобы runner смог запускать образы виртуальных машин, регистрировать его нужно из-под того пользователя, под которым установлен Vitualbox (скорее всего не из-под рута). То есть:
gitlab-runner register \
--url="http://gitlab.example.com/" \
--registration-token="xxxxxxxxxxxxxxxxxxxxx" \
--name="vgoma-windows-xp" \
--run-untagged="false" \
--locked="false" \
--tag-list="integration_winxp_ie8" \
--executor="virtualbox"После регистрации можно посмотреть детали runner'ов:
gitlab-runner listБудет выведен путь к конфигу:
ConfigFile=/home/vgoma/.gitlab-runner/config.tomlПодробнее о конфигурационном файле.
Подправим конфиг, указав данные для ssh и название виртуалки:
concurrent = 1
check_interval = 0
[[runners]]
name = "vgoma-windows-xp"
url = "http://gitlab.example.com/"
token = "6688aca0e17c436a3f4cf1c5dca89c"
executor = "virtualbox"
[runners.ssh]
user = "sshd"
password = "qwercvbn"
[runners.virtualbox]
base_name = "Windows XP"
disable_snapshots = false
[runners.cache]Пример "работы" из .gitlab-ci.yml:
winxp_ie8:
stage: test
tags:
- winxp_ie8
variables:
TESTENV: "development"
script:
# Инициализируем настройки proxy, путем визита на любой сайт через chrome
- cygstart chrome "http://www.ya.ru"
- cd end-to-end
- npm.cmd i > output.txt
- node index.js
cache:
paths:
- tests/node_modules/После этого запускаем сервис:
gitlab-runner runМожно попробовать следующие действия:
Включить флаг PasswordAuthentication yes в файле:
vi /etc/sshd_configДобавить пользователя в группу ssh, и попробовать запустить сервис явно указав пользователя, из-под которого будут работать скрипты gitlab'а:
sudo usermod -a -G ssh vgoma
gitlab-runner run --user=vgomaПри возникновении проблем с nodejs/npm, проделать эти шаги.



































