Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
Практические руководства
  • Веб-сервис
    • Все руководства
    • Статический сайт в Object Storage
    • Сайт на LAMP- или LEMP-стеке
    • Отказоустойчивый сайт с балансировкой нагрузки с помощью Network Load Balancer
    • Отказоустойчивый сайт с балансировкой нагрузки с помощью Application Load Balancer
    • Сайт на базе Joomla с БД PostgreSQL
    • Создание сайта на WordPress
    • Сайт на WordPress с БД MySQL
    • Перенос WordPress сайта с хостинга в Yandex Cloud
    • Сайт на базе 1С-Битрикс
    • Организация виртуального хостинга
    • Создание балансировщика с защитой от DDoS
    • Публикация обновлений для игр с помощью Cloud CDN
    • Интеграция L7-балансировщика с Cloud CDN и Object Storage
    • Сине-зеленое и канареечное развертывание версий сервиса
    • Терминирование TLS-соединений
  • Интернет-магазины
    • Все руководства
    • Интернет-магазин на 1С-Битрикс
    • Интернет-магазин на OpenCart
  • Архив данных
    • Все руководства
    • Однонодовый файловый сервер
    • Настройка SFTP-сервера на Centos 7
    • Резервное копирование в Object Storage через Acronis
    • Резервное копирование в Object Storage с помощью CloudBerry Desktop Backup
    • Резервное копирование в Object Storage через Duplicati
    • Резервное копирование в Object Storage с помощью Bacula
    • Резервное копирование в Object Storage с помощью Veritas Backup Exec
    • Распознавание архива изображений в Vision
  • Тестовая среда
    • Все руководства
    • Тестирование приложений с помощью GitLab
    • Создание тестовых ВМ через GitLab CI
    • Высокопроизводительные вычисления на прерываемых ВМ
    • Эмуляция множества IoT-устройств
    • Нагрузочное тестирование gRPC-сервиса
    • Развертывание и нагрузочное тестирование gRPC-сервиса с масштабированием
    • HTTPS-тест с постоянной нагрузкой с помощью Phantom
    • HTTPS-тест со ступенчатой нагрузкой с помощью Pandora
    • Нагрузочное тестирование с нескольких агентов
  • Управление инфраструктурой
    • Все руководства
    • Начало работы с Terraform
    • Загрузка состояний Terraform в Object Storage
    • Начало работы с Packer
    • Сборка образа ВМ с набором инфраструктурных инструментов с помощью Packer
    • Автоматизация сборки образов с помощью Jenkins и Packer
    • Непрерывное развертывание контейнеризованных приложений с помощью GitLab
    • Создание кластера Linux-серверов «1С:Предприятия» с кластером Managed Service for PostgreSQL
    • Миграция в Yandex Cloud с помощью Hystax Acura
    • Защита от сбоев с помощью Hystax Acura
    • Настройка синхронизации часов с помощью NTP
    • Работа с группой ВМ с автомасштабированием
    • Масштабирование группы ВМ по расписанию
    • Автомасштабирование группы ВМ для обработки сообщений из очереди Message Queue
    • Обновление группы ВМ под нагрузкой
    • Передача логов с ВМ в Cloud Logging
    • Резервное копирование ВМ с помощью Hystax Acura Backup
    • Настройка отказоустойчивой архитектуры в Yandex Cloud
    • Создание SAP-программы в Yandex Cloud
    • Настройка локального кеширующего DNS-резолвера
    • Миграция DNS-зон из Яндекс 360 в Cloud DNS
    • Интеграция Cloud DNS и корпоративного сервиса DNS
    • Создание веб-хука резолвера ACME для ответов на DNS01-проверки
    • Запись логов балансировщика в PostgreSQL
    • Создание триггера для бюджетов, который вызывает функцию для остановки ВМ
  • Построение Data Platform
    • Все руководства
    • Миграция БД из стороннего кластера Apache Kafka® в Managed Service for Apache Kafka®
    • Поставка данных из Managed Service for MySQL в Managed Service for Apache Kafka® с помощью Data Transfer
    • Поставка данных из Managed Service for PostgreSQL в Managed Service for Apache Kafka® с помощью Data Transfer
    • Поставка данных из Managed Service for Apache Kafka® в Managed Service for ClickHouse с помощью Data Transfer
    • Перенос данных между кластерами Managed Service for Apache Kafka® с помощью Data Transfer
    • Поставка данных из Managed Service for Apache Kafka® в Managed Service for YDB с помощью Data Transfer
    • Поставка данных из Managed Service for MySQL в Managed Service for Apache Kafka® с помощью Debezium
    • Поставка данных из Managed Service for PostgreSQL в Managed Service for Apache Kafka® с помощью Debezium
    • Настройка Kafka Connect для работы с кластером Managed Service for Apache Kafka®
    • Управление схемами данных в Managed Service for Apache Kafka®
    • Использование Managed Schema Registry с Managed Service for Apache Kafka®
    • Использование Confluent Schema Registry с Managed Service for Apache Kafka®
    • Миграция базы данных из MySQL в ClickHouse с помощью Data Transfer
    • Асинхронная репликация данных из PostgreSQL в ClickHouse
    • Обмен данными между Managed Service for ClickHouse и Data Proc
    • Настройка Managed Service for ClickHouse для Graphite
    • Получение данных из Managed Service for Apache Kafka® в Managed Service for ClickHouse
    • Поставка данных из Managed Service for Apache Kafka® в Managed Service for ClickHouse с помощью Data Transfer
    • Получение данных из RabbitMQ в Managed Service for ClickHouse
    • Сохранение потока данных Data Streams в Managed Service for ClickHouse
    • Использование гибридного хранилища в Managed Service for ClickHouse
    • Шардирование таблиц Managed Service for ClickHouse
    • Настройка Cloud DNS для доступа к кластерам управляемых баз данных из других облачных сетей
    • Настройка Cloud DNS для доступа к кластеру Managed Service for ClickHouse из других облачных сетей
    • Обмен данными между Managed Service for ClickHouse и Data Proc
    • Импорт данных из Managed Service for MySQL в Data Proc с помощью Sqoop
    • Импорт данных из Managed Service for PostgreSQL в Data Proc с помощью Sqoop
    • Использование скриптов инициализации для настройки GeeseFS в Data Proc
    • Миграция данных из стороннего кластера Elasticsearch в Managed Service for Elasticsearch с помощью Reindex API
    • Миграция коллекций из стороннего кластера MongoDB в Managed Service for MongoDB
    • Миграция данных в Managed Service for MongoDB
    • Шардирование коллекций MongoDB
    • Анализ производительности и оптимизация MongoDB
    • Миграция БД из стороннего кластера MySQL в кластер Managed Service for MySQL
    • Анализ производительности и оптимизация Managed Service for MySQL
    • Синхронизация данных из стороннего кластера MySQL в Managed Service for MySQL с помощью Data Transfer
    • Миграция БД из Managed Service for MySQL в сторонний кластер MySQL
    • Миграция БД из Managed Service for MySQL в Object Storage с помощью Data Transfer
    • Импорт данных из Managed Service for MySQL в Data Proc с помощью Sqoop
    • Поставка данных из Managed Service for MySQL в Managed Service for Apache Kafka® с помощью Data Transfer
    • Поставка данных из Managed Service for MySQL в Managed Service for Apache Kafka® с помощью Debezium
    • Миграция БД из Managed Service for MySQL в Managed Service for YDB с помощью Data Transfer
    • Создание кластера PostgreSQL для «1С:Предприятия»
    • Анализ производительности и оптимизация Managed Service for PostgreSQL
    • Миграция БД из Managed Service for PostgreSQL
    • Миграция БД из стороннего кластера PostgreSQL в Managed Service for PostgreSQL
    • Асинхронная репликация данных из PostgreSQL в ClickHouse
    • Поставка данных из Managed Service for PostgreSQL в Managed Service for Apache Kafka® с помощью Data Transfer
    • Поставка данных из Managed Service for PostgreSQL в Managed Service for Apache Kafka® с помощью Debezium
    • Импорт данных из Managed Service for PostgreSQL в Data Proc с помощью Sqoop
    • Поставка данных из Managed Service for PostgreSQL в Managed Service for YDB с помощью Data Transfer
    • Миграция БД из Managed Service for PostgreSQL в Object Storage
    • Миграция БД из Greenplum® в ClickHouse
    • Миграция БД из Greenplum® в PostgreSQL
    • Миграция БД из стороннего кластера Redis в Managed Service for Redis
    • Использование кластера Managed Service for Redis в качестве хранилища сессий PHP
  • Продукты Microsoft в Yandex Cloud
    • Все руководства
    • Развертывание Active Directory
    • Развертывание Microsoft Exchange
    • Развертывание Remote Desktop Services
    • Развертывание группы доступности Always On с внутренним сетевым балансировщиком
    • Развертывание Remote Desktop Gateway
  • Сетевая инфраструктура
    • Все руководства
    • Архитектура и защита базового интернет-сервиса
    • Настройки DHCP для работы с корпоративным DNS-сервером
    • Маршрутизация с помощью NAT-инстанса
    • Создание туннеля IPSec VPN
    • Установка виртуального роутера Cisco CSR 1000v
    • Установка виртуального роутера Mikrotik CHR
    • Соединение с облачной сетью при помощи OpenVPN
    • Создание и настройка шлюза UserGate в режиме прокси-сервера
    • Создание и настройка шлюза UserGate в режиме межсетевого экрана
    • Настройка сети для Data Proc
  • Визуализация и анализ данных
    • Все руководства
    • Визуализация данных из файла
    • Создание и публикация диаграммы с картой Москвы из CSV-файла
    • Анализ продаж сети магазинов из БД ClickHouse
    • Анализ открытых данных ДТП на дорогах России
    • Анализ продаж и локаций пиццерий на данных из БД ClickHouse и Cloud Marketplace
    • Веб-аналитика с подключением к Яндекс Метрике
    • Веб-аналитика с расчетом воронок и когорт на данных Яндекс Метрики
    • Аналитика мобильного приложения на данных AppMetrica
    • Анализ статистики подкастов Яндекс Музыки (для авторов подкастов)
    • Визуализация данных с помощью QL-чарта
    • Анализ customer journey мобильного приложения на данных AppMetrica
    • Анализ логов Object Storage при помощи DataLens
  • Интернет вещей
    • Руководства по работе с интернетом вещей
    • Мониторинг состояния географически распределенных устройств
    • Мониторинг показаний датчиков и уведомления о событиях
  • Бессерверные технологии
    • Сокращатель ссылок
    • Ввод данных в системы хранения
    • Хранение журналов работы приложения
    • Развертывание веб-приложения с использованием Java Servlet API
    • Разработка Slack-бота
    • Разработка Telegram-бота
    • Разработка пользовательской интеграции в API Gateway
    • Разработка CRUD API для сервиса фильмов
    • Разработка навыка Алисы и сайта с авторизацией
  1. Тестовая среда
  2. Тестирование приложений с помощью GitLab

