Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Compute Cloud
  • Yandex Container Solution
    • Все руководства
    • Настройка синхронизации часов с помощью NTP
    • Автомасштабирование группы ВМ для обработки сообщений из очереди
    • Обновление группы ВМ под нагрузкой
    • Развертывание Remote Desktop Gateway
    • Начало работы с Packer
    • Передача логов с ВМ в Yandex Cloud Logging
    • Сборка образа ВМ с набором инфраструктурных инструментов с помощью Packer
    • Миграция в Yandex Cloud с помощью Хайстекс Акура
    • Защита от сбоев с помощью Хайстекс Акура
    • Резервное копирование ВМ с помощью Хайстекс Акура
    • Развертывание отказоустойчивой архитектуры с прерываемыми ВМ
    • Настройка отказоустойчивой архитектуры в Yandex Cloud
    • Создание триггера для бюджетов, который вызывает функцию для остановки ВМ
    • Создание триггеров, которые вызывают функции для остановки ВМ и отправки уведомлений в Telegram
    • Создание веб-приложения на Python с использованием фреймворка Flask
    • Создание SAP-программы в Yandex Cloud
    • Развертывание сервера Minecraft в Yandex Cloud
    • Автоматизация сборки образов с помощью Jenkins и Packer
    • Создание тестовых виртуальных машин через GitLab CI
    • Высокопроизводительные вычисления (HPC) на прерываемых ВМ
    • Настройка SFTP-сервера на Centos 7
    • Развертывание параллельной файловой системы GlusterFS в высокодоступном режиме
    • Развертывание параллельной файловой системы GlusterFS в высокопроизводительном режиме
    • Резервное копирование в Object Storage с помощью Bacula
    • Построение пайплайна CI/CD в GitLab с использованием serverless-продуктов
    • Реализация защищенной высокодоступной сетевой инфраструктуры с выделением DMZ на основе Check Point NGFW
    • Сегментация облачной инфраструктуры с помощью решения Check Point Next-Generation Firewall
    • Настройка защищенного туннеля GRE поверх IPsec
    • Создание бастионного хоста
    • Реализация отказоустойчивых сценариев для сетевых виртуальных машин
    • Создание туннеля между двумя подсетями при помощи OpenVPN Access Server
    • Создание внешней таблицы на базе таблицы из бакета Object Storage с помощью конфигурационного файла
    • Настройка сетевой связности между подсетями BareMetal и Virtual Private Cloud
    • Работа со снапшотами в Managed Service for Kubernetes
    • Запуск языковой модели DeepSeek-R1 в кластере GPU
    • Запуск библиотеки vLLM с языковой моделью Gemma 3 на ВМ с GPU
    • Доставка USB-устройств на виртуальную машину или сервер BareMetal
  • Управление доступом
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • История изменений
  • Обучающие курсы

В этой статье:

  • Подготовьте облако к работе
  • Необходимые платные ресурсы
  • Создайте виртуальную машину для тестового приложения
  • Подготовьте виртуальную машину с тестовым приложением
  • Проверьте работу тестового приложения
  • Подготовьте снимок диска виртуальной машины
  • Создайте виртуальную машину с GitLab
  • Настройте GitLab
  • Настройте Runner
  • Настройте CI
  • Проверьте работу приложения на виртуальной машине, созданной с помощью CI
  • Удалите созданные ресурсы
  1. Практические руководства
  2. Создание тестовых виртуальных машин через GitLab CI

Создание тестовых виртуальных машин через GitLab CI

Статья создана
Yandex Cloud
Обновлена 21 апреля 2025 г.
  • Подготовьте облако к работе
    • Необходимые платные ресурсы
  • Создайте виртуальную машину для тестового приложения
  • Подготовьте виртуальную машину с тестовым приложением
  • Проверьте работу тестового приложения
  • Подготовьте снимок диска виртуальной машины
  • Создайте виртуальную машину с GitLab
  • Настройте GitLab
  • Настройте Runner
  • Настройте CI
  • Проверьте работу приложения на виртуальной машине, созданной с помощью CI
    • Удалите созданные ресурсы

С помощью Yandex Cloud вы можете автоматизировать рутинные действия, например, запускать определенный скрипт после каждого коммита в ветку master репозитория Git. В примере ниже после каждого коммита создается и тестируется ВМ.

