Тестирование приложений с помощью GitLab
GitLab
В этом сценарии вы настроите GitLab на виртуальной машине, создадите простой проект на языке программирования C++, настроите сценарий тестирования проекта и проверите его выполнение.
Чтобы создать и протестировать проект в среде GitLab:
- Подготовьте облако к работе.
- Необходимые платные ресурсы.
- Создайте ВМ с GitLab.
- Настройте GitLab.
- Задайте настройки приватности.
- Создайте проект.
- Настройте и запустите тестирование для проекта.
- Настройте и зарегистрируйте раннер.
- Создайте сценарий тестирования.
- Создайте ошибку в проекте.
- Как удалить созданные ресурсы.
Подготовьте облако к работе
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVEилиTRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Необходимые платные ресурсы
В стоимость поддержки сервера для GitLab входит:
- Плата за диск и постоянно запущенную ВМ (см. тарифы Yandex Compute Cloud).
- Плата за использование динамического или статического публичного IP-адреса (см. тарифы Yandex Virtual Private Cloud).
Создайте виртуальную машину с GitLab
-
На странице каталога в консоли управления
нажмите кнопку Создать ресурс и выберитеВиртуальная машина. -
Выберите вариант Расширенная настройка.
-
В блоке Образ загрузочного диска в поле Поиск продукта введите
Gitlabи выберите публичный образ GitLab. -
В блоке Расположение выберите зону доступности, в которой будет создана ВМ. Если вы не знаете, какая зона доступности вам нужна, оставьте выбранную по умолчанию.
-
В блоке Диски и файловые хранилища выберите тип диска
SSDи задайте размер20 ГБ. -
В блоке Вычислительные ресурсы перейдите на вкладку
Своя конфигурацияи укажите необходимую платформу, количество vCPU и объем RAM:- Платформа —
Intel Ice Lake. - vCPU —
4. - Гарантированная доля vCPU —
100%. - RAM —
8 ГБ.
- Платформа —
-
В блоке Сетевые настройки:
- В поле Подсеть выберите сеть и подсеть, к которым нужно подключить ВМ. Если нужной сети или подсети еще нет, создайте их.
- В поле Публичный IP-адрес оставьте значение
Автоматически, чтобы назначить ВМ случайный внешний IP-адрес из пула Yandex Cloud, или выберите статический адрес из списка, если вы зарезервировали его заранее.
-
В блоке Доступ выберите вариант SSH-ключ и укажите данные для доступа на ВМ:
- В поле Логин введите имя пользователя. Не используйте имя
rootили другие имена, зарезервированные ОС. Для выполнения операций, требующих прав суперпользователя, используйте командуsudo. -
В поле SSH-ключ выберите SSH-ключ, сохраненный в вашем профиле пользователя организации.
Если в вашем профиле нет сохраненных SSH-ключей или вы хотите добавить новый ключ:
-
Нажмите кнопку Добавить ключ.
-
Задайте имя SSH-ключа.
-
Выберите вариант:
-
Ввести вручную— вставьте содержимое открытого SSH-ключа. Пару SSH-ключей необходимо создать самостоятельно. -
Загрузить из файла— загрузите открытую часть SSH-ключа. Пару SSH-ключей необходимо создать самостоятельно. -
Сгенерировать ключ— автоматическое создание пары SSH-ключей.При добавлении сгенерированного SSH-ключа будет создан и загружен архив с парой ключей. В ОС на базе Linux или macOS распакуйте архив в папку
/home/<имя_пользователя>/.ssh. В ОС Windows распакуйте архив в папкуC:\Users\<имя_пользователя>/.ssh. Дополнительно вводить открытый ключ в консоли управления не требуется.
-
-
Нажмите кнопку Добавить.
SSH-ключ будет добавлен в ваш профиль пользователя организации. Если в организации отключена возможность добавления пользователями SSH-ключей в свои профили, добавленный открытый SSH-ключ будет сохранен только в профиле пользователя внутри создаваемого ресурса.
-
- В поле Логин введите имя пользователя. Не используйте имя
-
В блоке Общая информация задайте имя ВМ:
gitlab. -
Нажмите кнопку Создать ВМ.
Подождите примерно пять минут, пока не будет создана ВМ и на ней не запустятся все сервисы. После полного запуска всех сервисов, GitLab станет доступен через веб-интерфейс в браузере.
Настройте GitLab
-
На странице сервиса Compute Cloud выберите созданную ВМ
gitlabи скопируйте ее публичный IP-адрес. -
Подключитесь к ВМ по протоколу SSH.
-
Получите пароль администратора GitLab с помощью команды ВМ:
sudo cat /etc/gitlab/initial_root_password -
Скопируйте пароль из строки
Password(исключая пробелы) в буфер обмена или отдельный файл. -
Откройте в браузере ссылку
http://<публичный_IP-адрес_ВМ>. Откроется веб-интерфейс GitLab. -
Войдите в систему с учетной записью администратора:
- Username or email —
root. - Password — пароль, скопированный ранее.
Если вы не можете войти, сбросьте пароль учетной записи администратора
. - Username or email —
-
Повторно войдите в систему с учетной записью администратора, используя новый пароль.
Задайте настройки приватности
Отключите возможность регистрации других пользователей через страницу авторизации:
- Перейдите в раздел Admin area.
- В панели слева перейдите в раздел Settings и выберите вкладку General.
- В блоке Sign-up restrictions нажмите кнопку Expand.
- Отключите опцию Sign-up enabled.
- Нажмите кнопку Save changes.
Теперь зарегистрировать новых пользователь может только администратор, через вкладку Users в разделе Overview.
Создайте проект
Для того, чтобы создать проект:
-
На главной странице GitLab выберите Create a project.
-
На открывшейся странице укажите:
- Имя проекта:
My Project. - Группу и идентификатор проекта:
rootиmy-project. - При необходимости задайте описание и область видимости проекта.
- Имя проекта:
-
Нажмите кнопку Create project.

