Использование модулей Go с частными репозиториями через HTTP без SSL - PullRequest
0 голосов
/ 08 июля 2019

Есть ли способ заставить команду go использовать HTTP вместо HTTPS?

Я пытаюсь переместить проект в Go Modules, но этот проект включает в себя частный репозиторий git в качествезависимость.Этот git репозиторий размещен в частной локальной сети за брандмауэром, и я обычно клонирую его с чем-то вроде cd $GOPATH/git.ourdomain.net/foo/bar/ && git clone http://my-user:my-password@git.ourdomain.net/foo/bar/reponame.git.

Однако теперь команды go mod, go get и go test пытаютсяиспользовать HTTP с SSL (HTTPS).

Этот параметр не помогает:

git config \
  --global \
  url."http://my-user:my-password@git.ourdomain.net/foo/bar/reponame".insteadOf \
  "http://git.ourdomain.net"

(проверьте здесь контекст для git настроек для частных репозиториев: https://medium.com/cloud-native-the-gathering/go-modules-with-private-git-repositories-dfe795068db4)

Я изменил файл go.mod, добавив ссылку на этот закрытый репозиторий (используя шаблон, подобный git.ourdomain.net/foo/bar/reponame@v0.0.0-<YYYYMMDDHHmmSS>-<GIT_COMMIT_ID>), но при вызове go test с файлом go.mod, включающим этот закрытый репозиторий, я вижу:

go: git.ourdomain.net/foo/bar/reponame@v0.0.0-<YYYYMMDDHHmmSS>-<GIT_COMMIT_ID>: unrecognized import path "git.ourdomain.net/foo/bar/reponame" (https fetch: Get https://git.ourdomain.net/foo/bar/reponame?go-get=1: dial tcp <PUBLIC_IP_ADDRESS>:443: connect: connection refused)

Я также попытался вернуть go.mod к исходной версии (без этого частного хранилища) и попытался go get по пути, где хранится файл go.mod, предполагая, чтокаким-то образом обновит файл go.mod через HTTP из-за -insecure (отметьте здесь https://golang.org/cmd/go/#hdr-Module_aware_go_get), следующим образом:

GO111MODULE=on go get -insecure -u git.ourdomain.net/foo/bar/reponame

Но это выдало сообщение об ошибке:

fatal: remote error: Repository not found
The requested repository does not exist, or you do not have permission to
access it.

Я знаю, что должен использовать SSL, но я никогда не управлял этим git сервер, чтобы настроить его так, как он должен быть настроен.Поэтому я просто использовал git clone, предоставляющий URL-адрес HTTP (за брандмауэром), и он всегда работал.

...