Чтобы настроить непрерывную интеграцию (Continuous Integration, CI) для снимков дисков ВМ:

  1. Создайте ВМ для тестового приложения — создайте новую ВМ, снимок диска которой будет использоваться для создания новых ВМ с помощью CI.
  2. Подготовьте ВМ с тестовым приложением — установите на ВМ веб-сервер и набор компонентов для работы тестового приложения. Напишите тестовое приложение, которое будет переворачивать слова в переданном на сервер тексте.
  3. Проверьте работу приложения — проверьте настройки сервера и работу приложения с помощью пробного запроса.
  4. Создайте снимок диска ВМ — создайте снимок диска ВМ из которого CI будет создавать новые ВМ.
  5. Создайте ВМ с GitLab — создайте ВМ с GitLab, где в репозитории будут храниться настройки CI и скрипт функционального тестирования.
  6. Настройте GitLab — создайте репозиторий для файлов и получите необходимые для конфигурации параметры.
  7. Настройте Runner — инструмент для выполнения задач.
  8. Настройте CI — задайте конфигурацию CI, указав необходимые параметры для команд и тестирования.
  9. Проверьте работу приложения на ВМ, созданной с помощью CI — убедитесь, что создающиеся с помощью CI и снимка ВМ создаются, а тестовое приложение работает.

Если созданные ВМ больше не нужны, удалите их.

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

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

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

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

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

Перед тем, как создавать ВМ:

  1. Перейдите в консоль управления Yandex Cloud и выберите каталог, в котором будете выполнять операции.
  2. Убедитесь, что в выбранном каталоге есть сеть с подсетью, к которой можно подключить ВМ. Для этого на странице каталога выберите сервис Virtual Private Cloud. Если в списке есть сеть — нажмите на нее, чтобы увидеть список подсетей. Если ни одной подсети или сети нет, создайте их.

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

В стоимость поддержки инфраструктуры входят:

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

Создайте виртуальную машину для тестового приложенияСоздайте виртуальную машину для тестового приложения

Создайте ВМ, на которой будут установлены тестовое приложение, набор необходимых для его работы компонентов и веб-сервер:

  1. В консоли управления выберите каталог, в котором будет создана ВМ.

  2. В списке сервисов выберите Compute Cloud.

  3. На панели слева выберите Виртуальные машины.

  4. Нажмите кнопку Создать виртуальную машину.

  5. В блоке Образ загрузочного диска выберите публичный образ Ubuntu 18.04.

  6. В блоке Расположение выберите зону доступности, в которой будет находиться ВМ.

  7. В блоке Вычислительные ресурсы перейдите на вкладку Своя конфигурация и укажите параметры:

    • Платформа — Intel Ice Lake.
    • vCPU — 2.
    • Гарантированная доля vCPU — 20%.
    • RAM — 1 ГБ.
  8. В блоке Сетевые настройки выберите, к какой подсети необходимо подключить ВМ при создании.

  9. В блоке Доступ выберите SSH-ключ и укажите данные для доступа к ВМ:

    • В поле Логин введите имя пользователя, который будет создан на виртуальной машине, например yc-user.

      Внимание

      Не используйте логин root или другие имена, зарезервированные операционной системой. Для выполнения операций, требующих прав суперпользователя, используйте команду sudo.

    • В поле SSH-ключ выберите SSH-ключ, сохраненный в вашем профиле пользователя организации.

      Если в вашем профиле нет сохраненных SSH-ключей или вы хотите добавить новый ключ:

      • Нажмите кнопку Добавить ключ.
      • Задайте имя SSH-ключа.
      • Загрузите или вставьте содержимое открытого SSH-ключа. Пару SSH-ключей для подключения к ВМ по SSH необходимо создать самостоятельно.
      • Нажмите кнопку Добавить.

      SSH-ключ будет добавлен в ваш профиль пользователя организации.

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

  10. В блоке Общая информация задайте имя ВМ: ci-tutorial-test-app.

  11. Нажмите кнопку Создать ВМ.

Создание ВМ может занять несколько минут. Когда ВМ перейдет в статус RUNNING, вы можете перейти к ее настройке.