Тестирование приложений с помощью GitLab

Статья создана
Yandex Cloud
,
улучшена
Dmitry A.
  • Подготовьте облако к работе
    • Необходимые платные ресурсы
  • Создайте виртуальную машину с GitLab
  • Настройте GitLab
    • Задайте настройки приватности
  • Создайте проект
  • Настройте и запустите тестирование для проекта
    • Настройте и зарегистрируйте runner
    • Создайте сценарий тестирования
    • Создайте ошибку в проекте
  • Как удалить созданные ресурсы

GitLab — это сайт и система управления репозиториями кода для Git. Также GitLab позволяет разработчикам вести непрерывный процесс для создания, тестирования и развертывания кода.

В этом сценарии вы настроите GitLab на виртуальной машине, создадите простой проект на языке программирования C++, настроите сценарий тестирования проекта и проверите его выполнение.

Чтобы создать и протестировать проект в среде GitLab:

  1. Подготовьте облако к работе.

  2. Необходимые платные ресурсы.

  3. Создайте ВМ с GitLab.

  4. Настройте GitLab.

  5. Задайте настройки приватности.

  6. Создайте проект.

  7. Настройте и запустите тестирование для проекта.

  8. Настройте и зарегистрируйте runner.

  9. Создайте сценарий тестирования.

  10. Создайте ошибку в проекте.

  11. Как удалить созданные ресурсы.

