- Подготовьте к работе GitLab по инструкции.
- Создайте свой новый проект.
- Создайте новый репозиторий в GitLab, наполните его файлами.
- Проект должен быть публичным, остальные настройки по желанию.
В репозитории содержится код проекта на Python. Проект — RESTful API сервис. Ваша задача — автоматизировать сборку образа с выполнением python-скрипта:
- Образ собирается на основе centos:7.
- Python версии не ниже 3.7.
- Установлены зависимости: flask flask-jsonpify flask-restful.
- Создана директория /python_api.
- Скрипт из репозитория размещён в /python_api.
- Точка вызова: запуск скрипта.
- При комите в любую ветку должен собираться docker image с форматом имени hello:gitlab-$CI_COMMIT_SHORT_SHA . Образ должен быть выложен в Gitlab registry или yandex registry.
-
- (задание необязательное к выполению) При комите в ветку master после сборки должен подняться pod в kubernetes. Примерный pipeline для push в kubernetes по ссылке. Если вы еще не знакомы с k8s - автоматизируйте сборку и деплой приложения в docker на виртуальной машине.
Вашему проекту нужна бизнесовая доработка: нужно поменять JSON ответа на вызов метода GET /rest/api/get_info, необходимо создать Issue в котором указать:
- Какой метод необходимо исправить.
- Текст с { "message": "Already started" } на { "message": "Running"}.
- Issue поставить label: feature.
Пришёл новый Issue на доработку, вам нужно:
- Создать отдельную ветку, связанную с этим Issue.
- Внести изменения по тексту из задания.
- Подготовить Merge Request, влить необходимые изменения в master, проверить, что сборка прошла успешно.
Разработчики выполнили новый Issue, необходимо проверить валидность изменений:
- Поднять докер-контейнер с образом python-api:latest и проверить возврат метода на корректность.
- Закрыть Issue с комментарием об успешности прохождения, указав желаемый результат и фактически достигнутый.
В качестве ответа пришлите подробные скриншоты по каждому пункту задания:
- файл gitlab-ci.yml;
- Dockerfile;
- лог успешного выполнения пайплайна;
- решённый Issue.
Необязательная часть Автомазируйте работу тестировщика — пусть у вас будет отдельный конвейер, который автоматически поднимает контейнер в docker или k8s и выполняет проверку, например, при помощи curl. На основе вывода будет приниматься решение об успешности прохождения тестирования.