Comments 12
Не лучше ли форкать все зависимости, чтоб не зависеть от такого рода случайностей?
Лучше настроить Nexus Proxy.
Даже если оригинальная репа недоступна - на нексусе будет закачан артифакт, в крайнем случае не последней версии.
Я предпочитаю не последнюю, а проверенную и оттестированную с моим продуктом версию. Возможно, подправленную. Поэтому всегда форкаю, завожу свою ветку для возможных правок, и форк апдейчу (если есть в этом потребность) в начале релизного цикла, чтобы до конца цикла неожиданностей не иметь.
Nexus/artifactory просто кешируют версии . Вы запрашиваете версию у нексуса, он скачивает себе, и отдает вам. Гибзаб может тоже упасть или мавен централ, да и вообще не безопасно на машине где сборка идёт ,открывать доступ к интернету, а не только к локальным ресурсам компании. Там же можете и удалять не используемые у себя вообщем хорошая штука , попробуйте.
Локальное кэширование - отличная идея, особенно для веб- или скриптовой разработки, или когда дерево зависимостей большое. У меня немного другая ситуация - зависимостей не очень много (первые десятки), и они все C++-ные, поэтому они все локально построены и в NuGet-овские пакеты завернуты, так что дополнительное кэширование не требуется. Нередко приходится в них что-то подправлять, так что без форка трудно обойтись. Но да, это несколько другая история, прямого отношения к статье не имеющая.
Продакшен, релиз без фиксации версии, сборка прям с внешних гитов - серьезно?
Фиксация версии может быть была.
А что тут такого? Не все в космической отрасли работают, у некоторых клиентами магазинчики и фитнес-клубы являются. Но у них тоже и продакшн, и релизы присутствуют. Собралось успешно - переключился, нет - ищи проблему. Обычно успешно собирается, инфраструктура айтишная довольно надёжная.
Но так-то зависимости должны были остаться в кэше у какого-нибудь девелопера, их можно было достать, оформить локальный репозиторий в проекте (composer.json
):
{
"repositories": {
"local": {
"type": "artifact",
"url": "../repo/"
}
}
}
и выложить в ../repo/
нужные зависимости в виде zip-файлов:

и можно выкатываться.
Да прямо из развёрнутого дев-проекта можно делать - закатать в zip любой фолдер из ./vendor/{name}/
, главное, чтобы composer.json
внутри был с нужным названием и всем остальным.
Скоро без внешних зависимостей нельзя будет даже написать Hello World или помигать светодиодом. Или уже?
Никогда такого не было - и вот те раз!
Как Elasticsearch поломал сборки и «обнулил» звёзды в Github