Как настроить git lab runer на windows-сервере

Время на прочтение

Боитесь, что тесты пропадут, если компьютер сломается? Хотите видеть историю изменений? Вынуждены запускать тесты в отпуске, потому что у других членов команды нет к ним доступа? Не можете одновременно работать над написанием и прогоном? Знакомы эти проблемы, хотите избавиться от них раз и навсегда? Тогда вам необходимо использовать Vanessa Automation вместе с Gitlab. И я готов показать этот процесс на максимально простом примере. Меня зовут Дмитрий, я занимаюсь тестированием 1С Зуп в команде HR Tech Самолет. В сфере 1С я уже 7 лет, работал консультантом, аналитиком и программистом. А в тестирование перешёл, чтобы уберечь галактику от ошибок ПО. Поехали!

Результат генерации по запросу "Тестировщик 1С использует gitlab и Vanessa Automation для тестирования 1с зуп в Самолете", стиль anime
Результат генерации по запросу “Тестировщик 1С использует gitlab и Vanessa Automation для тестирования 1с зуп в Самолете”, стиль anime

Вводное слово

В нашем примере не используется Onescript, Vanessa Runner, другие дополнительные библиотеки, не разбираются нюансы запуска раннеров, джобы не падают, нет использования переменных gitlab-а. Минимальный уровень знаний: вы прошли и поняли всё из бесплатного курса Виталия Онянова по Vanessa Automation.

Схема №1
Схема №1

В статье описан тестовый пример со схемы выше. Поясню, что на ней изображено. В нашем примере три действующих лица:

  1. Собственно, мы. Мы работаем за ПК №1 и пишем тесты на Vanessa Automation. Потом с помощью Vanessa Automation и git отправляем тесты в gitlab. Vanessa Automation здесь выступает в качестве графической оболочки для git.

  2. Gitlab. Сервис, который все вышеперечисленные возможности предоставляет. Хранит файлы, их историю, может запускать тесты на других компьютерах, если на них установлены gitlab-runnerы. Разумеется, gitlab умеет ещё много всего, но об этом здесь не будем говорить. В нашем примере используется Saas-версия gitlab — та, что в облаке на сайте gitlab.com. Все тоже самое можно сделать и с локальной версией, но тогда вам нужно дополнительно устанавливать еще gitlab pages.

  3. Компьютер ПК №2, на котором установлен gitlab-runner. Gitlab-runner — это программа, которой Gitlab выдает задания для выполнения. Она забирает наши тесты из Gitlab в свою папку, выполняет консольные команды для запуска тестов и формированию отчета Allure и потом всю эту информацию отправляет обратно в Gitlab.

Нагляднее этот пример выполнять на двух компьютерах. Но можно все шаги проделать и на одном, просто установив на него gitlab-runner. Тогда схема для тестового примера будет выглядеть так:

Схема №2
Схема №2

Ниже наш набор, который нужен для воспроизведения примера:

  • Компьютер с Windows 10 (или 2 компьютера с WIndows 10);

  • Фреймворк Vanessa Automation;

  • База из поставки Демонстрационная конфигурация “Управляемое приложение” (если пример будете воспроизводить на 2х ПК, то неважно будет ли это одна база, доступная обоим ПК по сети, или 2 разные базы).

Подробнее о компьютере, используемом для примера:

  • ОС Windows 10 Pro Версия 22H2 (сборка ОС 19045.4046) качал с официального сайта.

  • Платформа 1С у нас 8.3.23.2040 — на момент создания статьи это последняя версия платформы, которая работает с комьюнити-лицензией. В описании конфигурации Демонстрационная конфигурация “Управляемое приложение” указано, что необходимо использовать платформу версии 8.3.24 и выше. Наша платформа этим критериям не соответствует, но у меня все запустилось нормально.

  • Базу я брал здесь. Если что, данная страница гуглится фразой Демонстрационная конфигурация “Управляемое приложение”.

  • Vanessa Automation брал здесь. В моем примере используется версия 1.2.041.1.

Дополнительно в процессе мы установим Java, Git, Allure, Gitlab-runner, никакого другого софта нам не нужно. Если для примера вы будете использовать один компьютер, то необходимо выполнить все действия на нём. Если два компьютера, то в скобках для вас будет указано, где нужно выполнить тот или иной шаг.

Первоначальная настройка

Сначала произведем ряд действий по установке софта и настроек, которые обязательно должны быть выполнены для успешного выполнения примера:

  1. Создадим новый проект на Gitlab;

Называйте проект как удобно, единственный нюанс — снимите галку Initialize repository with a README. Мой будет называться vanessaTestProject1. Галочку снимаем, чтобы файл README.md не был создан в удаленном репозитории. Без него удобнее регистрировать git.

  1. Скачаем и установим Java (для ПК №2);

Поиск и скачивание Java
Процесс установки Java

Java нужна, чтобы работал Allure. После установки Java необходимо перезагрузить компьютер.

  1. Cкачаем Git (для обоих ПК);

Как найти нужный файл на сайте Git

Здесь никаких нюансов нет. Качаем с официального сайта для вашей версии системы. Вот прямая ссылка для скачивания по состоянию на март 2024 года.

  1. Установим Git (для обоих ПК);

