В результате выполнения шагов у вас будет готовый 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 [email protected]
Так же на этом этапе необходимо включить автологин в учетную запись 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, проделать эти шаги.