Команда Greenkeeper рада объявить о первой версии поддержки собственных файлов блокировки для Greenkeeper 3 и Greenkeeper Enterprise 3.

Что такое Lockfiles?

Файлы блокировки гарантируют, что зависимости проекта одинаковы во всех средах:

  1. разные программистские машины 🙇🏽‍♀️
  2. Непрерывная интеграция (CI) 🤖
  3. Обеспечение качества (QA) 👩🏿‍⚕️
  4. Постановка 🕺
  5. Производство 👩‍🎤

До появления файлов блокировки в ваше программное обеспечение могли закрасться тонкие ошибки, потому что некоторые второстепенные версии суб-зависимостей различались между разработкой и производством.

Что в этом теперь «Native», я думал, вы уже поддерживаете файлы блокировки?

Летом 2017 года npm выпустила поддержку файлов блокировки. Greenkeeper быстро добавил поддержку для их обработки с помощью плагина greenkeeper-lockfile, который также охватывал файлы блокировки пряжи и файлы термоусадочной упаковки npm.

Плагин greenkeeper-lockfile запускается в вашей службе CI для обновления файла блокировки после того, как Greenkeeper уже обновил ваш package.json. Есть несколько веских причин, по которым мы это сделали:

  1. Это была самая быстрая вещь, которую мы могли выпустить, которая охватывала бы все три варианта файлов блокировки. 🚤
  2. Иногда для запуска npm / yarn install требуется специальная настройка или разрешения для частных реестров пакетов и / или репозиториев GitHub, и они уже будут правильно настроены в вашей среде CI. 👨🏼‍🔧
  3. Greenkeeper пока работает без фактического хранения каких-либо учетных данных, предназначенных для пользователей. Учитывая наш размер, мы очень серьезно относимся к безопасности, и добавление хранилища пользовательских секретов в нашу инфраструктуру - это непростая задача (подробнее об этом ниже). 🕵️‍♀️
  4. Для обновления файлов блокировки нужно запустить npm / yarn install. До сих пор у Greenkeeper не было средств для exec () -зарядки произвольных программ оболочки. npm и yarn - это программные пакеты, которые мы не контролируем и не имеем ресурсов для детального аудита, которые: а) выполняются в оболочке сервера, б) загружать материалы из Интернета и в) запускать операции на основе этих загруженных материалов. 💀

Если вы приближаетесь к дизайну, чтобы гарантировать, что все вышеперечисленное может быть выполнено безопасно и надежно для 10 из 1000 репозиториев GitHub, задача добавления этой функции становится нетривиальной. 🏋🏻‍♀️

Большим недостатком всего этого является то, что greenkeeper-lockfile должен быть установлен каждым пользователем, который хочет его использовать, и все чаще это все наши пользователи и клиенты. Было бы лучше, если бы Greenkeeper просто обновлял файлы блокировки самостоятельно. Кроме того, заставить greenkeeper-lockfile работать с множеством существующих CI-сервисов было непросто, особенно в связи с поддержкой монорепозитория, которую мы выпустили ранее в этом году. 😅

В целом мы согласны, что Greenkeeper должен делать это прямо из коробки. 👍

При этом, мы начали внедрение системы, которая улучшает все вышеперечисленное. Читайте подробности… 📖

Дорожная карта 🛣

Сегодня мы объявляем о поддержке собственных обновлений файлов блокировки для общедоступных пакетов. 🎉 То есть для всех пакетов, доступных для чтения всем на npmjs.com, Greenkeeper автоматически обновит ваш package.json и соответствующий файл блокировки (либо package -lock.json или yarn.lock).

Затем мы планируем добавить безопасное хранилище для пользовательских токенов (например, токенов доступа npm) в нашу инфраструктуру, и мы добавляем пользовательский интерфейс на страницу нашей учетной записи, необходимый для добавления и отзыва указанных токенов, чтобы мы также можем добавить поддержку частных пакетов. 🔐

Обратите внимание, что это поддерживает только package-lock.json и yarn.lock, но мы вряд ли добавим поддержку npm shrinkwrap, если только мы получить непреодолимый потребительский спрос 🌊.

Что происходит с подключаемым модулем greenkeeper-lockfile? Поскольку он поддерживает частные пакеты и термоусадочную пленку, мы оставим его на некоторое время. ✌️

Дайте нам знать, что вы думаете 🧐

Мы благодарим всех пользователей и клиентов Greenkeeper за их вклад в эту новую и интересную функцию. Если у вас возникнут вопросы, обращайтесь к нам в любое время.

Мы надеемся, что Вам понравится. 🌴