-
После создания проекта в панели слева перейдите в раздел Settings и выберите вкладку CI/CD.
-
В блоке Auto DevOps нажмите кнопку Expand, отключите опцию Default to Auto DevOps pipeline и сохраните изменения кнопкой Save changes.

-
Добавьте файл проекта.
-
В панели слева перейдите в проект GitLab.
-
В строке навигации по репозиторию нажмите кнопку
и в выпадающем меню выберите пункт New file. -
Назовите файл
test.cpp. Добавьте в него код программы, которая проверяет результат умножения 2 × 2 и выводитHello World, если результат равен 4:#include <iostream> #include <cassert> int main() { assert(2 * 2 == 4); std::cout << "Hello world!" << std::endl; return 0; }
-
Укажите название коммита в поле Commit message.
-
Нажмите кнопку Commit changes.
-
Настройте и запустите тестирование для проекта
Раннер — это программа, которая осуществляет процесс тестирования и сборки проекта в среде GitLab по заданной инструкции.
Настройте и зарегистрируйте раннер
-
Зайдите по SSH на ВМ и перейдите в режим администратора в консоли:
sudo -i -
Загрузите раннер:
curl --location --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64 -
Сделайте раннер исполняемым:
chmod +x /usr/local/bin/gitlab-runner -
Создайте отдельного пользователя для запуска раннера:
useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash -
Установите и запустите раннер:
gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner gitlab-runner start -
Зарегистрируйте раннер в GitLab:
-
Запустите интерактивную регистрацию командой
gitlab-runner register. -
Введите адрес вашего GitLab-сервера. При запросе:
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com)введите
http://<публичный_IP-адрес_вашей_ВМ>. -
Введите регистрационный токен для раннера. Чтобы его найти, нужно перейти в GitLab на страницу проекта, затем в панели слева выбрать Settings и открыть вкладку CI/CD. После этого нажмите кнопку Expand в блоке Runners. В разделе Set up a specific Runner manually скопируйте токен из третьего пункта и введите его в ответ на запрос:
Please enter the gitlab-ci token for this runner <токен>
-
На запрос:
Please enter the gitlab-ci description for this runnerвведите описание раннера:
My runner. -
В поле ввода тегов не указывайте ничего, нажмите Enter. Иначе по умолчанию раннер не будет выполнять работу без указания соответствующих тегов для проекта.
-
Укажите среду выполнения. В нашем случае, на запрос:
Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:введите:
shell.
-
На этом установка и настройка раннера выполнены. Если все сделано правильно, то на странице, где вы копировали регистрационный токен, должен появиться раздел Runners activated for this project, в котором будет отображаться зарегистрированный раннер.

