This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2016-11-14
Channels
- # beginners (110)
- # boot (50)
- # cider (29)
- # cljs-dev (80)
- # cljsrn (10)
- # clojure (54)
- # clojure-italy (3)
- # clojure-korea (24)
- # clojure-russia (50)
- # clojure-spec (12)
- # clojure-taiwan (1)
- # clojure-uk (67)
- # clojurebridge (14)
- # clojurescript (118)
- # component (3)
- # cursive (11)
- # datomic (28)
- # dirac (31)
- # emacs (45)
- # flambo (2)
- # hoplon (53)
- # immutant (3)
- # jobs (5)
- # mount (8)
- # off-topic (10)
- # om (5)
- # onyx (52)
- # other-languages (2)
- # parinfer (1)
- # pedestal (1)
- # proton (39)
- # protorepl (2)
- # re-frame (22)
- # remote-jobs (1)
- # ring (13)
- # ring-swagger (2)
- # test-check (9)
- # untangled (28)
- # vim (12)
@artemyarulin а как в монорепо решается вопрос с определением где были изменения? ну т.е. у тебя 50 либ, изменили одну и надо только ее протестировать?
@andre Buck/Bazel это делают намного лучше чем другие даже 🙂 Билд( да и тест) это всегда чистая функция f([source-files]) -> [exit-code,[output-files]]
таким образом если файлы не были изменены то билд\тест занимает 0с. Если я поменяю один файл - то только те либы которые зависят от этого файла будет перебилдены. И все либы которые имеют эту либу в зависимостях будет отребилдены затем и т.д.
Т.е. весь CI скрипт у меня это buck build “//…” && buck test “//…”
где “//…”
это просто алиас который возвращает все модули в репо
@artemyarulin а как у тебя цикл разработки выглядит с монорепо? как ты запускаешь реплы, используешь ли ты IDE 😐?
@be9 Раз в 2-3 месяца когда чертов макбук виснет и приходится все перезапускать то:
1 buck run repl
- создает .repl
папку с lein проектом для всего монорепо куда с помощью symlink кладет все сорсы
2 cd .repl && lein repl
сопсно стартует репл для всего монорепо
3 Emacs cider-connect 2 раза - один для Clojure mode, другой для CLJS через фигвил
4 buck run chrome
стартует хром клиента фигфила через используя --auto-open-devtools-for-tabs --disable-web-security --user-data-dir --ignore-certificate-errors
(рекомендую - позволяет делать XHR запросы на любой хост, любое апи, дебажить или поиграть с апи прям ах)
5 buck run rn
создает новый проект RN с нужными мне нативными мудулями и подключается опять же фигвилом
Обычный ежедневный процесс
1 Если нужно попилить бек - то открываю CLJ файл, делаю чо надо, репл уже там
2 Если нужно фронт - то переключаюсь на CLJS файл, рефрешу хром чтоб фигвил начал его использовать для eval
3 Если нужно мобайл - тоже самое тока делаю рефреш в iOS симуляторе чтоб фигвил общался с этим клиентом
4 Перед комитом стоит простой хук buck test “//…”
. Бак сам найдет какие файлы я поменял и протестит все либы которые могут быть заафекчены изменениями
у меня друган спрашивает - пытается делать селениум тесты на Clojure и спрашивает можно ли как при фейле теста сделать скриншот, как нить подписаться на такой евент, мож кто делал?
я только в руби использовал - https://github.com/mattheworiordan/capybara-screenshot
stuartsierra/component есть смысл для clojurescript использовать? посмотрел по репозиториям почти никто не пользуется для фронта оным
@artemyarulin а не сталкивались с тем, что dev build в figwheel может отличаться от production build? Я частенько сталкиваюсь с тем, что в figwheel всё работает, а после uberjar уже нет. Т.о. приходится перед коммитом каждой стори проверять с полным ребилдом без figwheel-а.
@rkosenko Эм, ну у меня тесты гоняются через lein test | lein doo phantom debug once
там фигвила уже нету
или ты про что-то другое?
эм, вроде не - он с чистого листа начинает каждый раз
ну вот тут как раз возникает желание разбить на модули репу и билдить не всё... Бо скомпилить всё у нас занимает ни одну минуту.
ага, в этом и преимущество когда куча мелких модулей + они могут тестироваться параллельно же
я помню положил Jenkins как-то на работе когда кложуру обновил до 1.8 и у меня все 50 модулей начали билдится одновременно (buck берет кол-во CPU * 1.5 для расчета одновременных жобов, а там был сервак с 32 CPU шоле), все легло и ушло в ребут 🙂
ну и опять же - билдить все в терминах buck это сбилдить только то что было зафекчено изменениями, остальное взять из кеша
@artemyarulin евентов в селениуме нет. но можно обернуть тесты в свой макрос который будет дергать https://github.com/semperos/clj-webdriver/wiki/Taxi-API-Documentation#take-screenshot при фейле
@seryh ага, спасибо, передам
@artemyarulin а версионирование с монорепо просто, когда куча разработчиков пилятновые в модулях фичи?
@andmed нету их ага, все всегда последнее
релизы есть куда без них то, но это уже по большой части для конечных продуктов
если продукт это либа - то точно так-же релизишь и их куда-нить во внешний мир, но внутри в монорепо все всегда последнее ага
ну или если очень breaking changes то можно сделать еще одну либу с новым названием рядом (что в принципе тоже имеет смысл если прям все-все поломалось то наверно и название другое)
о зацените опять про Elm http://elm-lang.org/blog/the-perfect-bug-report
зачетное видео и идея сама здравая
я это увидел на конфе по елму, и реализовал https://github.com/flexsurfer/re-frisk в отдельном окне браузера, хотел прикрутить тайм тревел, но свободное время пропало. не успел , но в планах
сделать это будет не сложно, т.к. у re-frame уже есть механизм, нужно просто добавить его в UI re-frisk
помню помню ты это делал, не знал что идея та же, ну круто
там же вроде немного другое
я на самом деле всколзь прочитал)
там типа можно как то выгружать историю
ну это все доп фичи которые не сложно сделать если управление стейтом идет явное, т.е. хоть ом, хоть что
как мне кажется
но тока в элме из коробки всеж)
Тут еще в одном слаке тоже зашел разговор про монорепо, и ребята из Гугла говорят, что монорепо кул, но гит не может в нее, если размер сорцов за гиг перешагнул) И пользуются svn и p4. В Яндексе кстати тоже SVN)
Вроде как допиленный p4