`go build -mod vendor` не может использовать вендорные пакеты - PullRequest
2 голосов
/ 21 мая 2019

При развертывании моих сервисов Go в Google AppEngine (стандарт) я получаю сообщения об ошибках, указывающие на то, что версия модуля не найдена, хотя все компилируется нормально.

Модули находятся в частном экземпляре Github и извлечены дляvendor/.

A go build -mod vendor -o /dev/null ./... работает в облачной сборке, локально и в Google Cloud Build.На github.com/company/gosystem:

gosystem$ git tag
v0.0.1
v0.0.2
v0.0.3
v1.0.0
v1.1.0
Failed to build app: [go build -o /tmp/staging172777881/usr/local/bin/start .] with env [PATH=/go/bin:/usr/local/go/bin:/builder/google-cloud-sdk/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin HOSTNAME=f3f56ce621f0 HOME=/builder/home BUILDER_OUTPUT=/builder/outputs DEBIAN_FRONTEND=noninteractive GOROOT=/usr/local/go/ GOPATH=/go GO111MODULE=on GOCACHE=/tmp/cache019702820 GOPATH=/go] failed: err=exit status 1, out="
go: finding github.com/pquerna/otp v1.1.0
go: finding github.com/gin-gonic/gin v1.4.0
go: finding github.com/pkg/errors v0.8.1
go: finding github.com/rainycape/unidecode v0.0.0-20150907023854-cb7f23ec59be
go: finding github.com/gosimple/slug v1.5.0
go: finding github.com/boombuler/barcode v1.0.0
go: finding github.com/company/gosystem v1.1.0
go: finding github.com/oblq/i18n v0.0.0-20181031085821-98eec2978e00
go: finding github.com/go-pg/pg v8.0.4+incompatible
go: finding golang.org/x/text v0.3.2
go: finding github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd
go: finding github.com/modern-go/reflect2 v1.0.1
go: finding github.com/golang/protobuf v1.3.1
go: finding github.com/stretchr/testify v1.3.0
go: finding github.com/ugorji/go/codec v0.0.0-20190204201341-e444a5086c43
go: finding github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3
go: finding github.com/mattn/go-isatty v0.0.7
go: github.com/company/gosystem@v1.1.0: unknown revision v1.1.0

A grep -RI 'gosystem@' * существует тег с именем 'v1.1.0 *, ничего не сообщающий.

Ответы [ 2 ]

1 голос
/ 23 мая 2019

В конце концов я смог сделать эту работу, заставив перейти на использование vendor, добавив это к go.mod:

replace github.com/company/gosystem => ./vendor/github.com/company/gosystem
0 голосов
/ 21 мая 2019

Go использует https для получения версий / зависимостей.Даже если вы используете поставщика, Go все равно проверит версию.А поскольку github.com/venclave/gosystem является частным репо, git не может получить к нему доступ.

Для этого есть несколько способов.

1 - Используйте ssh:

git config --global url.ssh://git@github.com/venclave.insteadOf https://github.com/venclave

2 - используйте токен GitHub:

Генерируйте GITHUB_TOKEN здесь https://github.com/settings/tokens.

export GITHUB_TOKEN=xxx
git config --global url."https://${GITHUB_TOKEN}:x-oauth-basic@github.com/venclave".insteadOf "https://github.com/venclave"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...