Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
Рецепт приготовления
облачных тестингов
Артем Ерошенко
Немного истории
Железный тестинг
512 мб
2 ядра
нет sudo
автотестов росло
Количество
Увеличить мощность
2024 мб
4 ядра
Растет количество
компонент
В комнате стало тесно
Растет количество
релизов
Проблемы железа
Облачные платформы
Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»
Когда это нужно?
Когда это нужно?
очереди на тестирование
Когда это нужно?
очереди на тестирование
зависимость тестингов
Рецепт приготовления
Ингредиенты
docker
ansible
jenkins
Артём Ерошенко «Рецепт приготовления облачных тестингов»
Что такое 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 контейнер
myservice
backend
container
Docker контейнер
myservice
backend
container
mysql
container
Docker контейнер
myservice
backend
container
mysql
container
myservice
frontend
container
Docker контейнер
Основные принципы
Основные принципы
Изолированность
Основные принципы
Изолированность
1 контейнер - 1 процесс
Ингредиенты
docker
ansible
jenkins
Артём Ерошенко «Рецепт приготовления облачных тестингов»
Зачем нужен?
Настроить окружение
mysql
nginx
service
Устанавливаем пакеты
ssh username@server.com
Устанавливаем пакеты
ssh username@server.com
apt-get install mysql-server
Устанавливаем пакеты
ssh username@server.com
apt-get install mysql-server
apt-get install nginx
Устанавливаем пакеты
ssh username@server.com
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 файлов
Ингредиенты
docker
ansible
jenkins
Артём Ерошенко «Рецепт приготовления облачных тестингов»
Ингредиенты
docker
ansible
jenkins
Рецепт приготовления
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
Рецепт
коронного
блюда
Вопросы?
Aртем Ерошенко
eroshenkoam@me.com

More Related Content

Артём Ерошенко «Рецепт приготовления облачных тестингов»