Образовательный проект «SnakeProject» Михаила Козлова

Навигация

⇒ FreeBSD and Nix ⇐

CISCO

Voice(Asterisk\Cisco)

Microsoft

Powershell

Python

SQL\T-SQL

Общая

WEB Разработка

ORACLE SQL \ JAVA

Мото

Стрельба, пневматика, оружие

Саморазвитие и психология


Gitlab Python CI CD простой пример


Gitlab Python CI CD простой пример

 

Преамбула

Создадим простейшее приложение на питоне
Программа будет возвращать строку "Hello World" по http
Будет происходить тест на идентичность отданной строки
Если тест удачен - происходит деплой
Автоматика на gitlab

Т.е. по факту простейший CI CD процесс


Подготовка

Предполагается:
Установлен и зарегистрирован gitlab-runner для проекта
Раннер зарегистрирован и исполняет нетегированные джобы

В противном случае - создайте раннер через:
 - Settings - CICD - Runners
 - Выключить: Enable instance runners for this project
 - New project runner - Run untagged jobs - Linux

Запуск раннера на сервере:
docker run -d --name gitlab-runner --restart always -v /srv/gitlab-runner/config:/etc/gitlab-runner -v /var/run/docker.sock:/var/run/docker.sock gitlab/gitlab-runner:alpine

Регистрация раннера (токен берете на странице создания раннера CI/CD Settings):
docker run --rm -it -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner:alpine register

Выше:
 - Указать свой URL (CI/CD Settings)
 - Ввести выдданый при создании раннера на странице токен (CI/CD Settings)
 - Имя - опционал или не менять
 - Executor - docker
 - Default docker image - docker:dind

Заменяем в конфиге /srv/gitlab-runner/config/config.toml:
volumes = ["/cache"] на volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]

Проверяем на вкладке (CI/CD Settings) - View Runners 


Файлы проекта

# cat main.py

# cat test_app.py

# cat requirements.txt

# cat Dockerfile

# cat docker-compose.yml

# cat .gitlab-ci.yml


Про тесты

Работа pytest test_app.py заключается в следующем:
Создаётся основная функция для тестирования и тестовая функция, имя которой начинается с «test».
Для запуска теста в командной строке пишется команда «pytest».
Модуль pytest обнаруживает выражение «test» и выполняет соответствующую функцию.
Затем pytest ищет команду assert внутри тестовой функции и вычисляет логическое выражение, написанное рядом с ней.
Если результат вычисления равен True, то тестовая функция проходит, если нет — терпит неудачу.
Для запуска файла test_app.py можно использовать команду pytest test_app.py.

Параметры команды pytest:
-s Позволяет печатать операторы или любой другой вывод, который обычно печатается в stdout, во время выполнения тестов.
-v Запускает модуль в полном режиме и выводит подробную информацию о пройденном тесте.

Если в файле main.py - return {"msg": "Hello World"} будет отличаться от assert response.json() == {"msg": "Hello World"}
Джоба test в пайплайне будет провалена

 

 


Комментарии пользователей

Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

Контакты Группа ВК Сборник материалов по Cisco, Asterisk, Windows Server, Python и Django, SQL и T-SQL, FreeBSD и LinuxКод обмена баннерами Видео к IT статьям на YoutubeВидео на другие темы Смотреть
Мои друзья: Советы, помощь, инструменты для сис.админа, статическая и динамическая маршрутизация, FreeBSD

© Snakeproject.ru создан в 2013 году.
При копировании материала с сайта - оставьте ссылку.
Весь материал на сайте носит ознакомительный характер,
за его использование другими людьми, автор ответственности не несет.

Рейтинг@Mail.ru
Рейтинг@Mail.ru Яндекс.Метрика





Поддержать автора и проект