Go модули дают гарантию, что вы сможете детально построить свои пакеты, заблокировав зависимости в go.sum
. Тем не менее, обещание детерминистически построить ваш проект остается в силе, только если ваши зависимости все еще доступны в будущем. Вы не знаете, будет ли это так.
Вендорство с другой стороны, с модулями Go или без них, дает более надежные гарантии, поскольку позволяет фиксировать зависимости рядом с кодом. Таким образом, даже если удаленный репозиторий более недоступен (удален, переименован и т. Д. c), вы все равно сможете построить свой проект.
Другой альтернативой является использование модулей Go вместе с прокси , Вы можете найти больше информации в официальной документации . Вы также можете посмотреть на некоторые реализации OSS, такие как gomods / athens или goproxy / goproxy . Если вы не хотите настраивать и поддерживать свой собственный прокси-сервер, на рынке доступны некоторые коммерческие предложения.
Так следует ли вам go mod vendor
каждый раз, когда вы совершаете коммит? Ну, в конечном счете, все зависит от того, какие гарантии вы хотите. Но да, использование прокси или продвижение ваших зависимостей помогает приблизиться к воспроизводимым сборкам.