3 votes

`go build -mod vendor` échoue à utiliser les packages vendus

Lors du déploiement de mes services Go sur Google AppEngine (standard), je reçois des erreurs décrivant une version de module introuvable, alors que tout se compile correctement.

Les modules sont sur une instance privée de Github et sont extraits dans vendor/.

Un go build -mod vendor -o /dev/null ./... fonctionne avec cloud-build-local, localement et dans Google Cloud Build. Une étiquette appelée 'v1.1.0' existe sur github.com/company/gosystem :

gosystem$ git tag
v0.0.1
v0.0.2
v0.0.3
v1.0.0
v1.1.0

Échec de la construction de l'application : [go build -o /tmp/staging172777881/usr/local/bin/start .] avec 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] échoué : 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: version inconnue v1.1.0

Un grep -RI 'gosystem@' * ne rapporte rien.

2voto

Niels Points 51

À la fin, j'ai pu faire fonctionner cela en forçant go à utiliser fournisseur, en ajoutant ceci au go.mod:

remplacer github.com/société/gosystem => ./vendeur/github.com/société/gosystem

0voto

plutov.by Points 8991

Go utilise https pour récupérer les versions/dépendances. Même si vous utilisez un vendeur, Go vérifiera quand même la version. Et comme github.com/venclave/gosystem est un dépôt privé, git ne peut pas y accéder.

Il existe quelques solutions de contournement pour cela.

1 - Utilisez ssh:

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

2 - Utilisez un jeton GitHub:

Générer GITHUB_TOKEN ici 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"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X