Уронили прод из-за npm и lockfile, рассказываю как и что сделали
Рейтинг: 62.3% · 11 голосов
Войдите, чтобы голосовать
Голосовать «За» и «Против» могут только авторизованные пользователи. Войдите в свой аккаунт — или зарегистрируйтесь, это займёт минуту.
Нет аккаунта? Зарегистрироваться
Уронили прод из-за npm и lockfile, рассказываю как и что сделали
Уронили прод вечером в пятницу из-за рассинхрона package-lock.json и фантомных зависимостей, делюсь чтобы вы так не делали. Коротко: один разраб закоммитил package.json без обновлённого лока, CI собрался на закешированных node_modules и прошёл зелёным, а прод собрался с чистого листа и подтянул минорку транзитивной зависимости где сломали поведение. Полтора часа искали, потому что локально не воспроизводилось ни у кого. npm ci надо было ставить в пайплайн с самого начала, а не npm install.
✔ Лучший ответ сформирован автоматически — guardia
Расскажу что в итоге внедрили после разбора, может кому пригодится целиком. Первое, в CI везде npm ci, никаких install, плюс отдельный шаг npm ci dry-run на проверку что лок консистентен ещё до сборки. Второе, включили npm config save-exact для критичных пакетов и перешли на ренжи без caret там где боялись минорок, обновляем осознанно через renovate с прогоном тестов. Третье, кеш переделали, тепе…
Re: Уронили прод из-за npm и lockfile, рассказываю как и что сделали
@async2025, npm install в CI это классические грабли, он же лок может перезаписать молча. только npm ci, он падает если лок не сходится с package.json. это база, странно что у вас не было
- photon1952
- Сообщения: 13
- Зарегистрирован: 11 май 2026, 01:28
- solidity2024
- Сообщения: 40
- Зарегистрирован: 11 май 2026, 02:34
Re: Уронили прод из-за npm и lockfile, рассказываю как и что сделали
вот поэтому caret диапазоны (^) в проде это рулетка. лок должен быть зафиксирован и закоммичен всегда, тогда минорка сама не приедет. У вас по сути лок не был источником истины, вот и прилетело. Проблема не в npm а в процессе.async2025 писал(а):подтянул минорку транзитивной зависимости где сломали поведение
Re: Уронили прод из-за npm и lockfile, рассказываю как и что сделали
✔ Лучший ответ — сформирован автоматически
Расскажу что в итоге внедрили после разбора, может кому пригодится целиком. Первое, в CI везде npm ci, никаких install, плюс отдельный шаг npm ci dry-run на проверку что лок консистентен ещё до сборки. Второе, включили npm config save-exact для критичных пакетов и перешли на ренжи без caret там где боялись минорок, обновляем осознанно через renovate с прогоном тестов. Третье, кеш переделали, теперь кешируется только npm store по хешу от package-lock, при изменении лока кеш инвалидируется, фантомного состояния больше нет. Четвёртое, выкатка по фича-флагам и канарейке, новый код едет на 5 процентов трафика, если метрики ошибок растут откат автоматом за минуту. Пятое, заморозка деплоев после 16:00 в пятницу, чисто организационно но нервы целее. По итогу за три месяца ни одного похожего инцидента. Renovate сначала бесил пачками пиаров, настроили группировку и автомёрж для патчей с зелёными тестами, стало терпимо.
- secret7260
- Сообщения: 13
- Зарегистрирован: 19 май 2026, 22:58
- raspberryops
- Сообщения: 8
- Зарегистрирован: 29 май 2026, 18:04
Поделиться темой:
✈ Telegram
VK
- Похожие темы
-
- Купил 3080 с авито за 28к, через три недели артефакты. Рассказываю где лоханулся
7 ответов · 9 просмотров
-
-
- Месяц живу полностью на passkeys вместо паролей — рассказываю, где красиво, а где больно
5 ответов · 8 просмотров
-
-
-
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость