@spbpython

Страница 210 из 785
Serge
22.11.2016
17:30:56
и интеграционное тестирование

Andrey
22.11.2016
17:31:37
это только пока у тебя одна деплойная сущность. если у тебя в один контейнер ставятся два разных пакета, то у них могут быть разные requirements, которые могут конфликтовать

Google
Serge
22.11.2016
17:32:04
интеграция после установки двух пакетов

значит у тебя есть репа для этого Dockerfile и там есть requirements.txt

Andrey
22.11.2016
17:32:41
почему? ты собрал утиль месяц назад, там получился один requirements.txt. собрал пакет с демоном сегодня, и там другие версии

Serge
22.11.2016
17:32:56
мы согласились, что пакеты устанавливаемые по зависимостям должны иметь setup.py

также мы согласислись, что надо закреплять версии при конечной интеграции

я утверждаю, что автоматически закреплять версии всего в setup.py неудобно, для этого лучше подходит requirements.txt

при этом такое решение никак не зависит от наличия у тебя какой-либо специальной инфраструктуры и воспроизводимо хоть на локальной машине, хоть в докере, хоть прямо в проде

вспомним про requirements.in. это и правда прямая альтернатива setup.py на мой взгляд

пакеты устанавливаемые по зависимостям должны иметь setup.py

Andrey
22.11.2016
17:34:43
сколько у тебя будет requirements.txt, если ты устанавливаешь на одну машину десять твоих пакетов?

Google
Serge
22.11.2016
17:35:16
один venv - одна сборка - один процесс

Andrey
22.11.2016
17:35:59
я правильно понимаю, что у девяти из этих десяти пакетов дожен быть setup.py?

Serge
22.11.2016
17:36:09
или у всех 10 тогда уж

зависит от того в какой репе у тебя интеграция происходит: в отдельной или в некой репе приложения

Andrey
22.11.2016
17:36:59
репы вообще не важны. это просто хранилища кода

Serge
22.11.2016
17:37:15
Andrey
22.11.2016
17:37:20
нет

Serge
22.11.2016
17:37:27
можно в папочки пихать, но это не верно

потому что каждая репа имеет схему версионирования и ветки по версиям и т.п.

и каждая точка интеграции должна отдельно версионироваться

Andrey
22.11.2016
17:40:06
ты в курсе, что для версионирования не только git tag существует? можно версионироваться без привязки к vcs

Andrey
22.11.2016
17:40:40
это пока у тебя нет десятков пакетов

Serge
22.11.2016
17:40:52
это пока у тебя нет десятков пакетов
тем более, когда у тебя 10 пакетов

дебианщики вон специально инфраструктуру сборки пакетов из гитовых реп завели

каждая репа - src пакет

странно не пользовать Version Control System, когда она есть

а дальше у тебя вся инфра умеет git и его ветки/теги и делать пайплайны по ним

Andrey
22.11.2016
17:42:50
http://highscalability.com/blog/2016/10/12/lessons-learned-from-scaling-uber-to-2000-engineers-1000-ser.html

Google
Serge
22.11.2016
17:44:55
http://highscalability.com/blog/2016/10/12/lessons-learned-from-scaling-uber-to-2000-engineers-1000-ser.html
ну и что там? 8000 репов, потому что не было политики управления ими?

давайте лучше посмотрим вот сюда https://plus.google.com/u/0/110308154931599002929/posts/4WLcSaQZHiW?sfc=true

какая же красота:)

Chikiro
22.11.2016
18:07:00
Можно в setup.py парсить requirements.txt. И все будут довольны :)

Zart
22.11.2016
18:11:01
Можно в setup.py парсить requirements.txt. И все будут довольны :)
так делают только мудаки, как говорил Тёма

Serge
22.11.2016
18:12:09
так делают только мудаки, как говорил Тёма
Да не, это путь, но только это не нужно, потому что как раз путает причину со следствием

Zart
22.11.2016
18:15:25
"requirements.txt - это костыль со времен, когда не было setuptools, а был коробочный distutil, который как раз не умеет в зависимости. В прочем, он так до сих пор в них и не научился. Setuptools эту проблему порешали и requirements с ним не нужен, кроме разве что специфичных ситуаций." какой-то бред полный в плане истории

Andrey
22.11.2016
18:15:41
ну и что там? 8000 репов, потому что не было политики управления ими?
там много про то, что куча микросервисов в куче реп у кучи команд это боль

Serge
22.11.2016
18:16:30
там много про то, что куча микросервисов в куче реп у кучи команд это боль
Ну, так это недостаток слоя абстракции. И да, когда у тебя много кода, у тебя много кода:)

Andrey
22.11.2016
18:17:10
какой абстракции? отзумимся подальше, у нас крутая компания на миллиард?

Serge
22.11.2016
18:18:04
какой абстракции? отзумимся подальше, у нас крутая компания на миллиард?
Да какая разница. В рамках одного сервиса всё ок. Отзумься до всего опенсорс. Вот тебе модель организации

