Тестирование приложений с помощью GitLab
GitLab — это сайт и система управления репозиториями кода для Git. Также GitLab позволяет разработчикам вести непрерывный процесс развертывания для создания, тестирования и развертывания кода.
По этой инструкции вы настроите GitLab на виртуальной машине, создадите простой проект на языке программирования C++, настроите сценарий тестирования проекта и проверите его выполнение.
Чтобы создать и протестировать проект в среде GitLab:
- Подготовьте облако к работе.
- Необходимые платные ресурсы.
- Создайте виртуальную машину c GitLab.
- Настройте GitLab.
- Задайте настройки приватности.
- Создайте проект.
- Настройте и запустите тестирование для проекта.
- Настройте и зарегистрируйте runner.
- Создайте сценарий тестирования.
- Создайте ошибку в проекте.
- Как удалить созданные ресурсы.
Подготовьте облако к работе
Перед работой нужно зарегистрироваться в Yandex.Cloud и создать платежный аккаунт:
- Перейдите в консоль управления, затем войдите в Yandex.Cloud или зарегистрируйтесь, если вы еще не зарегистрированы.
- На странице биллинга убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе
ACTIVE
илиTRIAL_ACTIVE
. Если платежного аккаунта нет, создайте его.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша виртуальная машина, на странице облака.
Подробнее об облаках и каталогах.
Необходимые платные ресурсы
В стоимость поддержки сервера для GitLab входит:
- плата за диск и постоянно запущенную виртуальную машину (см. тарифы Yandex Compute Cloud);
- плата за использование динамического или статического публичного IP-адреса (см. тарифы Yandex Virtual Private Cloud).
Создайте виртуальную машину c GitLab
-
На странице каталога в консоли управления нажмите кнопку Создать ресурс и выберите пункт Виртуальная машина.
-
В поле Имя введите имя виртуальной машины:
gitlab
. -
Выберите зону доступности, в которой должна находиться виртуальная машина.
-
В блоке Образы из Cloud Marketplace нажмите кнопку Выбрать. Выберите публичный образ GitLab.
-
В блоке Диски выберите жесткий диск SSD размером 20 Гб.
-
В блоке Вычислительные ресурсы:
-
Выберите платформу виртуальной машины.
-
Укажите необходимое количество vCPU и объем RAM.
Для корректной работы системы GitLab укажите конфигурацию:
- Платформа - Intel Cascade Lake.
- Гарантированная доля vCPU — 100%.
- vCPU — 2.
- RAM — 4 ГБ.
-
-
В блоке Сетевые настройки:
- Выберите Сеть и Подсеть, к которым нужно подключить виртуальную машину. Если нужной сети или подсети еще нет, вы можете создать их прямо на странице создания ВМ.
- В поле Публичный адрес оставьте значение Автоматически, чтобы назначить виртуальной машине случайный внешний IP-адрес из пула Yandex.Cloud, или выберите статический адрес из списка, если вы зарезервировали его заранее.
-
В блоке Доступ укажите данные для доступа к виртуальной машине:
- В поле Логин введите предпочтительное имя пользователя, который будет создан на виртуальной машине.
- В поле SSH-ключ скопируйте ваш открытый SSH-ключ. Пару ключей для подключения по SSH необходимо создать самостоятельно, см. раздел о подключении к виртуальным машинам по SSH.
-
Нажмите кнопку Создать ВМ.
-
Подождите примерно пять минут, пока не будет создана виртуальная машина и на ней не запустятся все сервисы. После полного запуска всех сервисов, GitLab станет доступен через веб-интерфейс в браузере.
Настройте GitLab
- В консоли управления откройте страницу сервиса Compute Cloud. Выберите виртуальную машину
gitlab
и скопируйте ее публичный IP-адрес. - Откройте в браузере веб-интерфейс GitLab, перейдя по публичному IP-адресу ВМ:
http://<публичный IP адрес ВМ
. - Откроется стартовая страница, где система предложит создать пароль администратора. Введите пароль, введите пароль повторно и нажмите кнопку Change your password.
- Зайдите в систему с учетной записью администратора:
- Username or email —
root
. - Password — пароль, установленный на предыдущем шаге.
- Username or email —
Задайте настройки приватности
Отключите возможность регистрации других пользователей через страницу авторизации:
- Нажмите на раздел Configure GitLab
- В панели слева перейдите в раздел 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.
-
Добавьте файл проекта.
-
В панели слева перейдите в раздел Project и выберите вкладку Details.
-
На странице проекта нажмите кнопку 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 -L --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 в панели слева перейдите выберите раздел Project и выберите вкладку Details.
-
На открывшейся странице нажмите кнопку 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
-
После коммита система автоматически начнет тестировать последний коммит. Процесс тестирования и результаты можно посмотреть, в разделе CI/CD на панели слева. В результате должна появиться строчка с первым тестом и статусом passed
. Нажав на значок с облаком вы можете загрузить артефакты сборки.
Создайте ошибку в проекте
Теперь сделайте так, чтобы в проекте произошла ошибка, которую runner должен помочь найти в процессе выполнения тестирования. Для этого:
- Зайдите в репозиторий проекта и откройте файл
test.cpp
. - Нажмите Edit.
- Укажите в проверке (assert), что результат выполнения умножения 2 на 2 должен быть равен 5. В этом случае при выполнении программы произойдет ошибка и она завершится некорректно.
... assert(2 * 2 == 5); ...
- Назовите коммит
Wrong assert in test.cpp
. - Нажмите Commit Changes.
Откройте раздел CI/CD. В столбце Stages видно, что в результате выполнения теста был успешно пройден первый этап build
, а на втором этапе test
произошла ошибка. Третий этап pack
был пропущен и итоговые артефакты не были сформированы.
Если нажать на статус выполнения failed
и перейти на вкладку Failed Jobs, можно увидеть текст ошибки, где указано, что не выполнился assert
:
Как удалить созданные ресурсы
Чтобы перестать платить за развернутый сервер, достаточно удалить созданную виртуальную машину gitlab
.
Если вы зарезервировали статический публичный IP-адрес специально для этой ВМ:
- Откройте сервис Virtual Private Cloud в вашем каталоге.
- Перейдите на вкладку IP-адреса.
- Найдите нужный адрес, нажмите значок и выберите пункт Удалить.