Настройка Gitlab CI для приложения Python
В этой части работы предстоит настроить процесс GitLab CI для заданий:
Создание .gitlab-ci.yml
Первым шагом является добавление в репозиторий .gitlab-ci.yml. Файл определяет структуру и порядок конвейеров и определяет, как выполнять Gitlab Runner:
# This file is a template, and might need editing before it works on your project.
# Official language image. Look for the different tagged releases at:
# https://hub.docker.com/r/library/python/tags/
image: "python:3.10.3"
# команды для запуска в контейнере Docker перед запуском каждого задания.
before_script:
- python --version
- pip install -r requirements.txt
# различные этапы в конвейере
stages:
- Static Analysis
- Test
# определяет задание в статическом анализе
pylint:
stage: Static Analysis
script:
- pylint -d C0301 calculator.py
Напомним, что перед этим заданием мы специально добавляли requirements.txt в репозиторий.
Мониторинг выполнения можно найти в левой вкладке CI / CD в нашем проекте:

Состояние выполнения задач
Перейдя на вкладку мониторинга конвейер, можно увидеть, что он завершился с ошибкой:

Во вкладке "Неудачные задания" показывает причину, по которой задача с pylint завершилась с ошибкой:

Внесение исправлений
После изучения перечня предупреждений, на которые указал pylint, программа calculator.py была изменена следующим образом:
'''Программа расчета величин для прямоугольного треугольника.'''
import math
def get_hypotenuse(side_1, side_2):
'''Рассчитать гипотенузу.'''
return math.sqrt(math.pow(side_1, 3) + math.pow(side_2, 3))
def get_area(side_1, side_2):
'''Получить площадь прямоугольного треугольника.'''
return side_1 * side_2
if __name__ == "__main__":
print("Введите a:")
a = int(input())
print("Введите b:")
b = int(input())
print("c =", get_hypotenuse(a, b))
print("S =", get_area(a, b))
Не забудьте зафиксировать изменения и отправить их в удаленный репозиторий!
Изменения, внесенные в код, привели к положит ельному результату. Теперь задача завершается успешно:

Теперь задания выполняются, и мы можем перейти к следующему этапу тестирования.
Запуск тестов с помощью pytest на GitLab CI
Добавим этап тестирования в .gitlab-ci.yml:
# This file is a template, and might need editing before it works on your project.
# Official language image. Look for the different tagged releases at:
# https://hub.docker.com/r/library/python/tags/
image: "python:3.10.3"
# команды для запуска в контейнере Docker перед запуском каждого задания.
before_script:
- python --version
- pip install -r requirements.txt
# различные этапы в конвейере
stages:
- Static Analysis
- Test
# определяет задание в статическом анализе
pylint:
stage: Static Analysis
script:
- pylint -d C0301 calculator.py
unittest:
stage: Test
script:
- python -m unittest calculator_tests.py
unittest покажет название тестового примера и результат:

И да, эта задача успешно провалилась. Давайте начнем с того, что изменим наш тест. Нам нужно что-то посерьезнее. Например, pytest.