При создании ВМ назначаются IP-адрес и имя хоста (FQDN). Эти данные можно использовать для доступа по SSH.

Подготовьте виртуальную машину с тестовым приложениемПодготовьте виртуальную машину с тестовым приложением

На созданную ВМ нужно установить набор необходимых для работы тестового приложения компонентов и веб-сервер для обработки запросов. Само приложение будет написано на языке Python 2.

  1. В блоке Сеть на странице ВМ в консоли управления найдите публичный IP-адрес ВМ.

  2. Подключитесь к ВМ по протоколу SSH. Для этого можно использовать утилиту ssh в Linux и macOS и программу PuTTY для Windows.

    ssh <логин>@<публичный_IP-адрес_ВМ>
    
  3. Выполните команду apt update, чтобы обновить списки доступных для установки пакетов.

  4. Установите необходимые пакеты: JSON-процессор jq, Git-клиент, менеджер пакетов PIP, систему управления виртуальными средами virtualenv, набор заголовочных файлов для Python C API и веб-сервер Nginx:

    sudo apt-get --yes install jq git python-pip virtualenv python-dev nginx-full
    
  5. Создайте директорию, в которой будет находиться приложение. Также сделайте пользователя, от имени которого вы подключились к ВМ, владельцем директории:

    sudo mkdir /srv/test-app
    sudo chown -R $USER /srv/test-app
    
  6. Перейдите в директорию и создайте в ней виртуальное окружение virtualenv:

    cd /srv/test-app
    virtualenv test-venv
    
  7. Запустите виртуальное окружение:

    . test-venv/bin/activate
    
  8. Установите в виртуальное окружение фреймворк Flask и веб-сервер uWSGI:

    pip install flask uwsgi
    
  9. Деактивируйте виртуальное окружение:

    deactivate
    
  10. Создайте в директории /srv/test-app файл api.py:

    touch api.py
    
  11. Откройте файл api.py любым текстовым редактором и скопируйте в него код на языке Python, который:

    • Принимает на вход текстовую строку в параметре text.
    • Записывает каждое слово из переданной строки наоборот.
    • Возвращает ответ:
      • В формате JSON, если клиентское приложение может принимать JSON.
      • Обычный текст, если клиентское приложение не может принять JSON.
    # api.py
    import json
    from flask import Flask, request, make_response as response
    
    app = Flask(__name__)
    
    @app.route("/")
    def index():
        text = request.args.get('text')
        json_type = 'application/json'
        json_accepted = json_type in request.headers.get('Accept', '')
        if text:
            words = text.split()
            reversed_words = [word[::-1] for word in words]
            if json_accepted:
                res = response(json.dumps({'text': reversed_words}), 200)
            else:
                res = response(' '.join(reversed_words), 200)
        else:
            res = response('text not found', 501)
        res.headers['Content-Type'] = json_type if json_accepted else 'text/plain'
        return res
    
  12. Создайте в директории /srv/test-app файл wsgi.py:

    touch wsgi.py
    
  13. Откройте файл wsgi.py любым текстовым редактором и скопируйте в него код, запускающий тестовое приложение:

    # wsgi.py
    from api import app
    
    if __name__ == "__main__":
        app.run()
    
  14. Создайте в директории /srv/test-app файл test-app.ini:

    touch test-app.ini
    
  15. Откройте файл test-app.ini любым текстовым редактором и скопируйте в него конфигурацию сервера uWSGI:

    #test-app.ini
    [uwsgi]
    module = wsgi:app
    
    master = true
    processes = 1
    
    socket = test-app.sock
    chmod-socket = 660
    vacuum = true
    
    die-on-term = true
    
  16. Назначьте пользователя www-data владельцем директории /srv/test-app и файлов в ней:

    sudo chown -R www-data:www-data /srv/test-app
    
  17. Подготовьте сервис для запуска вашего uWSGI-сервера. Для этого приведите файл /etc/systemd/system/test-app.service к следующему виду:

    #/etc/systemd/system/test-app.service
    [Unit]
    Description=uWSGI instance to serve test API
    After=network.target
    
    [Service]
    User=www-data
    Group=www-data
    WorkingDirectory=/srv/test-app
    Environment="PATH=/srv/test-app/test-venv/bin"
    ExecStart=/srv/test-app/test-venv/bin/uwsgi --ini test-app.ini
    
    [Install]
    WantedBy=multi-user.target
    
  18. Укажите настройки нового виртуального сервера в конфигурации Nginx, приведя файл /etc/nginx/sites-available/test-app.conf к следующему виду:

    #/etc/nginx/sites-available/test-app.conf
    server {
        #server_name test-app.yandex www.test-app.yandex;
    
        listen 80;
    
        location /test/ {
            include uwsgi_params;
            uwsgi_param SCRIPT_NAME /test;
            uwsgi_modifier1 30;
            uwsgi_pass unix:/srv/test-app/test-app.sock;
        }
    }
    
  19. Создайте символическую ссылку, указывающую на конфигурационный файл Nginx test-app.conf:

    sudo ln -s /etc/nginx/sites-available/test-app.conf /etc/nginx/sites-enabled/
    
  20. Удалите символическую ссылку, указывающую на конфигурацию Nginx по умолчанию:

    sudo unlink /etc/nginx/sites-enabled/default
    
  21. Добавьте сервис в список автозапуска системы:

    sudo systemctl enable test-app.service
    

