Первыми рассказываем о том, как настроить оповещения с вашего прода.
📍 Навигация: Вакансии • Задачи • Собесы
Please open Telegram to view this post
VIEW IN TELEGRAM
😁6🌚5
DevOps — до 400 000 ₽, удалёнка
DevOps Engineer Middle — от150 000 ₽, удалёнка
DevOps-инженер — от 200 000 ₽ , удалёнка
#вакансия_недели
Please open Telegram to view this post
VIEW IN TELEGRAM
Git хранит историю всех перемещений HEAD в reflog. Даже если коммит удалён, то может он ещё живёт в репозитории.
Запускаем:
git reflog
Увидите список всех состояний HEAD с хэшами. Находим запись до того, как всё сломалось:
abc1234 HEAD@{3}: commit: my important workВосстанавливаем коммит
Вариант 1. Вернуть ветку на нужный коммит:
git reset --hard abc1234
Вариант 2. Cоздать новую ветку из того коммита:
git checkout -b recovery-branch abc1234
Если были незакоммиченные изменения
Reflog тут не поможет —
git reset --hard уничтожает их без следа. Но есть варианты:• Проверьте
.git/ORIG_HEAD. Иногда Git сохраняет предыдущее состояние туда• Попробуйте
git fsck --lost-found —- ищет «висячие» объекты в репозитории• Если работаете в VS Code или IntelliJ, то проверьте Local History, часто спасает
Git почти никогда не удаляет данные сразу. У вас есть ~30 дней, пока сборщик мусора не почистит потерянные объекты.
📍 Навигация: Вакансии • Задачи • Собесы
#root_prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍1
💻 Локальный эмулятор AWS
В марте 2026 года LocalStack Community Edition перестал быть бесплатным в полном смысле слова. Теперь нужен токен авторизации, CI-поддержка только в платных тарифах, а обновления безопасности заморожены.
Floci — это open-source замена. Без регистрации, без ограничений в CI. Запускается одной командой.
Floci эмулирует больше 20 AWS-сервисов, в том числе те, которых не было в бесплатном LocalStack. S3, SQS, DynamoDB, SNS, Lambda, IAM, STS, Cognito, API Gateway v2, ElastiCache с IAM-аутентификацией, RDS (PostgreSQL и MySQL), Kinesis, KMS. Все 408 SDK-тестов проходят.
Минимальный docker-compose.yml:
Все сервисы доступны на http://localhost:4566. Регион и учётные данные могут быть любыми.
Если вы использовали LocalStack в CI или локальной разработке и не хотите переходить на платный тариф, Floci закрывает эту потребность.
➡️ Репозиторий
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#арсенал_инженера
В марте 2026 года LocalStack Community Edition перестал быть бесплатным в полном смысле слова. Теперь нужен токен авторизации, CI-поддержка только в платных тарифах, а обновления безопасности заморожены.
Floci — это open-source замена. Без регистрации, без ограничений в CI. Запускается одной командой.
Floci эмулирует больше 20 AWS-сервисов, в том числе те, которых не было в бесплатном LocalStack. S3, SQS, DynamoDB, SNS, Lambda, IAM, STS, Cognito, API Gateway v2, ElastiCache с IAM-аутентификацией, RDS (PostgreSQL и MySQL), Kinesis, KMS. Все 408 SDK-тестов проходят.
Минимальный docker-compose.yml:
services:
floci:
image: hectorvent/floci:latest
ports:
- "4566:4566"
volumes:
- ./data:/app/data
Все сервисы доступны на http://localhost:4566. Регион и учётные данные могут быть любыми.
Если вы использовали LocalStack в CI или локальной разработке и не хотите переходить на платный тариф, Floci закрывает эту потребность.
📍 Навигация: Вакансии • Задачи • Собесы
#арсенал_инженера
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🤩2
🛠 Функции в bash-скриптах
Если ваш скрипт перевалил за 30 строк и вы уже сами не понимаете, что происходит в середине это сигнал разбить его на функции.
Одна функция — одна задача
Это не правило из учебника, это практика. Когда каждая функция делает ровно одно дело, скрипт читается сверху вниз без лишних усилий. Видите имя функции и понимаете, что она делает.
Вот простой пример. Скрипт делает бэкап директории и пишет лог.
Обратите внимание на
Ещё плюс это переиспользование. Функцию log можно взять и вставить в любой другой скрипт без изменений.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#root_prompt
Если ваш скрипт перевалил за 30 строк и вы уже сами не понимаете, что происходит в середине это сигнал разбить его на функции.
Одна функция — одна задача
Это не правило из учебника, это практика. Когда каждая функция делает ровно одно дело, скрипт читается сверху вниз без лишних усилий. Видите имя функции и понимаете, что она делает.
Вот простой пример. Скрипт делает бэкап директории и пишет лог.
#!/bin/bash
set -euo pipefail
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1"
}
backup_files() {
local source_dir="$1"
local dest_dir="$2"
log "Backing up $source_dir to $dest_dir"
cp -r "$source_dir" "$dest_dir"
}
# Main
backup_files "/var/www" "/backups/www"
log "Done."
Обратите внимание на
local перед переменными внутри backup_files. Без local переменная source_dir существует глобально. Если где-то ещё в скрипте есть переменная с таким же именем, вы получите баг, который сложно отловить. С local переменная живёт только внутри своей функции и нигде больше.Ещё плюс это переиспользование. Функцию log можно взять и вставить в любой другой скрипт без изменений.
📍 Навигация: Вакансии • Задачи • Собесы
#root_prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
🐳 Запускайте Docker из любой среды
Docker Offload это облачный сервис, который решает конкретную боль: миллионы разработчиков в корпоративных средах не могли использовать Docker Desktop вообще.
Крупные компании часто работают через VDI или управляемые рабочие столы с жёсткими политиками безопасности. На таких машинах Docker Desktop просто не запускался. Команды шли на компромиссы, платили за обходные решения и теряли время.
Как это работает
Контейнерный движок переезжает в облако Docker. Разработчик продолжает работать как раньше: тот же терминал, те же команды
Единственное, что меняется это где именно работает движок. Соединение идёт через зашифрованный туннель, каждая сессия изолирована и не сохраняет данные после завершения.
➡️ Блог разработчиков
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#пульс_индустрии
Docker Offload это облачный сервис, который решает конкретную боль: миллионы разработчиков в корпоративных средах не могли использовать Docker Desktop вообще.
Крупные компании часто работают через VDI или управляемые рабочие столы с жёсткими политиками безопасности. На таких машинах Docker Desktop просто не запускался. Команды шли на компромиссы, платили за обходные решения и теряли время.
Как это работает
Контейнерный движок переезжает в облако Docker. Разработчик продолжает работать как раньше: тот же терминал, те же команды
docker run, тот же интерфейс Docker Desktop. Единственное, что меняется это где именно работает движок. Соединение идёт через зашифрованный туннель, каждая сессия изолирована и не сохраняет данные после завершения.
📍 Навигация: Вакансии • Задачи • Собесы
#пульс_индустрии
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Вы сделали всё правильно: многоступенчатая сборка, distroless-образ, non-root пользователь, закреплённый дайджест. Образ компактный. А потом выходит CVE в библиотеке, которую подтянул базовый образ полгода назад.
Сканирование образов закрывает эту дыру. Не нужен отдельный инструмент: Trivy бесплатный, быстрый и нормально вписывается в Go CI.
Как запустить
Одна команда и падаем на HIGH и CRITICAL уязвимостях:
trivy image --exit-code 1 --severity HIGH,CRITICAL myapp:latest
Для GitHub Actions:
- name: Scan image
uses: aquasecurity/trivy-action@master
with:
image-ref: myapp:latest
exit-code: '1'
severity: 'HIGH,CRITICAL'
Запускайте после каждой сборки. Поймаете проблему до прода, а не после звонка от безопасников или, что хуже, после инцидента.
📍 Навигация: Вакансии • Задачи • Собесы
#арсенал_инженера
Please open Telegram to view this post
VIEW IN TELEGRAM
✌🏻 У нас две новости — хорошая и плохая!
Хорошая: Ваших знаний, скорее всего, хватит, чтобы собрать рабочую демку AI-агента в Colab. 🫡
Плохая: Вы вряд ли выведете его в прод, не обанкротившись на токенах и не слив базу. 🤯
Для защиты от таких сценариев мы полностью пересобрали курс «Разработка AI-агентов». Теперь внутри плотная работа с экономикой ресурсов, дебаг через time-travel в
Программа курса, полный состав спикеров и другие подробности 👈🏻
ВАЖНО! До 5 апреля на курс действует скидка, но свободные места могут закончиться раньше.
Хорошая: Ваших знаний, скорее всего, хватит, чтобы собрать рабочую демку AI-агента в Colab. 🫡
Плохая: Вы вряд ли выведете его в прод, не обанкротившись на токенах и не слив базу. 🤯
Для защиты от таких сценариев мы полностью пересобрали курс «Разработка AI-агентов». Теперь внутри плотная работа с экономикой ресурсов, дебаг через time-travel в
LangGraph, извлечение данных из кривых сканов для RAG и комплаенс по 152-ФЗ.Если всё ещё сомневаетесь, послушайте голосовое от спикера курса Влада Прошинского, где он объясняет, как правильно тестировать агентов перед релизом.
Программа курса, полный состав спикеров и другие подробности 👈🏻
ВАЖНО! До 5 апреля на курс действует скидка, но свободные места могут закончиться раньше.
🌐 Облачные права для CI без долгоживущих ключей
Каждый, кто настраивал непрерывную интеграцию и доставку, сталкивался с этим моментом. Пайплайн должен обращаться к облаку, и нужно как-то передать ему права.
Решение находится быстро, есть минимум четыре способа, пайп зеленеет, задача закрыта. Но именно здесь часто закладывается проблема, которая выстрелит позже.
➡️ Узнать ответ
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#задача_со_звёздочкой
Каждый, кто настраивал непрерывную интеграцию и доставку, сталкивался с этим моментом. Пайплайн должен обращаться к облаку, и нужно как-то передать ему права.
Решение находится быстро, есть минимум четыре способа, пайп зеленеет, задача закрыта. Но именно здесь часто закладывается проблема, которая выстрелит позже.
📍 Навигация: Вакансии • Задачи • Собесы
#задача_со_звёздочкой
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍1
Самый простой способ сделать бэкап MySQL в Docker — запустить mysqldump прямо внутри контейнера. Не нужно пробрасывать порты и ставить MySQL-инструменты на хост. Всё что нужно уже есть в контейнере.
Базовая команда:
docker exec mysql-container mysqldump \
-u root -p'yourpassword' \
--single-transaction \
--routines \
--triggers \
mydatabase > backup_$(date +%Y%m%d_%H%M%S).sql
Флаг
--single-transaction обязателен для InnoDB. Он делает консистентный снимок без блокировки таблиц, приложение продолжает работать в штатном режиме. Флаги --routines и --triggers включают в дамп хранимые процедуры и триггеры, которые mysqldump по умолчанию пропускает.Бэкап всех баз сразу:
docker exec mysql-container mysqldump \
-u root -p'yourpassword' \
--single-transaction \
--all-databases > full_backup_$(date +%Y%m%d_%H%M%S).sql
Восстановление:
docker exec -i mysql-container mysql \
-u root -p'yourpassword' mydatabase < backup_20260403_040000.sql
Но у этого подхода есть потолок. Нет планировщика, нет сжатия, нет отправки на удалённое хранилище. Всё это придётся добавлять самостоятельно.
📍 Навигация: Вакансии • Задачи • Собесы
#арсенал_инженера
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4❤1
Рынок IT-вакансий давно не ограничивается hh.ru и LinkedIn. Одни платформы заточены под стартапы и equity-офферы, а другие под прозрачные зарплаты без буллшита, третьи созданы специально для первой работы после универа.
📍 Навигация: Вакансии • Задачи • Собесы
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Поэтому собрали для вас пак новостей.
— Компьютер без RAM
На фоне роста цен на оперативную память YouTube-канал PortalRunner проверил, можно ли вообще обойтись без неё.
— Ubuntu теперь требует больше RAM, чем Windows 11
Ubuntu 26.04 LTS поднял минимальную планку оперативной памяти до 6 ГБ. Windows 11 при этом всё ещё официально требует только 4 ГБ.
— SystemRescue 13.00
— Запускайте Docker из любой среды
📍 Навигация: Вакансии • Задачи • Собесы
#дайджест_недели
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🔤 Таблицы прямо в терминале
sheets это TUI-инструмент на Go, который открывает CSV прямо в терминале и даёт работать с ним почти как в нормальном табличном редакторе.
Открыть файл:
Прочитать конкретную ячейку или диапазон без открытия интерфейса:
Изменить ячейку из командной строки:
Передать данные через stdin:
Как это работает внутри
Навигация сделана под vim-пользователей:
Есть поддержка undo/redo, буфер обмена, визуальное выделение диапазонов и даже формулы в visual mode через
Установка:
Для тех, кто работает в терминале и не хочет переключаться в GUI ради CSV. Полезно при отладке экспортов, быстром просмотре логов в табличном формате или в CI-скриптах, где нужно вытащить конкретное значение.
➡️ Репозиторий
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#арсенал_инженера
sheets это TUI-инструмент на Go, который открывает CSV прямо в терминале и даёт работать с ним почти как в нормальном табличном редакторе.
Открыть файл:
sheets budget.csv
Прочитать конкретную ячейку или диапазон без открытия интерфейса:
sheets budget.csv B9
sheets budget.csv B1:B3
Изменить ячейку из командной строки:
sheets budget.csv B7=10 B8=20
Передать данные через stdin:
sheets <<< "ID,Name,Age
1,Alice,24
2,Bob,32"
Как это работает внутри
Навигация сделана под vim-пользователей:
h/j/k/l для перемещения, gg/G для прыжка к началу или концу, / для поиска. Редактирование через i, выделение через v, отмена через u. Сохранение по :w, выход по :q. Если вы привыкли к vim, освоите sheets за пять минут.Есть поддержка undo/redo, буфер обмена, визуальное выделение диапазонов и даже формулы в visual mode через
=.Установка:
go install github.com/maaslalani/sheets@main
Для тех, кто работает в терминале и не хочет переключаться в GUI ради CSV. Полезно при отладке экспортов, быстром просмотре логов в табличном формате или в CI-скриптах, где нужно вытащить конкретное значение.
📍 Навигация: Вакансии • Задачи • Собесы
#арсенал_инженера
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3❤2
🔄 iptables в Arch Linux теперь по умолчанию использует nft-бэкенд
В Arch Linux изменилась схема пакетов iptables. Пакет
При переключении между пакетами нужно проверить наличие
Большинство конфигураций продолжит работать без изменений. Но если вы используете нестандартные xtables-расширения или поведение, специфичное для legacy-бэкенда, стоит проверить всё вручную и при необходимости переключиться на
➡️ Источник
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#пульс_индустрии
В Arch Linux изменилась схема пакетов iptables. Пакет
iptables-nft переименован в iptables, а старый legacy-бэкенд теперь доступен как iptables-legacy.При переключении между пакетами нужно проверить наличие
.pacsave-файлов в /etc/iptables/ и при необходимости восстановить правила вручную:/etc/iptables/iptables.rules.pacsave
/etc/iptables/ip6tables.rules.pacsave
Большинство конфигураций продолжит работать без изменений. Но если вы используете нестандартные xtables-расширения или поведение, специфичное для legacy-бэкенда, стоит проверить всё вручную и при необходимости переключиться на
iptables-legacy.📍 Навигация: Вакансии • Задачи • Собесы
#пульс_индустрии
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰2👍1
Если MySQL-контейнер пробрасывает порт на хост, делать дамп можно прямо с хостовой машины. Не нужно заходить через
docker exec, запускаете mysqldump локально, и всё.Для этого нужны два условия: на хосте установлен MySQL-клиент, и в конфигурации контейнера прописан проброс порта.
Настройка Docker Compose
В
docker-compose.yml должна быть секция ports:services:
mysql:
image: mysql:8
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: yourpassword
volumes:
- mysql-data:/var/lib/mysql
Запуск дампа с хоста:
mysqldump -h 127.0.0.1 -P 3306 \
-u root -p'yourpassword' \
--single-transaction \
mydatabase > backup.sql
Флаг
--single-transaction важен для InnoDB: он снимает дамп без блокировок таблиц.Когда это имеет смысл
Версия
mysqldump на хосте может отличаться от той, что внутри контейнера. Это важно, потому что поведение флагов и формат дампа меняются от версии к версии. Если вы хотите точно контролировать, какая версия утилиты делает дамп, этот способ даёт такую возможность.Ещё один плюс: если у вас уже есть скрипты резервного копирования на хосте, этот подход встраивается в них без лишних правок.
Про безопасность
В разработке открытый порт не проблема. В продакшне стоит убедиться, что
3306 слушает только 127.0.0.1, а не все интерфейсы. Иначе база доступна снаружи, что плохо.В
docker-compose.yml это выглядит так:ports:
- "127.0.0.1:3306:3306"
📍 Навигация: Вакансии • Задачи • Собесы
#root_prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
🛠 Используйте
Обратные кавычки работают. Но они же и мешают: плохо читаются и не дают вложить одну команду в другую без боли.
Проблема
Когда нужно подставить вывод команды в переменную или другую команду, оба синтаксиса технически делают одно и то же. Но обратные кавычки визуально сливаются с апострофами, их тяжело заметить в длинной строке, а при попытке вложить одну подстановку в другую всё быстро превращается в нечитаемый код.
Что делает
Он выполняет команду внутри скобок и подставляет её вывод на место:
Разница небольшая, но когда команды усложняются,
Вложенность где это особенно важно
Главное преимущество
С
Здесь сначала выполняется внутренняя команда
Попробуйте написать то же самое на обратных кавычках, получите либо ошибку, либо код, который никто не разберёт через неделю.
Обратные кавычки можно встретить в старых скриптах — это нормально. Но для нового кода стоит использовать
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#root_prompt
$() вместо обратных кавычек для подстановки командОбратные кавычки работают. Но они же и мешают: плохо читаются и не дают вложить одну команду в другую без боли.
Проблема
Когда нужно подставить вывод команды в переменную или другую команду, оба синтаксиса технически делают одно и то же. Но обратные кавычки визуально сливаются с апострофами, их тяжело заметить в длинной строке, а при попытке вложить одну подстановку в другую всё быстро превращается в нечитаемый код.
Что делает
$()$() это современный способ подстановки команд в bash. Он выполняет команду внутри скобок и подставляет её вывод на место:
# Устаревший стиль — сложно читать, сложно вкладывать
today=`date '+%Y-%m-%d'`
# Современный и читаемый вариант
today=$(date '+%Y-%m-%d')
echo "Today is $today"
Разница небольшая, но когда команды усложняются,
$() выигрывает однозначно.Вложенность где это особенно важно
Главное преимущество
$() проявляется при вложении. С обратными кавычками вложенность либо невозможна, либо требует экранирования обратным слешем, что делает код трудночитаемым. С
$() вложение выглядит естественно:# Вложение — работает чисто только с $()
lines=$(wc -l < "$(find . -name '*.log' | head -1)")
Здесь сначала выполняется внутренняя команда
find, которая ищет первый .log файл. Её вывод передаётся в wc -l, и результат подсчёта строк записывается в переменную lines.Попробуйте написать то же самое на обратных кавычках, получите либо ошибку, либо код, который никто не разберёт через неделю.
Обратные кавычки можно встретить в старых скриптах — это нормально. Но для нового кода стоит использовать
$(). Читаемость лучше, вложенность работает, и это соответствует стандарту POSIX для современных оболочек.📍 Навигация: Вакансии • Задачи • Собесы
#root_prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
🐧 Linux 7.0 выйдет в ближайшие две недели
Линус Торвальдс подтвердил, что релиз Linux 7.0 не за горами. Первые недели цикла разработки были необычно насыщенными и грозили сдвинуть сроки, но к пятому релиз-кандидату ситуация стабилизировалась.
При семи релиз-кандидатах финальный выпуск придётся на 12 апреля. Но по статистике прошлых циклов вероятнее восьмой RC и дата 19 апреля.
Что изменится по существу: Linux 7.0 станет первым ядром, в котором Accurate Explicit Congestion Notification включён по умолчанию для всех TCP-соединений. Это важно прежде всего для дата-центров, где несколько потоков конкурируют за полосу пропускания.
Среди других изменений заявлена поддержка новых процессоров Intel Nova Lake и AMD Zen 6, а также доработки в планировщике и управлении памятью.
Поддержка Rust в ядре теперь официально стабильна и больше не помечена как экспериментальная.
Ubuntu 26.04 LTS и Fedora 44 рассчитывают включить 7.0 как дефолтное ядро сразу после выхода.
➡️ Источник
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#пульс_индустрии
Линус Торвальдс подтвердил, что релиз Linux 7.0 не за горами. Первые недели цикла разработки были необычно насыщенными и грозили сдвинуть сроки, но к пятому релиз-кандидату ситуация стабилизировалась.
При семи релиз-кандидатах финальный выпуск придётся на 12 апреля. Но по статистике прошлых циклов вероятнее восьмой RC и дата 19 апреля.
Что изменится по существу: Linux 7.0 станет первым ядром, в котором Accurate Explicit Congestion Notification включён по умолчанию для всех TCP-соединений. Это важно прежде всего для дата-центров, где несколько потоков конкурируют за полосу пропускания.
Среди других изменений заявлена поддержка новых процессоров Intel Nova Lake и AMD Zen 6, а также доработки в планировщике и управлении памятью.
Поддержка Rust в ядре теперь официально стабильна и больше не помечена как экспериментальная.
Ubuntu 26.04 LTS и Fedora 44 рассчитывают включить 7.0 как дефолтное ядро сразу после выхода.
📍 Навигация: Вакансии • Задачи • Собесы
#пульс_индустрии
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩2
Мониторинг есть, а ясности не хватает
Когда вокруг турбулентность, а цифровые сервисы работают на пределе, полагаться на интуицию — дорогое удовольствие. В такие моменты выживают те, кто видит картину целиком, а не гадает на кофейной гуще.
VB-Trend 2026 МАЯК — конференция VolgaBlob и Кибердома про observability и мониторинг как антикризисную ясность.
В программе релиз Smart Monitor 6.0 и новый взгляд на Observability, доклады и демозоны с кейсами крупных организаций и партнёров, а также круглый стол с визионерами о навыках будущего и управленческих решениях в эпоху ИИ.
Для тех, кто работает с инфраструктурой, DevOps, ИБ и не только.
➡️ Регистрация
Когда: 17 апреля, 12:00–21:00
Где: Кибердом, 2-я Звенигородская ул., 12 стр. 18
Когда вокруг турбулентность, а цифровые сервисы работают на пределе, полагаться на интуицию — дорогое удовольствие. В такие моменты выживают те, кто видит картину целиком, а не гадает на кофейной гуще.
VB-Trend 2026 МАЯК — конференция VolgaBlob и Кибердома про observability и мониторинг как антикризисную ясность.
В программе релиз Smart Monitor 6.0 и новый взгляд на Observability, доклады и демозоны с кейсами крупных организаций и партнёров, а также круглый стол с визионерами о навыках будущего и управленческих решениях в эпоху ИИ.
Для тех, кто работает с инфраструктурой, DevOps, ИБ и не только.
Когда: 17 апреля, 12:00–21:00
Где: Кибердом, 2-я Звенигородская ул., 12 стр. 18
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Атака на axios в марте 2025 года показала простую вещь: если ваш пайплайн использует
npm install, он каждый раз ходит в живой реестр npm и разрешает диапазоны версий заново. Это открывает окно для подмены пакета.Если в
package.json написано "axios": "^1.7.9", npm install может поставить 1.14.1 — версию, которой не было в вашем lockfile. Вредоносную версию, опубликованную 31 марта, многие поставили именно так.Почему npm ci безопаснее
npm ci устанавливает ровно то, что записано в package-lock.json. Если lockfile расходится с package.json — упадёт с ошибкой. В реестр за новыми версиями не ходит. Новый вредоносный пакет попасть не может, пока вы сами не обновите lockfile.Как заменить в CI/CD:
# Было
- name: Install dependencies
run: npm install
# Стало
- name: Install dependencies
run: npm ci
Бонус — скорость
npm ci удаляет node_modules и ставит заново, без попытки согласовать существующее состояние. Это быстрее на 20–40% по сравнению с npm install.Это одно изменение — и ваш пайплайн уже не подхватит внезапно опубликованную вредоносную версию. Lockfile при этом нужно хранить в репозитории и обновлять осознанно, а не позволять CI делать это автоматически.
📍 Навигация: Вакансии • Задачи • Собесы
#арсенал_инженера
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4