Процесс установки
  1. Подключаем Git к удаленному репозиторию в Gitlab (для ПК №1);

Последовательность действий подробно
  • Выберем папку, где будут храниться тесты наших проектов. В моем случае C:\vanessaTestProject\tests.

  • Запустим командную строку или Powershell из этой папки.

  • Введем в консоль команды, которые подключат наш локальный репозиторий к удаленному, создадут файл README.md и отправят его в gitlab. Для моего проекта:

git config --global user.name "dima secret"
git config --global user.email "vanessatestprojectdima@gmail.com"
git clone https://gitlab.com/dimaSecret/vanessatestproject1.git
cd vanessatestproject1
git switch --create main
echo test >README.md
git add README.md
git commit -m "add README"
git push --set-upstream origin main

Команды для регистрации git создаются gitlabом автоматом именно под ваш проект — это удобно, ничего гуглить дополнительно не надо.

  1. Теперь нужно отключить защиту от опасных действий в 1С (для обоих ПК);

Для этого запускаем блокнот под админом и добавляем в файл conf.cfg строку DisableUnsafeActionProtection=.* . Это нужно, чтобы в 1С не всплывало окно предупреждения безопасности:

Как настроить git lab runer на windows-сервере

Защиту от опасных действий отключаю для удобства. На проде такое делать нельзя!

Отключение защиты от опасных действий в 1С
  1. Добавляем в Gitlab новый gitlab-runner;

  • Заходим в раздел Settings, потом в CI/CD, потом в раздел Runners.

  • Выключаем Instance runners.

  • Жмем кнопку New project runner.

  • Ставим переключатель на Windows, ставим галку Run untagged jobs.

  • Жмем кнопку Create runner.

По итогам этого шага в Gitlab появился новый gitlab-runner.

Добавление gitlab-runner
  1. Устанавливаем и регистрируем gitlab-runner на нашем компьютере (для ПК №2);

  • Чтобы открыть инструкцию, нажмем на гиперссылку How do I install Gitlab Runner.

  • Создадим на диске C папку Gitlab-Runner.

  • Запустим из папки C:\Gitlab-Runner командную строку или Powershell.

  • Введем команду для скачивания из предложенной нам инструкции :

Invoke-WebRequest -Uri "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-windows-amd64.exe" -OutFile "gitlab-runner.exe"
  • Введем команду для регистрации gitlab-runner. Эта команда уже содержит адрес расположения нашего gitlab и токен нашего gitlab-runner:

.\gitlab-runner.exe register  --url https://gitlab.com  --token glrt-zU3fFBCGuxhcq6JyvFj2

