В стартовый набор входят proxy-репозиторий go-proxy (зеркало proxy.golang.org),
hosted-репозиторий go-hosted (приватные модули)
и go-sumdb — proxy-репозиторий базы контрольных сумм sum.golang.org.
Подключение к proxy
Задайте переменные окружения (или запишите их командой go env -w):
export GOPROXY="https://<GALLEON_HOST>/repository/go-proxy"
export GOSUMDB="sum.golang.org https://<GALLEON_HOST>/repository/go-sumdb"
go get rsc.io/quoteGOSUMDB записывается двумя значениями через пробел — имя базы и адрес proxy-репозитория:
клиент go будет проверять контрольные суммы через Galleon, не обращаясь в интернет напрямую.
Приватные модули
Приватные модули публикуются в go-hosted, публичные продолжают идти через go-proxy —
для этого источники перечисляются в GOPROXY списком
(при ответе 404 клиент переходит к следующему адресу):
export GOPROXY="https://<GALLEON_HOST>/repository/go-hosted,https://<GALLEON_HOST>/repository/go-proxy"
export GOPRIVATE="example.com/private-*"
export GONOPROXY="none"
go mod download example.com/private-x/lib@v1.0.0Приватных модулей нет в публичной базе контрольных сумм,
поэтому GOPRIVATE отключает для их путей проверку сумм.
GONOPROXY="none" обязателен: без него GOPRIVATE направит запросы приватных модулей напрямую в систему контроля версий, минуя Galleon.
Учётные данные клиент go читает из файла ~/.netrc:
machine <GALLEON_HOST>
login <USERNAME>
password <PASSWORD>Публикация
Штатной команды публикации у Go нет — файлы модуля загружаются по путям протокола module proxy:
curl -u <USERNAME>:<PASSWORD> -T v1.0.0.mod https://<GALLEON_HOST>/repository/go-hosted/example.com/foo/@v/v1.0.0.mod
curl -u <USERNAME>:<PASSWORD> -T v1.0.0.zip https://<GALLEON_HOST>/repository/go-hosted/example.com/foo/@v/v1.0.0.zipФайл .mod должен байт в байт совпадать с go.mod внутри архива .zip.
Повторная загрузка уже опубликованной версии отклоняется с кодом 409 —
версии модулей неизменяемы; для новой сборки публикуйте новую версию.
Особенности
Особенности формата:
- Файлы версий (
.zip,.mod,.info) неизменяемы по правилам протокола Go; как proxy-репозитории кешируют содержимое и обновляют списки версий, описано в разделе Проксирование и кеширование. - Если
GOSUMDBне настроен наgo-sumdb, клиент проверяет контрольные суммы напрямую через sum.golang.org — для закрытого контура настраивайте обе переменные.