Upload
wriketechclub
View
15.234
Download
9
Embed Size (px)
Citation preview
Рецепт приготовления облачных тестингов
Артем Ерошенко
Немного истории
Железный тестинг
512 мб
2 ядра
нет sudo
автотестов росло
Количество
Увеличить мощность
2024 мб
4 ядра
Растет количество
компонент
В комнате стало тесно
Растет количество
релизов
Проблемы железа
Облачные платформы
Когда это нужно?
Когда это нужно?
очереди на тестирование
Когда это нужно?
очереди на тестирование
зависимость тестингов
Рецепт приготовления
Ингредиенты
dockeransiblejenkins
Что такое docker?
Что такое docker?
инструмент, предоставляющий удобный интерфейс для
работы с LXC (LinuX Container)
Так что же это такое?
инструмент виртуализации на основе ядра Linux
Так что же это такое?
Какую задачу решает?
Настройка окружения
docker run -it ubuntu /bin/bash
Запускаем контейнер
apt-get install mysql-server-5.5
Устанавливаем mysql
Усиленно работаем :)
Стоп контейнер
docker stop <container-name>
Удаляем контейнер
docker rm <container-name>
Когда это полезно?
Разные версии
языка разработки
Разные версии
внешних сервисов
Разные версии
окружения
Основные сущности
Docker образ
hub.docker.com
myservice образ
Docker контейнер
docker run -it <image> /bin/bash
Docker контейнер
myservicebackendcontainer
Docker контейнер
myservicebackendcontainer
mysqlcontainer
Docker контейнер
myservicebackendcontainer
mysqlcontainer
myservicefrontendcontainer
Docker контейнер
Основные принципы
Основные принципы
Изолированность
Основные принципы
Изолированность1 контейнер - 1 процесс
Ингредиенты
dockeransiblejenkins
Зачем нужен?
Настроить окружение
mysql
nginx
service
Устанавливаем пакеты
Устанавливаем пакеты
apt-get install mysql-server
apt-get install nginx
apt-get install server
Конфигурируем
vi /etc/mysql/my.conf
Конфигурируем
vi /etc/mysql/my.conf
vi /etc/nginx/nginx.conf
Конфигурируем
vi /etc/mysql/my.conf
vi /etc/nginx/nginx.conf
vi /etc/server/server.conf
Результат
mysql
nginx
service
Настрой еще одну?
Пишем скрипт
install.sh
install.bat
install.sh
Пишем скрипт
install.bat
install.sh
install2.sh
Пишем скрипт
Скрипты это неудобно
Система управленияконфигурациями
конфигурация вместо кода
Ansible
описывает желаемое состояние системы
Ansible
Ansible
Преимущества
легко читается
не зависит от платформы
легче переиспользовать
Ansible playbook
Ansible playbook
это набор yaml файлов
Ингредиенты
dockeransiblejenkins
Ингредиенты
dockeransiblejenkins
Рецепт приготовления
backend
Несколько
компонент
backend mysql
Несколько
компонент
backend mysqlfrontend
Несколько
компонент
Где размещаем?
Кто запускает?
Как собираем?
Где размещаем?
Кто запускает?
Как собираем?
Жизненный цикл
одной компоненты
Жизненный цикл
build
clean
start
stop
одной компоненты
Жизненный цикл
одной компоненты
build
clean
start
stop
Build
docker build -t «component»
Жизненный цикл
одной компоненты
build
clean
start
stop
Start
docker run -it «component» bash
Жизненный цикл
одной компоненты
build
clean
start
stop
Stop
docker stop «component»
Жизненный цикл
одной компоненты
build
clean
start
stop
Clean
docker rm «component»
Как организовать
совместную работу?
build
clean
start
stop
Жизненный цикл
всех компонент
Build.yml
генерация конфигов
Build.yml
генерация конфигов
сборка docker образов
Start.yml
создание баз данных
Start.yml
создание баз данных
накатка тестовых данных
Start.yml
запуск docker контейнеров
накатка тестовых данных
создание баз данных
Stop.yml
остановка docker контейнеров
Stop.yml
остановка docker контейнеров
удаление баз данных
Clean.yml
удаление docker образов
работает локально
что получили?
работает локально
чистое окружение
что получили?
работает локально
изолированность
чистое окружение
что получили?
Где размещаем?
Кто запускает?
Ansible + Docker
Где размещаем?
Кто запускает?
Ansible + Docker
Железные машинки
Облачные платформы
build
clean
start
stop
Ansible playbook
build
clean
start
stop
Ansible playbook
init
Init.yml
установка docker
установка библиотек
Получили тестинг по требованию
Облачный тестинг
создаем виртуалку
выполняем ansible
Кто запускает?
Ansible + Docker
Digitalocean
Кто запускает?
Ansible + Docker
Digitalocean
Сконфигурировать
джобы
Запуск автотестов
на входверсии
компонент
создает виртуалку
создает виртуалкувыкачивает playbook
создает виртуалкувыкачивает playbookустанавливает docker
создает виртуалкувыкачивает playbookустанавливает dockerподнимает тестинг
создает виртуалкувыкачивает playbookустанавливает dockerподнимает тестингзапускает автотесты
создает виртуалкувыкачивает playbookустанавливает dockerподнимает тестингзапускает автотестыстопает тестинг
создает виртуалкувыкачивает playbookустанавливает dockerподнимает тестингзапускает автотестыстопает тестинг
удаляет виртуалку
Аренда тестинга
на входверсии
компоненти время
Jenkins
Ansible + Docker
Digitalocean
Рецепт коронногоблюда