Проверьте работу тестового приложенияПроверьте работу тестового приложения

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

  1. В строке браузера введите URL для проверки работы веб-сервера и приложения:

    http://<публичный_IP-адрес_ВМ>/test/?text=hello_world
    
  2. Если все выполнено верно, на экране отобразится текст с перевернутыми словами из параметра text.

Подготовьте снимок диска виртуальной машиныПодготовьте снимок диска виртуальной машины

Чтоб легко переносить созданное приложение и конфигурацию веб-сервера на создаваемые с помощью CI ВМ, нужно сделать снимок диска тестовой ВМ.

  1. В консоли управления Yandex Cloud выберите каталог, в котором создана ВМ.
  2. Выберите сервис Compute Cloud.
  3. Найдите ВМ ci-tutorial-test-app и выберите ее.
  4. Нажмите кнопку Остановить.
  5. В открывшемся окне нажмите кнопку Остановить.
  6. После остановки ВМ выберите вкладку Диски.
  7. В строке диска нажмите кнопку и выберите пункт Создать снимок.
  8. В открывшемся окне введите имя снимка: test-app-snap.
  9. Нажмите кнопку Создать.

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

Один из способов настроить CI в Yandex Cloud — воспользоваться публичным образом с предустановленной системой GitLab. В GitLab входит набор инструментов для управления репозиториями Git и средства для настройки CI.

  1. В консоли управления выберите каталог, в котором будет создана ВМ.

  2. В списке сервисов выберите Compute Cloud.

  3. На панели слева выберите Виртуальные машины.

  4. Нажмите кнопку Создать виртуальную машину.

  5. В блоке Образ загрузочного диска перейдите на вкладку Marketplace, нажмите кнопку Показать все продукты Marketplace и выберите образ GitLab.

  6. В блоке Расположение выберите зону доступности, в которой будет находиться ВМ.

  7. В блоке Вычислительные ресурсы перейдите на вкладку Своя конфигурация и укажите параметры:

    • Платформа — Intel Ice Lake.
    • vCPU — 2.
    • Гарантированная доля vCPU — 100%.
    • RAM — 2 ГБ.
  8. В блоке Сетевые настройки выберите, к какой подсети необходимо подключить ВМ при создании.

  9. В блоке Доступ выберите SSH-ключ и укажите данные для доступа к ВМ:

    • В поле Логин введите имя пользователя, который будет создан на виртуальной машине, например yc-user.

      Внимание

      Не используйте логин root или другие имена, зарезервированные операционной системой. Для выполнения операций, требующих прав суперпользователя, используйте команду sudo.

    • В поле SSH-ключ выберите SSH-ключ, сохраненный в вашем профиле пользователя организации.

      Если в вашем профиле нет сохраненных SSH-ключей или вы хотите добавить новый ключ:

      • Нажмите кнопку Добавить ключ.
      • Задайте имя SSH-ключа.
      • Загрузите или вставьте содержимое открытого SSH-ключа. Пару SSH-ключей для подключения к ВМ по SSH необходимо создать самостоятельно.
      • Нажмите кнопку Добавить.

      SSH-ключ будет добавлен в ваш профиль пользователя организации.

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

  10. В блоке Общая информация задайте имя ВМ: ci-tutorial-gitlab.

  11. Нажмите кнопку Создать ВМ.