Andrey
22.11.2016
18:18:12
а кстати, как ты деплоишься, когда у тебя есть два микросервиса, и ты хочешь поменять протокол общения между ними?

Andrey
22.11.2016
18:18:42
с даунтаймом?

Serge
22.11.2016
18:19:19
У меня есть красивые rolling updates 7 шаговые миграции базки и поддержка совместимости разных версий протокола разными способами

Как раз вчера закончили тестирование полного Zero Downtime Deployment

Andrey
22.11.2016
18:20:03
а совместимость со старыми версиями, которых больше нет потом отпиливаешь?

Serge
22.11.2016
18:20:28
а совместимость со старыми версиями, которых больше нет потом отпиливаешь?
Ну там по-разному. От способа совместимости зависит

Чаще всего да, есть просто previous version support, который вываливается, когда появляется next

Хуже, когда больше двух-трех версий приложения в поддержке/разработке одновременно

Google
Serge
22.11.2016
18:23:00
Всё всегда по обстоятельствам и необходимости же. Универсального способа нет.

Overengineering - это зло, которое надо пресекать в зародыше

Chikiro
22.11.2016
18:27:13
celery из файлов читает в setup https://github.com/celery/celery/blob/master/setup.py

Zart
22.11.2016
18:30:25
видно что автор не умеет в сетаптулз еще и в маркеры не умеет, судя по jython.txt

open( os.path.join(os.getcwd(), 'requirements', *f) зачем там os.getcwd? зачем там вообще самопальный и кривой парсер req.txt файлов?

sys.exit(_pytest.main(self.pytest_args)) - а такое я вообще люто ненавижу, потому что это ломает пайплайн напрочь

Chikiro
22.11.2016
18:34:52
Где взять нормальный пример setup.py. В sentry, например, тесты вынесены в extras_require https://github.com/getsentry/sentry/blob/master/setup.py Нормальная это практика или нет?

Zart
22.11.2016
18:37:18
увы, насколько я помню, tests_require запилили достаточно поздно и приличное количество пакетов начало использовать экстры для задания зависимостей для тестов, но при этом единого стандарта нет - test, tests, testing

"нормальный пример", гм. львиная доля zope использовала единый подход с довольно хорошим паттерном

Admin
ERROR: S client not available

Zart
22.11.2016
19:18:45
дока к сетаптулзам давным-давно на изи пике была, а теперь и на всяких ридзедоксах

Serge
22.11.2016
19:19:30
Там по коду легче в 1000 раз понять что для чего и как работает

Zart
22.11.2016
19:20:36
Они же вроде забили и с plone вместе пошли мимо pypi, кажется
щито? они наоборот выложили тонны своего кода, от чего быстро перегрузили его 8)

Serge
22.11.2016
19:21:04
Ну и они выпили генератор setup.py. А генератор req есть:)

Zart
22.11.2016
19:21:11
я читал её. и читал исходники и дистутилсов и сетаптулзов и пкг_ресурсов. вот нифига, докой там как раз проще

Serge
22.11.2016
19:21:33
Google
Zart
22.11.2016
19:21:56
что плон?

Serge
22.11.2016
19:22:21
Мимо pypi несет куски, плагины

Zart
22.11.2016
19:22:23
у плон свои зеркала индексов вроде

я её слишком недолго колупал, чтобы точнее сказать

Serge
22.11.2016
19:23:18
Вот эти, которые на PiterPy были

Zart
22.11.2016
19:23:48
генератор сетапа... ммм. тот же пастер содержал готовые шаблоны

минимальный сетап в целом состоит на 90% из метадаты которую девелопер вручную заполнять должен - название, версия, автор, описание, кейворды, классификатор

оставшееся - packages=find_packages(), да еще чуток инфы сверху

Serge
22.11.2016
19:31:56
Ну, вот в distribute было генератор на readline

По вопросам. Это вообще нормальная практика

Eugene
23.11.2016
09:59:56
Документация setuptools на самом деле говно

Собственно distutils тоже

Zart
23.11.2016
10:01:15
доку по дистутилс в стандартной доке уже почти выпилили 8\

поставили заглушку, которая ссылается на убогий пакаджинг гайд

Eugene
23.11.2016
10:02:07
Вообще смотреть на всю эту боль с distutils, distutils2, distribute, setuptools, distribute + setuptools, wheels.... они когда-нибцдь родят?

Zart
23.11.2016
10:02:45
д2 был мертворождённым. дистрибут уже анфоркнули

колёса - новые яйца, только сделанные через задницу

Eugene
23.11.2016
10:04:37
д2 был мертворождённым. дистрибут уже анфоркнули
В этом и суть. Все видят и понимают, что всё плохо, но хорошо сделать пока не очень получается

Roman
23.11.2016
10:05:37
О, прикольно, что можно в сишном расширении плодить треды и скидывать cpu bound туда

Zart
23.11.2016
10:05:40
а где хорошо?

нодовый нпм то еще говно

цпан?

Eugene
23.11.2016
10:07:14
В java? :)) вообще нигде не хорошо. Все эти devops не от хорошей жизни появляются

Страница 210 из 785