Создайте сценарий тестирования
Создайте сценарий тестирования, который будет выполнять раннер. Сценарий описывается в специальном файле .gitlab-ci.yml, который должен находиться в корневой директории проекта. По сценарию раннер будет компилировать исходный файл проекта в исполняемый файл, а затем запускать его.
Так как тестирование будет выполняться в операционной системе ВМ, установите приложения, которые необходимы для тестирования: git для клонирования проекта из репозитория и g++ для компиляции проекта.
Чтобы создать сценарий тестирования:
-
Подключитесь к ВМ по SSH и установите необходимые приложения:
sudo apt update sudo apt install -y git g++ -
Добавьте сценарий тестирования:
-
Откройте веб-интерфейс GitLab.
-
Откройте проект GitLab.
-
На открывшейся странице нажмите кнопку Set up CI/CD.
-
Откроется страница с предложением добавить новый файл
.gitlab-ci.yml, в котором в формате YAML нужно описать сценарий. Добавьте текст сценария:stages: - build - test - pack cache: paths: - hello build: stage: build script: g++ test.cpp -o hello test: stage: test script: ./hello pack: stage: pack script: gzip -c hello > hello.gz artifacts: paths: - hello.gzВ сценарии указано, что работа разделена на три этапа, которые выполняются последовательно:
build— на первом этапе выполняется компиляция проекта в исполняемый файлhello.test— на втором исполняемый файл запускается.pack— на третьем этапе создается архив с исполняемым файлом, который можно будет загрузить через веб-интерфейс GitLab после успешного завершения сценария. В блокеartifactsуказаны файлы, доступные для загрузки.
В блоке
cacheуказываются файлы и директории, которые необходимо передавать между этапами. Если его не указать, то на этапеtestфайлhelloне будет доступен и произойдет ошибка.
-
Нажмите Commit changes
-
После коммита система автоматически начнет тестировать последний коммит. Чтобы проверить результаты тестирования, на панели слева в проекте GitLab выберите пункт Build, в выпадающем меню выберите пункт Pipelines. В результате должна появиться строчка с первым тестом и статусом passed. Нажав на значок с облаком вы можете загрузить артефакты сборки.
Создайте ошибку в проекте
Теперь сделайте так, чтобы в проекте произошла ошибка, которую раннер должен помочь найти в процессе выполнения тестирования. Для этого:
-
Зайдите в репозиторий проекта и откройте файл
test.cpp. -
Нажмите Edit.
-
Укажите в проверке (assert), что результат выполнения умножения 2 на 2 должен быть равен 5. В этом случае при выполнении программы произойдет ошибка и она завершится некорректно.
... assert(2 * 2 == 5); ... -
Назовите коммит
Wrong assert in test.cpp. -
Нажмите Commit Changes.
Откройте раздел Build → Pipelines. В столбце Stages видно, что в результате выполнения теста был успешно пройден первый этап build, а на втором этапе test произошла ошибка. Третий этап pack был пропущен и итоговые артефакты не были сформированы.
Если нажать на статус выполнения failed и перейти на вкладку Failed Jobs, можно увидеть текст ошибки, где указано, что не выполнился assert:

Как удалить созданные ресурсы
Чтобы перестать платить за развернутый сервер, достаточно удалить созданную ВМ gitlab.
Если вы зарезервировали статический публичный IP-адрес специально для этой ВМ:
- Выберите сервис Virtual Private Cloud в вашем каталоге.
- Перейдите на вкладку IP-адреса.
- Найдите нужный адрес, нажмите значок
и выберите пункт Удалить.