Подготовьте облако к работе

Перед работой нужно зарегистрироваться в Yandex Cloud и создать платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь, если вы еще не зарегистрированы.
  2. На странице биллинга убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его.

Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака.

Подробнее об облаках и каталогах.

Необходимые платные ресурсы

В стоимость поддержки сервера для GitLab входит:

  • Плата за диск и постоянно запущенную ВМ (см. тарифы Yandex Compute Cloud).
  • Плата за использование динамического или статического публичного IP-адреса (см. тарифы Yandex Virtual Private Cloud).

Создайте виртуальную машину с GitLab

  1. На странице каталога в консоли управления нажмите кнопку Создать ресурс и выберите пункт Виртуальная машина.
  2. В поле Имя введите имя ВМ: gitlab.
  3. Выберите зону доступности, в которой должна находиться ВМ.
  4. В блоке Выбор образа/загрузочного диска перейдите на вкладку Cloud Marketplace и выберите публичный образ GitLab.
  5. В блоке Диски выберите жесткий диск SSD размером 20 Гб.
  6. В блоке Вычислительные ресурсы:
    • Выберите платформу ВМ.

    • Укажите необходимое количество vCPU и объем RAM.

      Для корректной работы системы GitLab укажите конфигурацию:

      • Платформа - Intel Ice Lake.
      • Гарантированная доля vCPU — 100%.
      • vCPU — 4.
      • RAM — 8 ГБ.
  7. В блоке Сетевые настройки:
    • Выберите Сеть и Подсеть, к которым нужно подключить ВМ. Если нужной сети или подсети еще нет, создайте их.
    • В поле Публичный адрес оставьте значение Автоматически, чтобы назначить ВМ случайный внешний IP-адрес из пула Yandex Cloud, или выберите статический адрес из списка, если вы зарезервировали его заранее.
  8. В блоке Доступ укажите данные для доступа к ВМ:
    • В поле Логин введите предпочтительное имя пользователя, который будет создан на ВМ.
    • В поле SSH-ключ скопируйте ваш открытый SSH-ключ. Пару ключей для подключения по SSH необходимо создать самостоятельно, см. раздел о подключении к ВМ по SSH.
  9. Нажмите кнопку Создать ВМ.
  10. Подождите примерно пять минут, пока не будет создана ВМ и на ней не запустятся все сервисы. После полного запуска всех сервисов, GitLab станет доступен через веб-интерфейс в браузере.

