Тестирование приложений с помощью GitLab
GitLab
В этом сценарии вы настроите GitLab на виртуальной машине, создадите простой проект на языке программирования C++, настроите сценарий тестирования проекта и проверите его выполнение.
Чтобы создать и протестировать проект в среде GitLab:
Подготовьте облако к работе
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVE
илиTRIAL_ACTIVE
. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Необходимые платные ресурсы
В стоимость поддержки сервера для GitLab входит:
- Плата за диск и постоянно запущенную ВМ (см. тарифы Yandex Compute Cloud).
- Плата за использование динамического или статического публичного IP-адреса (см. тарифы Yandex Virtual Private Cloud).
Создайте виртуальную машину с GitLab
- На странице каталога в консоли управления
нажмите кнопку Создать ресурс и выберите пункт Виртуальная машина. - В поле Имя введите имя ВМ:
gitlab
. - Выберите зону доступности, в которой должна находиться ВМ.
- В блоке Образ загрузочного диска перейдите на вкладку Marketplace и выберите публичный образ GitLab.
- В блоке Диски выберите жесткий диск SSD размером 20 Гб.
- В блоке Вычислительные ресурсы:
-
Выберите платформу ВМ.
-
Укажите необходимое количество vCPU и объем RAM.
Для корректной работы системы GitLab укажите конфигурацию:
- Платформа -
Intel Ice Lake
. - Гарантированная доля vCPU —
100%
. - vCPU —
4
. - RAM —
8 ГБ
.
- Платформа -
-
- В блоке Сетевые настройки:
- Выберите Сеть и Подсеть, к которым нужно подключить ВМ. Если нужной сети или подсети еще нет, создайте их.
- В поле Публичный адрес оставьте значение Автоматически, чтобы назначить ВМ случайный внешний IP-адрес из пула Yandex Cloud, или выберите статический адрес из списка, если вы зарезервировали его заранее.
- В блоке Доступ укажите данные для доступа к ВМ:
- В поле Логин введите предпочтительное имя пользователя, который будет создан на ВМ.
- В поле SSH-ключ скопируйте ваш открытый SSH-ключ. Пару ключей для подключения по SSH необходимо создать самостоятельно, см. раздел о подключении к ВМ по SSH.
- Нажмите кнопку Создать ВМ.
- Подождите примерно пять минут, пока не будет создана ВМ и на ней не запустятся все сервисы. После полного запуска всех сервисов, 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.
-
Настройте и запустите тестирование для проекта
Runner - это программа, которая осуществляет процесс тестирования и сборки проекта в среде GitLab по заданной инструкции.
Настройте и зарегистрируйте runner
-
Зайдите по SSH на ВМ и перейдите в режим администратора в консоли:
sudo -i
-
Загрузите runner:
curl --location --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
-
Сделайте runner исполняемым:
chmod +x /usr/local/bin/gitlab-runner
-
Создайте отдельного пользователя для запуска runner:
useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
-
Установите и запустите runner:
gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner gitlab-runner start
-
Зарегистрируйте runner в GitLab:
-
Запустите интерактивную регистрацию командой
gitlab-runner register
. -
Введите адрес вашего GitLab-сервера. При запросе:
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com)
введите
http://<публичный_IP-адрес_вашей_ВМ>
. -
Введите регистрационный токен для runner. Чтобы его найти, нужно перейти в 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
введите описание runner:
My runner
. -
В поле ввода тегов не указывайте ничего, нажмите Enter. Иначе по умолчанию runner не будет выполнять работу без указания соответствующих тегов для проекта.
-
Укажите среду выполнения. В нашем случае, на запрос:
Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:
введите:
shell
.
-
На этом установка и настойка runner выполнена. Если все сделано правильно, то на странице, где вы копировали регистрационный токен, должен появиться раздел Runners activated for this project, в котором будет отображаться зарегистрированный runner.
Создайте сценарий тестирования
Создайте сценарий тестирования, который будет выполнять runner. Сценарий описывается в специальном файле .gitlab-ci.yml
, который должен находиться в корневой директории проекта. По сценарию runner будет компилировать исходный файл проекта в исполняемый файл, а затем запускать его.
Так как тестирование будет выполняться в операционной системе ВМ, установите приложения, которые необходимы для тестирования: 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
. Нажав на значок с облаком вы можете загрузить артефакты сборки.
Создайте ошибку в проекте
Теперь сделайте так, чтобы в проекте произошла ошибка, которую runner должен помочь найти в процессе выполнения тестирования. Для этого:
-
Зайдите в репозиторий проекта и откройте файл
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-адреса.
- Найдите нужный адрес, нажмите значок
и выберите пункт Удалить.