Создание ВМ может занять несколько минут. Когда ВМ перейдет в статус RUNNING, вы можете перейти к ее настройке.

При создании ВМ назначаются IP-адрес и имя хоста (FQDN). Эти данные можно использовать для доступа по SSH.

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

Чтобы настроить GitLab и подготовить процесс CI, создайте новый проект и введите параметры для авторизации в CI:

  1. На странице сервиса Compute Cloud выберите созданную ВМ и скопируйте ее публичный 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. Повторно войдите в систему с учетной записью администратора, используя новый пароль.

  9. Выберите Create a project.

  10. Задайте имя проекта: gitlab-test.

  11. Нажмите кнопку Create project.

  12. Получите OAuth-токен в сервисе Яндекс OAuth. Для этого перейдите по ссылке и нажмите Разрешить.

  13. Откройте в браузере ссылку вида http://<публичный_IP-адрес_ВМ>/root.

  14. Выберите проект gitlab-test.

  15. На открывшемся экране выберите слева вкладку Settings, а во всплывающем меню — CI/CD.

  16. В разделе Variables нажмите кнопку Expand.

  17. Создайте новую переменную:

    • В качестве имени переменной укажите YC_OAUTH.
    • В качестве значения переменной укажите полученный OAuth-токен.
    • Нажмите кнопку Save variables.
  18. В разделе Runners нажмите кнопку Expand.

  19. В разделе Set up a specific Runner automatically указан адрес сервера для подключения и токен для регистрации сервера в проекте. Используйте эти значения при регистрации Runner.

Настройте RunnerНастройте Runner

Runner — это инструмент для выполнения задач, которые создает пользователь. Runner необходимо установить на ВМ и зарегистрировать его в GitLab. Чтобы Runner мог выполнять задачи, подготовьте дополнительные компоненты — установите Yandex Cloud CLI и создайте тест для проверки созданной ВМ.

  1. Подключитесь к ВМ с GitLab по SSH:

    ssh <логин>@<публичный_IP-адрес_ВМ_с_GitLab>
    
  2. Добавьте новый репозиторий в менеджер пакетов:

    curl --location https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
    
  3. Установите Runner, который будет выполнять скрипты вашего CI:

    sudo apt-get -y install gitlab-runner
    
  4. Зарегистрируйте Runner:

    • На шаге Please enter the gitlab-ci coordinator URL укажите IP-адрес сервера GitLab.
    • На шаге Please enter the gitlab-ci token for this runner укажите токен Runner.
    • На шаге Please enter the gitlab-ci description for this runner введите описание gitlab test runner.
    • На шаге Please enter the gitlab-ci tags for this runner не вводите ничего, нажмите Enter.
    • На шаге Please enter the executor укажите shell.
    sudo gitlab-runner register
    Runtime platform                                    arch=amd64 os=linux pid=8197 revision=3afdaba6 version=11.5.0
    Running in system-mode.
    
    Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
    http://<IP-адрес_CI_GitLab>/
    Please enter the gitlab-ci token for this runner:
    <токен_Runner>
    Please enter the gitlab-ci description for this runner:
    [ci-tutorial-gitlab]: gitlab test runner
    Please enter the gitlab-ci tags for this runner (comma separated):
    
    Registering runner... succeeded                     runner=wZqzyy9s
    Please enter the executor: virtualbox, docker+machine, docker-ssh+machine, kubernetes, docker, docker-ssh, shell, ssh, parallels:
    shell
    Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
    
  5. Чтобы скрипт CI мог создавать ВМ, установите Yandex Cloud CLI:

    curl https://storage.yandexcloud.net/yandexcloud-yc/install.sh --output install.sh
    sudo bash install.sh -n -i /opt/yc
    
  6. Для проведения функционального тестирования установите пакет pytest:

    sudo apt-get install python-pytest
    
  7. Создайте файл test.py со скриптом для функционального тестирования:

    1. Откройте главную страницу репозитория gitlab-test.

    2. Нажмите кнопку + и выберите пункт New file.

    3. В открывшемся окне дайте файлу имя test.py.

    4. В тело файла скопируйте следующий код:

      # test.py
      import pytest
      import json
      import socket as s
      
      @pytest.fixture
      def hostname(request):
          with open("instance-creation.out", "r") as fd:
              fqdn = json.loads(fd.read()).get("fqdn")
      
          return fqdn
      
      @pytest.fixture
      def socket(request):
          _socket = s.socket(s.AF_INET, s.SOCK_STREAM)
          def socket_teardown():
              _socket.close()
          request.addfinalizer(socket_teardown)
          return _socket
      
      def test_server_connect(socket, hostname):
          socket.connect((hostname, 80))
          assert socket
      
    5. Напишите любое сообщение коммита и нажмите кнопку Commit changes.

