Вот честное слово - зла не хватает. Скиллбокс преподает курс, читают лекции, а код из лекций повторить нельзя, ибо санкции и создать ПОДТВЕРЖДЕННЫЙ аккаунт на Гитлаб - тот еще @@!"№;%:?:*()!!!
С недавних пользуюсь сервисом gitverse от сбера, для хранения своего кода, мало ли что - потом замучаешься пыль глотать, когда закроют доступ пользователям с российскими ip-адресами. Гитлаб уже частично это сделал. Подтверждение аккаунта не работает в нашей стране и с нашими банковскими картами. Но gitverse, платформа молодая и CI/CD там работает через одно место. Я не смог запустить тоже самое что будет в этой статье.
Итак, у нас есть один единственный python-файл и один тест, которые выглядят вот так:
Хотел сейчас зайти в свой аккаунт на GitHub и не смог, там настроена двух факторная аутентификация, я не могу подтвердить свой аккаунт кодом из смс - телефон то рабочий, и домой я его не ношу. Придется создавать новый аккаунт.
Ну вот, не прошло и получаса как я смог восстановить пароль от почты vk и создать аккаунт на гитхаб. Начнем с создания нового репозитория:
Сразу же сгенерил новый ключ командой: ssh-keygen -t rsa -b 4096 -C "for githubkey" -f .ssh/github_vk и вставил его в новый аккаунт. Свежесозданный репозиторий клонировал в Pycharm. Хотя, по идее можно было и прямо в браузере все сделать... Ибо кода тут немного.
Сразу скопировал .gitignore
Ну и поехали, вот код который будет проверяться нашим тестом:
Теперь напишем тест:
После чего установил pytest и проверил как он тестирует функцию сложения:
Все шикарно, всё работает. Теперь нужно это дело завязать на гитхаб, чтобы после того как туда зальются изменения кода они тут же протестировались. Но в реализации домашней работы там надо чтобы тесты и линтеры запускались после merge_request (в гитхабе он кажется обзывается pull_request).
Пишем скрипт, который будет запускать эти тесты уже на гитхабе. Для этого создаем директорию .github, в которой еще одну - workflows в которой нужно создать файл (имя не имеет значения) с расширением yaml или yml
И теперь, по-идее, после коммита, должен запуститься тест и выполниться непосредственно на гитхабе. Коммитим, пушим и смотрим:
Случилась неприятность, чот мой ssh ключ не сработал... и запушить не получилось:
Пересоздал ключ, только уже безвсяких параметров: ssh-keygen -t rsa
Программа перезаписала существующий id_rsa.pub и приватный ключи, после чего публичный ключ прописал в:
После чего весь мой код успешно запушился и оказался на гитхабе:
А что там стестами спросите вы?! А сейчас посмотрю, тыкаем в кнопочку "Actions"
Как видим, что-то пошло не так!
Открываем ошибку и видим - ну конечно!!! Я же забыл про requirements.txt, для выполнения теста тут достаточно только pytest, так и запишу в файл requirements.txt
Файл с зависимостью создан, снова пушим и смотрим что изменилось:
Второй коммит в очереди...
Выполнено!!!
Ну и что происходило "под капотом":
Ну а теперь дело за малым:
- Перенесите код задания по FastAPI в новый репозиторий.
- Настройте для этого репозитория gitlab-ci c линтерами и тестами.
- Исправьте все ошибки от линтеров в коде.
Продолжение, так сказать, следует...