Настройте GitLab

  1. На странице сервиса Compute Cloud выберите созданную ВМ gitlab и скопируйте ее публичный IP-адрес.

  2. Подключитесь к ВМ по протоколу SSH.

  3. Получите пароль администратора GitLab с помощью команды ВМ:

    sudo cat /etc/gitlab/initial_root_password
    
  4. Скопируйте пароль из строки Password (исключая пробелы) в буфер обмена или отдельный файл.

  5. Откройте в браузере ссылку http://<публичный IP-адрес ВМ>. Откроется веб-интерфейс GitLab.

  6. Войдите в систему с учетной записью администратора:

    • Username or email — root.
    • Password — пароль, скопированный ранее.

    Если вы не можете войти, сбросьте пароль учетной записи администратора.

  7. Смените пароль учетной записи администратора.

  8. Повторно войдите в систему с учетной записью администратора, используя новый пароль.

Задайте настройки приватности

Отключите возможность регистрации других пользователей через страницу авторизации:

  1. Нажмите на раздел Configure GitLab.
  2. В панели слева перейдите в раздел Settings и выберите вкладку General.
  3. В блоке Sign-up restrictions нажмите кнопку Expand.
  4. Отключите опцию Sign-up enabled.
  5. Нажмите кнопку Save changes.

Теперь зарегистрировать новых пользователь может только администратор, через вкладку Users в разделе Overview.

Создайте проект

Для того, чтобы создать проект:

  1. На главной странице GitLab выберите Create a project.

  2. На открывшейся странице укажите:

    • Имя проекта: My Project.
    • Группу и идентификатор проекта: root и my-project.
    • При необходимости задайте описание и область видимости проекта.
  3. Нажмите кнопку Create project.

    Создание проекта

  4. После создания проекта в панели слева перейдите в раздел Settings и выберите вкладку CI/CD.

  5. В блоке Auto DevOps нажмите кнопку Expand, отключите опцию Default to Auto DevOps pipeline и сохраните изменения кнопкой Save changes.

    Отключение Auto DevOps

  6. Добавьте файл проекта.

    1. В панели слева перейдите в раздел Project и выберите вкладку Details.

    2. На странице проекта нажмите кнопку New file.

    3. Назовите файл 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;
      }
      

      Добавление файла

    4. Укажите название коммита в поле Commit message.

    5. Нажмите кнопку Commit changes.

Настройте и запустите тестирование для проекта

