
Evgeny
31.07.2016
19:00:27
нет
Нахера его собирать 2 часа?

Vladimir
31.07.2016
19:00:54
потому что он большой и собирается 2 часа?
использование кэша приводит к тому, что рузльтат билда нельзя воспроизвести из искходиков

Google

Vladimir
31.07.2016
19:02:10
если вы готовы с этим мириться - то ок

Evgeny
31.07.2016
19:02:34
Штааааа?

Vladimir
31.07.2016
19:02:57
результат билда зависит от состояния кэша

Denis
31.07.2016
19:03:12
...This means that every time a build is triggered, either manually or by a new Git commit, a fresh Git clone of the application’s repository occurs. When this happens the mtime of all the cloned files are set to the time of when the clone occurred (including our application’s package.json)...

Evgeny
31.07.2016
19:03:16
Кеш дает возможность не делать одинаковые действия если из нее надо делать
Мтайм не важен

Vladimir
31.07.2016
19:03:39
В моей практике куча проблема сборки магически решалась при полном билде с нуля

Evgeny
31.07.2016
19:03:59
Магии там никогда нет

Vladimir
31.07.2016
19:04:14
магии вообще нет - есть необъяснимое и малопонятное поведение
которое решается гарантировано сборко с нуля

Evgeny
31.07.2016
19:04:41
В моей практике вся эта магия всегда объяснима и подсказывает проблему
Которую надо решить один раз и дальше экономить время

Google

Evgeny
31.07.2016
19:05:32
Решение "хрен его знает что происходит" для своего проекта - моветон

Vladimir
31.07.2016
19:05:58
причем здесь "свой проект". речь о тулченах и проблемах, которые испытвают всю
я правда в первую очередь с таким сталкивался в мобильной разработке
особенно в икскоде
и в андроиде с ndk
просто иногда не пересобирается то, что должно пересобраться

Andrey
31.07.2016
19:07:45

Evgeny
31.07.2016
19:09:18
Согласен, извините за наезды

Vladimir
31.07.2016
19:10:41
просто старая проблема, а решения все кривые и приводят к куче потраченного времени

Evgeny
31.07.2016
19:24:54
Но в вебе сейчас не так. Кеш сборки докера реально решает

Denis
31.07.2016
19:25:26

Vladimir
31.07.2016
19:25:41
ну по логике - откуда докер может знать, что npm install зависит от package.json?

Evgeny
31.07.2016
19:25:51
А он и не должен
Ты ему говоришь

Vladimir
31.07.2016
19:26:05
каким образом?

Evgeny
31.07.2016
19:26:10

Vladimir
31.07.2016
19:26:29
ну, конкретнее)

Evgeny
31.07.2016
19:31:12
Сначала копируешь пакадж, потом делаешь npm i

Google

Evgeny
31.07.2016
19:31:40
И докер выполняет инсталл только если поменялся пакадж

Vladimir
31.07.2016
19:41:04
ну это же неправильно. Что если я хочу последнии версии пакетов

Evgeny
31.07.2016
20:14:40
Правильно. Хочешь последние версии пакетов - меняешь пакадж. Или ты не фиксируешь версии? Рекомендую начать

Vladimir
31.07.2016
20:24:12
это частный случай, я говорю про то что докер много на себя берет

Evgeny
31.07.2016
20:26:23
Например еще когда?

Vladimir
31.07.2016
20:27:24
допустим я кулом выкачиваю что то из интернета
курлом
и хочу что всегда была последняя версия

Evgeny
31.07.2016
20:30:11
Это значит - что-то делается не так

Vladimir
31.07.2016
20:31:42
ну если докер просто кэширует в такой ситуации - то он не прав

Evgeny
31.07.2016
20:32:08
Почему?

Vladimir
31.07.2016
20:32:34
чтобы кэшировать, нужно иметь хоть какие то основания полагать, что релузьтат не изменился

Evgeny
31.07.2016
20:33:18
Есть описанные правила кеширования. Там указано - либо команда либо состав файлы

Vladimir
31.07.2016
20:35:28
в общем ясно, докер исходит из того что результат зависит от файлов в последнем ADD
примерно как make
но в make есть phony, в Dockerfile видимо нет такого

Evgeny
31.07.2016
20:41:33
Докер каждый раз ориентируется на команду. Если она не менялась - берем кеш. Если менялась - ее и все дальше инвалидируем

Vladimir
31.07.2016
20:42:33
https://github.com/docker/docker/issues/1996

Evgeny
31.07.2016
20:43:18
Можно явно передать рандом

Denis
31.07.2016
20:46:56
Сегодня ребята из Cloudflare посоветовали выделить node_modules в отдельный image

Google

Denis
31.07.2016
20:47:24
приехали

Evgeny
31.07.2016
20:47:58
Иногда допустимо

Алексей
31.07.2016
20:48:29
так.. в плане идеи генерации - можно node_module версионировать ( тупо убрать из .gitignore )

Denis
31.07.2016
20:50:21
ох

Vladimir
31.07.2016
20:51:33
это сработает, но явно сделает жизнь сложнее
я про отдельный image
node_modules в гите - норм

Evgeny
31.07.2016
20:52:37
Нодмодули в отдельном имадже нужны для ускорения сборки и уменьшении трафика
В гит их, имхо, моветон

Admin
ERROR: S client not available

Vladimir
31.07.2016
20:53:09
почему? наоборот, просто и надежно

Evgeny
31.07.2016
20:53:10
Имхо лучше делать слой пресборки

Vladimir
31.07.2016
20:53:19
есть только проблема с бинарниками
их таки все равно нужно пересобирать

Алексей
31.07.2016
20:53:44

Evgeny
31.07.2016
20:54:17

Vladimir
31.07.2016
20:54:42
ну если dev и prod на одной os и архитектуре - то не нужно

Evgeny
31.07.2016
20:54:47

Vladimir
31.07.2016
20:56:16
ну npm install делает дев, на дев машине

Google

Vladimir
31.07.2016
20:56:30
и в гит кладет бинарники
это плохо - в остальном норм

Denis
31.07.2016
21:00:00

Vladimir
31.07.2016
21:00:24
для ci?

Evgeny
31.07.2016
21:00:42

Vladimir
31.07.2016
21:01:04
я говорю про node_modules в гите

Evgeny
31.07.2016
21:02:39
И опять плохо - а сасс например? Он ж зависит от архитектуры

Vladimir
31.07.2016
21:03:30
я и говорю, это единственная проблема
при билде нужно собирать нативные модули

Denis
31.07.2016
21:04:42

Evgeny
31.07.2016
21:05:33
Злоо

Artur
31.07.2016
21:31:40
А чего билд зависимостей не собирать в buildDependencies?
Уж всяко лучше, чем в гит кидать

Denis
31.07.2016
21:40:35
Это что?)

Дмитрий
31.07.2016
21:45:15

Artur
31.07.2016
21:47:12
Это то, что попадает в пакет когда он пакуется перед публикацией в реестре.
Но можно в принципе не публиковать, а собирать отдельный тар.
Получится такой пакет-пакетов, как у всех на кухнях есть)

Дмитрий
31.07.2016
21:57:36

Artur
31.07.2016
21:59:04
Ладно, завтра поэкспериментирую