DevOps инженер для настройки CI/CD
В рамках развития крупнейшего интернет-проекта в своей тематике требуется настроить Continuous Integration / Continuous Delivery решение и отработать workflow для программистов по тестированию и релизу нового функционала.
Текущая конфигурация: один физический сервер Hetzner Dell R730 DX151 на OpenVZ, 4 Тб данных, посещаемость более 1 млн посетителей в месяц.
Команда: руководитель разработки, 2 программиста, верстальщик, тестировщик. Ведём задачи в JIRA, код на github.
Требуется придумать удобный для нас workflow и реализовать.
Обязанности:
- Спроектировать CI/CD решение и workflow для программистов совместно с руководителем разработки;
- Подобрать используемые технологии. Вероятно что-то из: Docker, Docker Data Center, AWS/Heroku, Travis CI / CodeShip, SauceLabs.
- Рассчитать наиболее выгодное решение: чтобы не переплачивать лишнего за облачные сервисы, но при этом и не реализовывать своими силами кучу велосипедов;
- Реализовать workflow в рамках выбранных технологий.
Требования:
- Большой опыт в серверном администрировании linux-систем и использовании технологий виртуализации и облачных сервисов виртуализации.
Условия:
- Удалённая работа. Желательно возможность встретиться в Москве и обсуждать схему работы.
- Работа проектая - т.е. требуется один раз спроектировать, реализовать, отладить и возможно сопровождать.
- Требования к workflow:
- Создание автоматического pull-request на github при изменении статуса задачи JIRA;
- Проведение Code Review на github;
- Уведомление тестировщика о необходимости начать работу над задачей по завершению CodeReview;
- Возможность у тестировщика локально иметь на каждую ветку git отдельную виртуалку/docker-среду либо работа в облаке
- Тестировщик будет дописывать код тестов для каждой ветки
- Возможность для руководителя увидеть каждую ветку по отдельному URL-адресу в интернете (на отдельном поддомене)
- Запуск приёмочных Selenium тестов перед релизом (вероятно через Sauce Labs). Возможность смотреть отчёты по тесту: как прошёл тест и code coverage.
- Для программистов: возможность через какой-либо веб-интерфейс или при помощи специальных названий веток в git выложить свой релиз в продакшн своими силами, не имея доступа к SSH.
- Штатная возможность после релиза откатиться на предыдущий релиз.