Каковы преимущества наличия папки поставщика? - PullRequest
0 голосов
/ 01 мая 2020

Я действительно не могу gr asp цель иметь папку продавца. Исходя из того, что я узнал, кажется, что вендор папка выгоден только в том случае, если вы пытаетесь сделать репо совместимым с golang версиями ранее, чем 1.11. Мы работаем golang 1.12.14.

Когда я рассказал об этом своему коллеге, он сказал:

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

Я думал, что это то, что Go модули делает? Я задал этот вопрос, и комментатор говорит, что я не должен использовать поставщика? Имеет ли смысл добавлять `go mod vendor` в ловушку перед фиксацией?

1 Ответ

6 голосов
/ 01 мая 2020

Go модули дают гарантию, что вы сможете детально построить свои пакеты, заблокировав зависимости в go.sum. Тем не менее, обещание детерминистически построить ваш проект остается в силе, только если ваши зависимости все еще доступны в будущем. Вы не знаете, будет ли это так.

Вендорство с другой стороны, с модулями Go или без них, дает более надежные гарантии, поскольку позволяет фиксировать зависимости рядом с кодом. Таким образом, даже если удаленный репозиторий более недоступен (удален, переименован и т. Д. c), вы все равно сможете построить свой проект.

Другой альтернативой является использование модулей Go вместе с прокси , Вы можете найти больше информации в официальной документации . Вы также можете посмотреть на некоторые реализации OSS, такие как gomods / athens или goproxy / goproxy . Если вы не хотите настраивать и поддерживать свой собственный прокси-сервер, на рынке доступны некоторые коммерческие предложения.

Так следует ли вам go mod vendor каждый раз, когда вы совершаете коммит? Ну, в конечном счете, все зависит от того, какие гарантии вы хотите. Но да, использование прокси или продвижение ваших зависимостей помогает приблизиться к воспроизводимым сборкам.

...