После ввода команды, gitlab-runner задаст нам три вопроса:

  • Enter the GitLab instance URL (for example, https://gitlab.com/): Ничего не вводим — жмем Enter.

  • Enter a name for the runner. This is stored only in the local config.toml file: Ничего не вводим — жмем Enter.

  • Enter an executor: ssh, docker+machine, kubernetes, docker-autoscaler, custom, shell, parallels, virtualbox, docker, docker-windows, instance: Пишем в поле ввода Shell и жмем Enter. У нас на компьютере команды будут запускаться через Powershell.

Результат шага — на нашем компьютере зарегистрирован gitlab-runner.

Процесс установки gitlab-runner на наш компьютер
  1. Запускаем gitlab-runner (для ПК №2);

    Для запуска перейдем в папку, где лежит файл gitlab-runner.exe. Вызываем командную строку или Powershell в этой папке, вводим:

.\gitlab-runner.exe run
Процесс запуска gitlab-runner
  1. Устанавливаем в качестве исполнителя Powershell (для ПК №2);

Зайдем в файл C:\Gitlab-Runner\config.toml и отредактируем значение для атрибута shell. При установке устанавливается значение pwsh. Если мы его оставим — команды выполняться не будут, gitlab-runner будет ругаться и выдавать ошибку, что pwsh в качестве исполнителя не найден. Вместо pwsh установим значение powershell.

Процесс установки Powershell в качестве исполнителя
  1. Добавляем gitlab-runner в автозагрузки (для ПК №2);

Важный момент: Gitlab-runner должен быть запущен не как служба, а как приложение. Если gitlab-runner будет запускаться как служба, то скриншотов ошибок не будет, т.к. не будет подключена графика. Также не все шаги будут работать.

  • Чтобы при старте системы наш gitlab-runner запускался как приложение, создадим bat-файл и добавим его в автозагрузку.

  • Чтобы открыть папку автозагрузки, вызовем утилиту Выполнить и введем команду shell:startup.

  • Создадим текстовый файл и введём в него команды:

cd C:\Gitlab-Runner
.\gitlab-runner.exe run

Первая переходит в папку с gitlab-runner, вторая его запускает. В папку нужно переходить обязательно, иначе будет ошибка, что config.toml не найден.

Создание скрипта и добавление его в автозагрузки
  1. Скачиваем и устанавливаем Allure (для ПК №2);

Дистрибутив доступен на официальной странице проекта. Установка сводится к распаковке архива. Для удобства папку с Allure копируем в C:\vanessaTestProject.

Скачивание и установка Allure
Скачивание
Установка
  1. Добавляем Allure в PATH (для ПК №2);

Это позволит в Vanessa Automation выводить отчет Allure, а также сделает более удобным написание команд:

  • откроем окно свойство системы с помощью ввода команды sysdm.cpl;

  • перейдем на вкладку Дополнительно — Переменные среды;

добавим в переменную PATH путь до файла allure — в нашем случае — C:\vanessaTestProject\allure-2.27.0\bin.

Блок настроек закончен, дальше только интересное. Часть шагов отмечено на схемах №1 и №2 для наглядности.

:/>  Запуск редактора реестра, создание и применение reg-файла в Windows 8.1

Создание тестов в Vanessa Automation

  1. Добавим первый тест через форму работы с каталогами.

  • Запустите обработку Vanessa Automation;

  • Откройте дерево каталогов работы с файлами;

  • Перейдите в папку, где лежат тесты для нашего проекта — C:\vanessaTestProject\tests\vanessatestproject1 ;

  • Добавьте первый тест.

Текст теста
#language: ru

@tree

Функционал: проверка установки пометки удаления

Контекст:
  Дано Я запускаю сценарий открытия TestClient или подключаю уже существующий

Сценарий: Установка пометки удаления для элементов справочника Валюты
И В панели функций я выбираю 'Валюты'
Тогда открылось окно 'Валюты'
И для каждой строки таблицы 'Список' я выполняю
  И я выбираю пункт контекстного меню с именем 'СписокКонтекстноеМенюУстановитьПометкуУдаления' на элементе формы с именем "Список"
  Тогда открылось окно '1С:Предприятие'
  И я нажимаю на кнопку с именем 'Button0'
  Тогда открылось окно 'Валюты'
  И я выбираю пункт контекстного меню с именем 'СписокКонтекстноеМенюУстановитьПометкуУдаления' на элементе формы с именем "Список"
  Тогда открылось окно '1С:Предприятие'
  И я нажимаю на кнопку с именем 'Button0'
  1. Откроем форму работы с git в Vanessa Automation.

Откроем форму работы с Git и выберем нашу папку C:\vanessaTestProject\tests\vanessatestproject1, куда мы уже добавили один тест. Видим, что Vanessa Automation подсказывает нам, что в нашей папке есть файлы, которые отсутствуют в удаленном репозитории, но есть в локальном. Vanessa Automation выступает здесь в качестве графической оболочки над git.

Наглядное изображение процесса
  1. Сохраним еще два теста в наш каталог.

Тексты тестов из примера
#language: ru

@tree

Функционал: ввод данных

Контекст:
  Дано Я запускаю сценарий открытия TestClient или подключаю уже существующий

Сценарий: Создание элемента справочника Контрагенты
И В панели функций я выбираю 'Контрагенты'
Тогда открылось окно 'Контрагенты'
И я нажимаю на кнопку с именем 'ФормаСоздать'
Тогда открылось окно 'Контрагенты (создание)'
И в поле с именем 'Наименование' я ввожу текст 'Администрация новая'
И я нажимаю на кнопку с именем 'ФормаЗаписатьИЗакрыть'
И я жду закрытия окна 'Контрагенты (создание) *' в течение 20 секунд
#language: ru

@tree

Функционал: ввод данных

Контекст:
  Дано Я запускаю сценарий открытия TestClient или подключаю уже существующий

Сценарий: создание записи в регистре сведений Курсы валют
И В панели функций я выбираю 'Курсы валют'
Тогда открылось окно 'Курсы валют'
И я нажимаю на кнопку с именем 'ФормаСоздать'
Тогда открылось окно 'Курсы валют (создание)'
И в поле с именем 'Валюта' я ввожу текст 'Российский рубль'
И в поле с именем 'Валюта' я ввожу текст ''
И я нажимаю на кнопку с именем 'ФормаЗаписатьИЗакрыть'
И я жду закрытия окна 'Курсы валют (создание) *' в течение 20 секунд

Для наглядности сценарий «Создание записи» в регистре сведений Курсы валют у нас будет падать. Сценарии «Создание элемента справочника Контрагенты» и «Установка пометки удаления» для элементов справочника Валюты будут проходить.

  1. Переносим тесты в Gitlab.

На форме работы с git выполните следующие действия:

  • Выделите все тесты;

  • Нажмите плюсик, чтобы добавить тесты к отправке;

  • Нажмите кнопку Push;

  • Появится сообщение об успешной доставке данных в Gitlab;

  • Открывайте Gitlab и проверяйте, что тесты действительно доставлены в облако.

Процесс отправки тестов в Gitlab
  1. Добавление пайплайна в Gitlab.

Если говорить простыми словами, то «пайплайн в gitlab»— это рецепт приготовления готовой программы, описание которого указано в файле .gitlab-ci.yml. В этом файле указаны стадии приготовления нашей программы (stages), например: сборка из исходников (build), запуск автотестов (test), установка на сервер (deploy). Каждая стадия в свою очередь может состоять из нескольких работ (джоб или jobs), в которых описываются уже конкретные действия, необходимые для выполнения (script) или описывается последовательность работы с файлами (artifacts).

Добавим файл.gitlab-ci.yml в наш проект:

stages:
    - test
test:
    stage: test
    script:
        #включаем понимание системой кириллицы
        - chcp 65001

Теперь у нас есть пайплайн, который состоит из одного этапа — test, для которого есть одна джоба — test, единственной целью которой является включение кириллицы. Но это пока.

Пример создания пайплайна в Gitlab
  1. Проверяем результат работы созданной на предыдущем этапе джобы.

Зайдем в раздел Build — Jobs. Провалимся в нашу первую джобу. В ней можно увидеть процесс выполнения команды chcp 65001. Результат Active code page: 65001, как и ожидалось. Команда успешно выполнилась, статус джобы поменялся на Passed.

На нашем компьютере в папке C:\Gitlab-Runner\builds\zU3fFBCGu\0\dimaSecret\vanessatestproject1 появились те же файлы, что и в Gitlab. При каждом запуске нашего пайплайна содержимое папки будет актуализироваться.

Проверка работы джобы
  1. Указываем дополнительные настройки Vanessa Automation.

  • На вкладке Основные для Системных каталогов укажем папку C:\Gitlab-Runner\builds\zU3fFBCGu\0\dimaSecret\vanessatestproject1 -в ней будут хранится тестовые сценарии, которые приезжают к нам из gitlab.

  • На вкладке Скриншоты проставим галки Делать скриншоты по требованию, а также Делать скриншоты компонентой VanessaExt. Создадим и укажем в настройках каталог для скриншотов C:\vanessaTestProject\screenshots.

  • На вкладке Отчет о запуске сценариев проставим флаг Формировать отчет в формате Allure. Создадим и укажем в настройках каталог для скриншотов C:\vanessaTestProject\allure-results.

  • Сохраним настройки в файл VAParams.json. Для удобства создадим отдельный каталог C:\vanessaTestProject\settings.

Создание доп. настроек Vanessa Automation
  1. Получим строку запуска Vanessa Automation для Powershell.

В разделе Прочее нажмем на кнопку Получить строку запуска из командной строки:

"C:\Program Files\1cv8\8.3.23.2040\bin\1cv8c" /N"" /TestManager /Execute "C:\vanessaTestProject\vanessa-automation-single.epf" /IBConnectionString "File=""\DESKTOP-5UB7GS9\Users\fluMac\Documents\InfoBase"";" /C"StartFeaturePlayer;QuietInstallVanessaExt;VAParams=C:\Temp\VAParams.json"

Давайте разбираться, что это за строка у нас сформировалась. Разобьем ее на части и проанализируем:

  • “C:\Program Files\1cv8\8.3.23.2040\bin\1cv8c” — путь до ярлыка запуска 1С.

  • /N”” — аргумент для указания имени пользователя. В нашей базе пользователя нет, поэтому между кавычек пусто.

  • /TestManager — 1С будет запущена в режиме менеджера тестирования.

  • /Execute “C:\vanessaTestProject\vanessa-automation-single.epf” — после запуска 1С будет запущена обработка, в нашем случае Vanessa Automation.

  • ” /C”StartFeaturePlayer; — будут загружены сценарии.

  • QuietInstallVanessaExt; — будет выполнена установка компоненты VanessaExt (будет нам делать скрины ошибок).

  • VAParams=C:\Temp\VAParams.json — Vanessa Automation будет запущена с дополнительными настройками.

Соответственно, если эту команду запустить в командной строке, то у нас запустится 1С в режиме менеджера тестирования с определенной базой под определенным пользователем, в которой Vanessa Automation с определенными настройками будет запускать тесты.

Правда, здесь есть несколько нюансов:

  • Файл настроек лежит не в папке Temp, так что адрес надо поменять на C:\vanessaTestProject\settings\VAParams.json.

  • Исполнителем для gitlab-runner является Powershell, там такая команда не сработает — это особенности синтаксиса консоли. Перед командой необходимо поставить &.

  • Аргумент /N”” в Powershell будет воспринят неправильно, возможно это связано с экранированием. В общем, 1С попытается запуститься с пользователем /TestManager. Поэтому /N”” для нашего примера мы вообще из строки уберем.

Итоговая строка для запуска из PowerShell будет выглядеть так:

& "C:\Program Files\1cv8\8.3.23.2040\bin\1cv8c" /TestManager /Execute "C:\vanessaTestProject\vanessa-automation-single.epf" /IBConnectionString "File=""\DESKTOP-5UB7GS9\Users\fluMac\Documents\InfoBase"";" /C"StartFeaturePlayer;QuietInstallVanessaExt;VAParams=C:\vanessaTestProject\settings\VAParams.json"
Получение строки для PowerShell
  1. Откорректируем наш пайплайн с учетом настроек Vanessa Automation.

Теперь у нас есть все данные, чтобы дописать файл.gitlab-ci.yml. Сейчас в нашей стадии test одна джоба — test. И пока в ней только одна команда включения кириллицы. Мы добавим к ней команду запуска Vanessa Automation из предыдущего этапа.

Но для получения результатов в нашем примере недостаточно просто прогнать тесты. Нам также необходимо хранить где-то результаты тестирования — наши отчеты Allure. Для этого создадим еще одну джобу, я назвал ее screenshots. Сейчас я бы назвал ее по-другому, т.к. название не соответствует ее содержанию, но уж сделал как сделал. В этой джобе у нас всего одна команда, которая создает нам отчет Allure на основе файлов, которые подготовила для него Vanessa Automation. Рассмотрим строку раздельно:

  • allure generate — сгенерировать итоговый файл отчета Allure.

  • –clean — очищает папку отчета, перед созданием нового

  • –report-dir C:\Gitlab-Runner\builds\zU3fFBCGu\0\dimaSecret\vanessatestproject1\allure-results — папка куда наш отчет Allure будет сохранен. Т.к. нам нужно, чтобы gitlab-runner данный отчет забрал в gitlab для сохранения, мы и сохраняем его в папку с нашим проектом.

  • –single-file — отчет формируется в виде одного файла. Для тестового примера удобней именно эта опция. Правда это лишает нас возможности смотреть историю прохождения этих тестов в предыдущих прогонах.

  • C:\vanessaTestProject\allure-results — папка откуда Allure берет файлы, подготовленные Vanessa Automation по итогу прохождения тестов.

Еще нам нужно указать, что по итогам прохождения тестов, нам необходимо забрать файл отчета. Мы укажем эту информацию в нашей джобе в разделе artifacts. Тут будет прописан относительный путь до папки с нашим отчетом. Вы спросите, а почему бы нам все команды в одну джобу не засунуть? Ответ — в нашем примере gitlab-runner выполнит сразу все команды и будет формировать отчет Allure еще до окончания выполнения тестов. И мы получим пустой отчет Allure.

Итоговый текст файла .gitlab-ci.yml с комментариями
stages:
    - test
test:
    stage: test
    script:Зайдем в Gitlab и отредактируем файл  .gitlab-ci.yml с учетом настроек, которые мы установили в Vanessa Automation. Ниже полный текст с комментариями:


        #включаем понимание системой кириллицы
        - chcp 65001
        #чуть подредактированная команда, которая генерится обработкой Vanessa Automation. Убран /N"", т.к. нет пользователя, а также изменен путь до файла настроек
        - >
            & "C:\Program Files\1cv8\8.3.23.2040\bin\1cv8c" /TestManager /Execute "C:\vanessaTestProject\vanessa-automation-single.epf" /IBConnectionString "File=""\\DESKTOP-5UB7GS9\Users\fluMac\Documents\InfoBase"";" /C"StartFeaturePlayer;QuietInstallVanessaExt;VAParams=C:\vanessaTestProject\settings\VAParams.json"
#генерация аллюр-отчета — отдельная джоба, т.к. если засунуть все в одну — все команды будут выполнены разом еще до того, как тест закончится, и результатов в аллюр отчете не будет
screenshots: 
    stage: test
    script:   
        #команда для генерации аллюр-отчета, аргументы:
        #--clean — очищает папку до генерации отчета
        #--report-dir C:\Gitlab-Runner\builds\nWwBLwR2E\0\testprojectsdima\vanessatestproject1\allure-results — путь куда сохранится отчет 
        #--single-file — аллюр отчет будет генерится одним файлом
        #C:\vanessaTestProject\allure-results — путь откуда берутся данные    
        - allure generate --clean --report-dir C:\Gitlab-Runner\builds\zU3fFBCGu\0\dimaSecret\vanessatestproject1\allure-results --single-file C:\vanessaTestProject\allure-results 
    artifacts: 
        paths:
            - ./allure-results #папка из проекта в гитлаб раннере, откуда будет браться раннером отчет

После изменения файла .gitlab-ci.yml запустится выполнение пайплайна.

  1. Посмотрим на джобу тестов.

:/>  Как сделать загрузочную флешку windows xp через ultraiso

После изменения файла .gitlab-ci.yml запустятся джобы нашего пайплайна. Gitlab-runner запустит Vanessa Automation. Откроем список джоб в разделе Build — Jobs. Видим, что джоба test выполнилась успешно.

  1. Посмотрим джобу отчётов Allure.

Джоба отчётов Allure
  1. Как теперь запускать пайплайн?

В нашем тестовом примере пайплайн будет запускаться всегда при изменении/добавлении/удалении файлов в репозитории. Также можно запускать его отдельно в разделе Build — Pipelines по кнопке Run pipeline.

Запуск пайплайна в Gitlab

Выводы

Поздравляю, теперь у вас есть понимание как работает Vanessa Automation и gitlab! В Самолёте у нас иной стек и связка сильно сложнее: СППР + Vanessa Automation + Gitlab. Так что, здесь ознакомились лишь с базовым примером, который поможет чуть углубиться в индустрию тестирования. Если есть какие-то вопросы, пишите, постараюсь ответить в комментариях.

Благодности: HR Tech Samolet: Дмитриев Дмитрий (Ведущий программист 1С Зуп), Кашаканов Баир (бывший техлид 1С Зуп), Козлова Инна (нынешний техлид 1С Зуп), Гарбуз Елена (руководитель отдела качества HR Tech Samolet), Бакулина Наталия (Ведущий программист 1С Зуп).

11 minute read

When I first started my current job, one of the first things I did was set up a GitLab server. I wanted it to be the central place for version control and CI/CD. I’d used GitLab at my previous job and really liked it, so I wanted to use it again.

What I love about GitLab is how it centralizes automation. You can schedule tasks or trigger them when you push to a repository. Setting up runners for your automation is easy, and you can use GitLab runners on Windows, Linux, or MacOS. You can even run automation in a containerized environment using Docker or Kubernetes.

You could, of course, do Windows automation the old-fashioned way with the task scheduler and PowerShell scripts, but I don’t like how it ties you to specific servers. The task scheduler isn’t centralized or distributed, and if you only have “script servers,” version control becomes a challenge. While there are other software options, they often come with a price tag. GitLab being open source and free is a big plus.

I might go into more detail about how I use GitLab for automation in a future post. But for now, I’ll show you how to set up a new GitLab runner server on Windows.

Just a quick note: You should already have a GitLab server installed in your environment. I won’t cover that in this post.

Installing the GitLab Runner on Windows

You need a Windows server. This can be virtually any server, whether new or old, virtual or physical (you can even reuse the old script servers that you’re trying to replace). I used freshly installed Windows Server 2022 VM in our on-premises environment.

These instructions will include server-specific details, so you should copy the provided commands from there and paste them into a PowerShell window on your Windows server. (But wait until you’ve finished reading this post!)
GitLab Runner installation instructions

Registering the runner

Using a service user


  Stolen from : https://stackoverflow.com/questions/313831/using-powershell-how-do-i-grant-log-on-as-service-to-an-account
"Description=GrantLogOnAsAService security template"

Now, you might think that this is all you need to do, and you’re ready to use your runner. However, there are a few more steps to make it work.

Git for Windows: The Missing Piece

Anyhow, let’s get Git. The latest version is waiting for you right here. When you install it, just hit the ground running with the default settings – no need to complicate things.

Choosing the PowerShell Version

The next decision involves selecting the version of PowerShell you want to use for your automation. I recommend using PowerShell 7 because it’s cross-platform and the latest version available. You can find the latest version here.

If you opt for PowerShell 7, you won’t need to make any changes to the standard GitLab Runner installation.

Configuring the Runner for PowerShell 5.1

If, like me, you are centralizing many scripts from older servers into GitLab and wish to run them with PowerShell 5.1, you’ll need to modify the config.toml file for the runner. The config.toml file is typically located in the GitLab Runner installation folder, with the default path being: C:\GitLab-Runner\config.toml.

The change you need to make is in the line that reads: shell = "pwsh". You should change it to shell = "powershell". Alternatively, you can add pwsh as an alias to powershell.exe.

This change is necessary on Windows Server 2022, as the default PowerShell installation is 5.1, but it doesn’t start with the pwsh command; it only starts with powershell.

Installing PowerShell Modules

Using the PSResourceGet Module

Modules I usually install

  • ActiveDirectory
  • Sqlserver
  • Microsoft.Graph
  • Microsoft.PowerShell.SecretManagement
  • Microsoft.PowerShell.SecretStore

Installing RSAT Features

RSAT

RSAT Features I Typically Install

  • RSAT-AD-PowerShell
  • RSAT-DHCP

Merging It All

But hey, if the manual process is a bit annoying, I also thought so, and made it into a PowerShell script that’ll be slightly less annoying to work with:

# Define variables"your server url""your registration token""your runner description""your runner tags"# Function to grant the "Log on as a service" right
  Stolen from : https://stackoverflow.com/questions/313831/using-powershell-how-do-i-grant-log-on-as-service-to-an-account
"Description=GrantLogOnAsAService security template"# Function to install GitLab Runner# Create a folder for GitLab Runner# Change to the folder# Download GitLab Runner binary# Register the runner# Register the runner with GitLab# Change the shell to PowerShell 5.1"shell = ""pwsh""""shell = ""powershell"""# Function to install Git# Install Git# Function to install PowerShell modules# Install modules# Function to install Windows features# Install PowerShell 7# Install PowerShell 7# Install Git, PowerShell modules, and Windows features

PowerShell.GitLab.Utility.psd1

# Module manifest for module ‘PowerShell.GitLab.Utility’

# Generated by: Chendrayan Venkatesan

# Generated on: 19-11-2023

# Script module or binary module file associated with this manifest.

# Version number of this module.

# ID used to uniquely identify this module

# Author of this module

# Company or vendor of this module

# Description of the functionality provided by this module
‘This PowerShell utility to work with GitLab, and the cmdlets are built using the GraphQL.’

# Minimum version of the PowerShell engine required by this module
# PowerShellVersion = ”

# Name of the PowerShell host required by this module
# PowerShellHostName = ”

# Minimum version of the PowerShell host required by this module
# PowerShellHostVersion = ”

# Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
# DotNetFrameworkVersion = ”

# Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
# ClrVersion = ”

# Processor architecture (None, X86, Amd64) required by this module
# ProcessorArchitecture = ”

# Variables to export from this module

# A URL to the license for this module.
# LicenseUri = ”

# A URL to the main website for this project.

# A URL to an icon representing this module.
# IconUri = ”

# ReleaseNotes of this module
‘This module is a Minimal Vialble Product (MVP)’

# Prerelease string of this module
# Prerelease = ”

# End of PSData hashtable

# End of PrivateData hashtable

# HelpInfo URI of this module
# HelpInfoURI = ”

# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix.
# DefaultCommandPrefix = ”

Боитесь, что тесты пропадут, если компьютер сломается? Хотите видеть историю изменений? Вынуждены запускать тесты в отпуске, потому что у других членов команды нет к ним доступа? Не можете одновременно работать над написанием и прогоном? Знакомы эти проблемы, хотите избавиться от них раз и навсегда? Тогда вам необходимо использовать Vanessa Automation вместе с Gitlab. И я готов показать этот процесс на максимально простом примере. Меня зовут Дмитрий, я занимаюсь тестированием 1С Зуп в команде HR Tech Самолет. В сфере 1С я уже 7 лет, работал консультантом, аналитиком и программистом. А в тестирование перешёл, чтобы уберечь галактику от ошибок ПО. Поехали!

:/>  Как изменить тип сети с общедоступной на частную в windows

Результат генерации по запросу “Тестировщик 1С использует gitlab и Vanessa Automation для тестирования 1с зуп в Самолете”, стиль anime

Вводное слово

В нашем примере не используется Onescript, Vanessa Runner, другие дополнительные библиотеки, не разбираются нюансы запуска раннеров, джобы не падают, нет использования переменных gitlab-а. Минимальный уровень знаний: вы прошли и поняли всё из бесплатного курса Виталия Онянова по Vanessa Automation.

В статье описан тестовый пример со схемы выше. Поясню, что на ней изображено. В нашем примере три действующих лица:

  1. Собственно, мы. Мы работаем за ПК №1 и пишем тесты на Vanessa Automation. Потом с помощью Vanessa Automation и git отправляем тесты в gitlab. Vanessa Automation здесь выступает в качестве графической оболочки для git.

  2. Gitlab. Сервис, который все вышеперечисленные возможности предоставляет. Хранит файлы, их историю, может запускать тесты на других компьютерах, если на них установлены gitlab-runnerы. Разумеется, gitlab умеет ещё много всего, но об этом здесь не будем говорить. В нашем примере используется Saas-версия gitlab — та, что в облаке на сайте gitlab.com. Все тоже самое можно сделать и с локальной версией, но тогда вам нужно дополнительно устанавливать еще gitlab pages.

  3. Компьютер ПК №2, на котором установлен gitlab-runner. Gitlab-runner — это программа, которой Gitlab выдает задания для выполнения. Она забирает наши тесты из Gitlab в свою папку, выполняет консольные команды для запуска тестов и формированию отчета Allure и потом всю эту информацию отправляет обратно в Gitlab.

Нагляднее этот пример выполнять на двух компьютерах. Но можно все шаги проделать и на одном, просто установив на него gitlab-runner. Тогда схема для тестового примера будет выглядеть так:

Ниже наш набор, который нужен для воспроизведения примера:

  • Компьютер с Windows 10 (или 2 компьютера с WIndows 10);

  • Фреймворк Vanessa Automation;

  • База из поставки Демонстрационная конфигурация “Управляемое приложение” (если пример будете воспроизводить на 2х ПК, то неважно будет ли это одна база, доступная обоим ПК по сети, или 2 разные базы).

Подробнее о компьютере, используемом для примера:

  • ОС Windows 10 Pro Версия 22H2 (сборка ОС 19045.4046) качал с официального сайта.

  • Платформа 1С у нас 8.3.23.2040 — на момент создания статьи это последняя версия платформы, которая работает с комьюнити-лицензией. В описании конфигурации Демонстрационная конфигурация “Управляемое приложение” указано, что необходимо использовать платформу версии 8.3.24 и выше. Наша платформа этим критериям не соответствует, но у меня все запустилось нормально.

  • Базу я брал здесь. Если что, данная страница гуглится фразой Демонстрационная конфигурация “Управляемое приложение”.

  • Vanessa Automation брал здесь. В моем примере используется версия 1.2.041.1.

Дополнительно в процессе мы установим Java, Git, Allure, Gitlab-runner, никакого другого софта нам не нужно. Если для примера вы будете использовать один компьютер, то необходимо выполнить все действия на нём. Если два компьютера, то в скобках для вас будет указано, где нужно выполнить тот или иной шаг.

Первоначальная настройка

Сначала произведем ряд действий по установке софта и настроек, которые обязательно должны быть выполнены для успешного выполнения примера:

  1. Создадим новый проект на Gitlab;

Называйте проект как удобно, единственный нюанс — снимите галку Initialize repository with a README. Мой будет называться vanessaTestProject1. Галочку снимаем, чтобы файл README.md не был создан в удаленном репозитории. Без него удобнее регистрировать git.

  1. Скачаем и установим Java (для ПК №2);

Поиск и скачивание Java
Процесс установки Java

Java нужна, чтобы работал Allure. После установки Java необходимо перезагрузить компьютер.

  1. Cкачаем Git (для обоих ПК);

Как найти нужный файл на сайте Git

Здесь никаких нюансов нет. Качаем с официального сайта для вашей версии системы. Вот прямая ссылка для скачивания по состоянию на март 2024 года.

  1. Установим Git (для обоих ПК);

Процесс установки
  1. Подключаем Git к удаленному репозиторию в Gitlab (для ПК №1);

Последовательность действий подробно
  • Выберем папку, где будут храниться тесты наших проектов. В моем случае C:\vanessaTestProject\tests.

  • Запустим командную строку или Powershell из этой папки.

  • Введем в консоль команды, которые подключат наш локальный репозиторий к удаленному, создадут файл README.md и отправят его в gitlab. Для моего проекта:

git config --global user.name "dima secret"
git config --global user.email "vanessatestprojectdima@gmail.com"
git clone https://gitlab.com/dimaSecret/vanessatestproject1.git
cd vanessatestproject1
git switch --create main
echo test >README.md
git add README.md
git commit -m "add README"
git push --set-upstream origin main

Команды для регистрации git создаются gitlabом автоматом именно под ваш проект — это удобно, ничего гуглить дополнительно не надо.

  1. Теперь нужно отключить защиту от опасных действий в 1С (для обоих ПК);

Для этого запускаем блокнот под админом и добавляем в файл conf.cfg строку DisableUnsafeActionProtection=.* . Это нужно, чтобы в 1С не всплывало окно предупреждения безопасности:

Защиту от опасных действий отключаю для удобства. На проде такое делать нельзя!

Отключение защиты от опасных действий в 1С
  1. Добавляем в Gitlab новый gitlab-runner;

  • Заходим в раздел Settings, потом в CI/CD, потом в раздел Runners.

  • Выключаем Instance runners.

  • Жмем кнопку New project runner.

  • Ставим переключатель на Windows, ставим галку Run untagged jobs.

  • Жмем кнопку Create runner.

По итогам этого шага в Gitlab появился новый gitlab-runner.

Добавление gitlab-runner
  1. Устанавливаем и регистрируем gitlab-runner на нашем компьютере (для ПК №2);

  • Чтобы открыть инструкцию, нажмем на гиперссылку How do I install Gitlab Runner.

  • Создадим на диске C папку Gitlab-Runner.

  • Запустим из папки C:\Gitlab-Runner командную строку или Powershell.

  • Введем команду для скачивания из предложенной нам инструкции :

Invoke-WebRequest -Uri "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-windows-amd64.exe" -OutFile "gitlab-runner.exe"
  • Введем команду для регистрации gitlab-runner. Эта команда уже содержит адрес расположения нашего gitlab и токен нашего gitlab-runner:

.\gitlab-runner.exe register  --url https://gitlab.com  --token glrt-zU3fFBCGuxhcq6JyvFj2

После ввода команды, gitlab-runner задаст нам три вопроса:

  • Enter the GitLab instance URL (for example, https://gitlab.com/): Ничего не вводим — жмем Enter.

  • Enter a name for the runner. This is stored only in the local config.toml file: Ничего не вводим — жмем Enter.

  • Enter an executor: ssh, docker+machine, kubernetes, docker-autoscaler, custom, shell, parallels, virtualbox, docker, docker-windows, instance: Пишем в поле ввода Shell и жмем Enter. У нас на компьютере команды будут запускаться через Powershell.

Результат шага — на нашем компьютере зарегистрирован gitlab-runner.

Процесс установки gitlab-runner на наш компьютер
  1. Запускаем gitlab-runner (для ПК №2);

    Для запуска перейдем в папку, где лежит файл gitlab-runner.exe. Вызываем командную строку или Powershell в этой папке, вводим:

.\gitlab-runner.exe run
Процесс запуска gitlab-runner
  1. Устанавливаем в качестве исполнителя Powershell (для ПК №2);

Зайдем в файл C:\Gitlab-Runner\config.toml и отредактируем значение для атрибута shell. При установке устанавливается значение pwsh. Если мы его оставим — команды выполняться не будут, gitlab-runner будет ругаться и выдавать ошибку, что pwsh в качестве исполнителя не найден. Вместо pwsh установим значение powershell.

Процесс установки Powershell в качестве исполнителя
  1. Добавляем gitlab-runner в автозагрузки (для ПК №2);

Важный момент: Gitlab-runner должен быть запущен не как служба, а как приложение. Если gitlab-runner будет запускаться как служба, то скриншотов ошибок не будет, т.к. не будет подключена графика. Также не все шаги будут работать.

  • Чтобы при старте системы наш gitlab-runner запускался как приложение, создадим bat-файл и добавим его в автозагрузку.

  • Чтобы открыть папку автозагрузки, вызовем утилиту Выполнить и введем команду shell:startup.

  • Создадим текстовый файл и введём в него команды:

cd C:\Gitlab-Runner
.\gitlab-runner.exe run

Первая переходит в папку с gitlab-runner, вторая его запускает. В папку нужно переходить обязательно, иначе будет ошибка, что config.toml не найден.

Создание скрипта и добавление его в автозагрузки
  1. Скачиваем и устанавливаем Allure (для ПК №2);

Дистрибутив доступен на официальной странице проекта. Установка сводится к распаковке архива. Для удобства папку с Allure копируем в C:\vanessaTestProject.

Скачивание и установка Allure
  1. Добавляем Allure в PATH (для ПК №2);

Это позволит в Vanessa Automation выводить отчет Allure, а также сделает более удобным написание команд:

  • откроем окно свойство системы с помощью ввода команды sysdm.cpl;

  • перейдем на вкладку Дополнительно — Переменные среды;

добавим в переменную PATH путь до файла allure — в нашем случае — C:\vanessaTestProject\allure-2.27.0\bin.

Блок настроек закончен, дальше только интересное. Часть шагов отмечено на схемах №1 и №2 для наглядности.

Оставьте комментарий