Настройте CIНастройте CI

Для CI необходимо задать конфигурацию.

  1. Откройте главную страницу репозитория gitlab-test:

    http://<публичный_IP-адрес_ВМ_c_GitLab>/root/gitlab-test
    
  2. Нажмите кнопку Set up CI/CD. Откроется экран добавления нового файла.

  3. GitLab автоматически даст файлу имя .gitlab-ci.yml — не изменяйте его. Скопируйте в файл следующую конфигурацию:

    #.gitlab-ci.yml
    stages:
      - build
      - test
    
    build:
      stage: build
      variables:
        snapshot_name: test-app-snap
        folder_id: <идентификатор_каталога>
        subnet_name: <имя_подсети>
      script:
        - export instance_name="ci-tutorial-test-app-$(date +%s)"
        - export PATH="/opt/yc/bin:${PATH}"
        - yc config set token $YC_OAUTH
        - yc compute instance create
          --format json
          --name $instance_name
          --folder-id $folder_id
          --zone ru-central1-d
          --network-interface subnet-name=$subnet_name,nat-ip-version=ipv4
          --create-boot-disk name=$instance_name-boot,type=network-ssd,size=15,snapshot-name=$snapshot_name,auto-delete=true
          --memory 1
          --cores 1
          --hostname $instance_name > instance-creation.out
        - sleep 30
      artifacts:
        when: on_success
        paths:
        - instance-creation.out
        expire_in: 10 mins
    
    test_external:
      stage: test
      script:
        - py.test test.py > pytest-external.out
      artifacts:
        paths:
        - pytest-external.out
        expire_in: 1 hour
    
  4. В поле snapshot_name укажите имя снимка первой ВМ.
    В поле folder_id укажите идентификатор каталога, в котором создаются ВМ.
    В поле subnet_name укажите имя подсети, к которой будут подключаться ВМ — имя можно получить в консоли управления, открыв нужный каталог и перейдя на страницу сервиса Virtual Private Cloud.

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

Проверьте работу приложения на виртуальной машине, созданной с помощью CIПроверьте работу приложения на виртуальной машине, созданной с помощью CI

После коммита необходимо убедиться в том, что CI отработал корректно. В нужной директории должна появиться новая ВМ, на которой развернуты тестовое приложение и веб-сервер.

Чтобы проверить созданную ВМ:

  1. Откройте консоль управления Yandex Cloud.

  2. В каталоге, где создавались ВМ, выберите сервис Compute Cloud.

  3. Если все было настроено верно, в списке ВМ должна появиться новая ВМ с именем вида ci-tutorial-test-app-1543910277.

  4. Выберите созданную ВМ и скопируйте публичный IP-адрес созданной ВМ.

  5. В браузере откройте ссылку вида:

    http://<публичный_IP-адрес_созданной_ВМ>/test/?text=hello_world
    
  6. Созданное на предыдущих шагах приложение должно работать и на созданной ВМ: возвращать перевернутые слова из параметра text.

Удалите созданные ресурсыУдалите созданные ресурсы

Если вам больше не нужны ВМ и образы:

  • Удалите созданные ВМ.
  • Удалите созданные образы.

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

Предыдущая
Автоматизация сборки образов с помощью Jenkins и Packer
Следующая
Высокопроизводительные вычисления (HPC) на прерываемых ВМ
Проект Яндекса
© 2025 ООО «Яндекс.Облако»