Runner - это программа, которая осуществляет процесс тестирования и сборки проекта в среде GitLab по заданной инструкции.

Настройте и зарегистрируйте runner

  1. Зайдите по SSH на ВМ и перейдите в режим администратора в консоли:

    sudo -i
    
  2. Загрузите runner:

    curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
    
  3. Сделайте runner исполняемым:

    chmod +x /usr/local/bin/gitlab-runner
    
  4. Создайте отдельного пользователя для запуска runner:

    useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
    
  5. Установите и запустите runner:

    gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
    gitlab-runner start
    
  6. Зарегистрируйте runner в GitLab:

    1. Запустите интерактивную регистрацию командой gitlab-runner register.

    2. Введите адрес вашего GitLab-сервера. При запросе:

      Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com)
      

      введите http://<публичный-IP-адрес-вашей-ВМ>.

    3. Введите регистрационный токен для runner. Чтобы его найти, нужно перейти в GitLab на страницу проекта, затем в панели слева выбрать Settings и открыть вкладку CI/CD. После этого нажмите кнопку Expand в блоке Runners. В разделе Set up a specific Runner manually скопируйте токен из третьего пункта и введите его в ответ на запрос:

      Please enter the gitlab-ci token for this runner
      <токен>
      

      Получение токена

    4. На запрос:

      Please enter the gitlab-ci description for this runner
      

      введите описание runner: My runner.

    5. В поле ввода тегов не указывайте ничего, нажмите Enter. Иначе по умолчанию runner не будет выполнять работу без указания соответствующих тегов для проекта.

    6. Укажите среду выполнения. В нашем случае, на запрос:

      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++ для компиляции проекта.

Чтобы создать сценарий тестирования:

  1. Подключитесь к ВМ по SSH и установите необходимые приложения:

    sudo apt update
    sudo apt install -y git g++
    
  2. Добавьте сценарий тестирования:

    1. В веб-интерфейсе GitLab в панели слева перейдите в раздел Project и выберите вкладку Details.

    2. На открывшейся странице нажмите кнопку Set up CI&CD.

    3. Откроется страница с предложением добавить новый файл .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 не будет доступен и произойдет ошибка.

      Сценарий тестирования

    4. Нажмите Commit changes

После коммита система автоматически начнет тестировать последний коммит. Процесс тестирования и результаты можно посмотреть, в разделе CI/CD на панели слева. В результате должна появиться строчка с первым тестом и статусом passed. Нажав на значок с облаком вы можете загрузить артефакты сборки.

Создайте ошибку в проекте

Теперь сделайте так, чтобы в проекте произошла ошибка, которую runner должен помочь найти в процессе выполнения тестирования. Для этого:

  1. Зайдите в репозиторий проекта и откройте файл test.cpp.

  2. Нажмите Edit.

  3. Укажите в проверке (assert), что результат выполнения умножения 2 на 2 должен быть равен 5. В этом случае при выполнении программы произойдет ошибка и она завершится некорректно.

    ...
    assert(2 * 2 == 5);
    ...
    
  4. Назовите коммит Wrong assert in test.cpp.

  5. Нажмите Commit Changes.

Откройте раздел CI/CD. В столбце Stages видно, что в результате выполнения теста был успешно пройден первый этап build, а на втором этапе test произошла ошибка. Третий этап pack был пропущен и итоговые артефакты не были сформированы.

Если нажать на статус выполнения failed и перейти на вкладку Failed Jobs, можно увидеть текст ошибки, где указано, что не выполнился assert:

Ошибка выполнения

Как удалить созданные ресурсы

Чтобы перестать платить за развернутый сервер, достаточно удалить созданную ВМ gitlab.

Если вы зарезервировали статический публичный IP-адрес специально для этой ВМ:

  1. Выберите сервис Virtual Private Cloud в вашем каталоге.
  2. Перейдите на вкладку IP-адреса.
  3. Найдите нужный адрес, нажмите значок и выберите пункт Удалить.

Была ли статья полезна?

Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
В этой статье:
  • Подготовьте облако к работе
  • Необходимые платные ресурсы
  • Создайте виртуальную машину с GitLab
  • Настройте GitLab
  • Задайте настройки приватности
  • Создайте проект
  • Настройте и запустите тестирование для проекта
  • Настройте и зарегистрируйте runner
  • Создайте сценарий тестирования
  • Создайте ошибку в проекте
  • Как удалить созданные ресурсы