верфа? Да, я могу отдельно сделать джобу и запускать тесты в python:alpine образе, но если у меня в werf уже есть образ бека, то логичнее использовать его. Но как это сделать?
что ты имеешь ввиду в рамках верфи?
Ну то бишь, используя образ бэка, собранный верфом, и запустить тесты на нем. Есть мысль, что можно сделать отдельную джобу, но вместо werf converge будет werf run, но не знаю, для того ли сделан werf run
у меня кстати тесты в докеркомопзе и запускаю я их через werf compose и там юзается образ собранный верфью, но я незнаю лучший ли это вариант, вероятно нет
А вопрос, werf run и werf compose, он эти контейнеры тоже в кубе запускает? Просто в доке укзаано, что у него в параметрах сть куб конфиг, хороший ли это вариант, запуск тестов в кубе делать, логичнее ведь это делать в самом гитлаб раннере
Что включает в себя запуск тестов? Исключительно запуск образа?
для werf compose нужен докерхост на сколько я понимаю и у меня для этого ранер не в кубе, а shell в виртуалке с докером и докер композом
Использование базового образа бэка, просто вместо запуска джанго сервера, будет джанго тест, разовый
Для этого будет достаточно werf run. werf compose имеет смысл если окружение поднимается рядом с запускаемым образом.
А werf run поднимается там же, где сам werf (на гитлаб раннере), или он в кубе запускает джобу?
это как вы сами решите. Если в рамках пайплайна gitlab выберете соответствующий тэг - то джоба выполнится на соответствующем раннере если нужно запустить в кубере, то werf kubectl run
ПОнял. То бишь werf run - выполнение прям здесь, а werf kube-run - в кубе?
если "прямо здесь" - на указанном раннере, то да. werf kubectl run - это запуск в кубере (аналог kubectl run)
понял, благодарю. То что нужно
А не подскажите, есть ли у верфа аналог docker exec? Либо, как-то потушить контейнер после werf run
вообще-то контейнер после выполнения завершает свою работу и верф его ремувит
А не подскажите, можно как-то сделать werf run postgres - чтобы он не завершался, зател werf run test, и после test уже закрыть оба контейнера?
"можно". создать docker-compose.yaml в нём описать postgres как сервис, а ваше приложение зависящее от него (в рамках синтаксиса docker compose). И далее через werf compose run запускать ваши тесты Всё таки оно зависит от внешнего окружения, как я и спрашивал)))
Да, сперва пытался без внешнего окружения, но не получилось. по werf compose почитал, но думал обойтись без лишнего compose-файла :D
Такое лучше через кубы, чартами. converge + dismiss
вот вы и пришли к интеграционным тестам. И тут либо создавать docker-compose или описывать тесты как набор подов запускаемых через werf kube-run. Либо отдельный чарт на такие тесты
Ну пока еще не интеграционные, но бэк написал тесты на django-pytest, и вот надо внедрить их в ci. Вот и думаю наилучший способ. Ну да, получается только композ файлом. В куб не хотелось это нести, пока куб только при деплое уже используется, а так получится, что кластер и для тестов используется, и для самого приложения. Пока выглядит слишком оверинжинирингом (но я понимаю, что сделать дополнительную джобу и деплоймент для чистой базы было бы проще, да)
если тестам нужна СУБД и/или она не встроена в экосистему выбранного языка программирования, то это уже не совсем юнит-тесты..... самое простое в данном случае - описать в docker-compose
Да, уже делаю композ, благодарю :)
Обсуждают сегодня