web-dev-qa-db-fra.com

Gitlab CI - Échec du travail Auto DevOps, impossible de sélectionner un buildpack pour un projet Go?

Mon travail Gitlab CI Auto DevOps a échoué avec

Status: Downloaded newer image for gliderlabs/herokuish:latest
       -----> Unable to select a buildpack
ERROR: Job failed: exit code 1

J'ai traversé 

et je ne sais toujours pas où je devrais mettre le paquet de construction. 

Le mien devrait être heroku-buildpack-go, dont j'ai perdu la trace d'où je tire cela. 

Mon référentiel consiste uniquement en un seul caractère README.md et le "Hello, playground" main.go.

Conclusion:

Grâce à l'explication complète de David, j'ai pu démarrer DevOps avec le buildpack correct: 

Je conclus de cela que votre fichier .go unique à la racine de l’arborescence ne correspond pas aux critères d’activation pour la construction automatique de projets Go. Je suggère de choisir l'un des gestionnaires de dépendance parmi les exigences ci-dessus et de modifier votre projet pour le prendre en charge. 

FTA, je viens de faire touch go.mod puis git add & git Push et AutoDevops a effectivement commencé à construire mon projet GO. 

Cependant, il me semble que Gitlab AutoDevops n’est pas capable de construire très facilement des projets GO, car j’obtiens l’erreur suivante (avec la variable de projet TRACE=true):

...
        !!    The go.mod file for this project does not specify a Go version
        !!    
        !!    Defaulting to go1.11.1
        !!    
        !!    For more details see: https://devcenter.heroku.com/articles/go-apps-with-modules#build-configuration
        !!    
-----> Installing go1.11.1
-----> Fetching go1.11.1.linux-AMD64.tar.gz... done
        !!    Installing package '.' (default)
        !!    
        !!    To install a different package spec add a comment in the following form to your `go.mod` file:
        !!    // +heroku install ./cmd/...
        !!    
        !!    For more details see: https://devcenter.heroku.com/articles/go-apps-with-modules#build-configuration
        !!    
-----> Running: go install -v -tags heroku .
       go: cannot determine module path for source directory /tmp/build (outside GOPATH, no import comments)
ERROR: Job failed: exit code 1

La solution la plus simple consiste à utiliser le fichier .gitlab-ci.yml à la place, documenté dans
https://blog.boatswain.io/post/build-go-project-with-gitlab-ci/
.__ (et suivi à Gitlab CI - Démarrer Shared Runner pour un repos normal ).

4
xpt

Dans la documentation AutoDevops :

Auto Build crée une construction de l'application de l'une des deux manières suivantes:

  • S'il existe un fichier Docker, il utilisera la génération Docker pour créer une image Docker.
  • Sinon, il utilisera Herokuish et Heroku buildpacks pour détecter automatiquement et construire l'application dans une image Docker.

Ensuite, examinons les critères d’activation de la compilation, comme indiqué dans la documentation de Heroku Go buildpack :

Ce buildpack détectera votre référentiel comme Go si vous utilisez soit:

Ou plus spécifiquement pour godep, gouverneur ou GB :

Le buildpack Heroku Go est utilisé lorsqu'une application répond à l'une des conditions suivantes:

  • a un fichier Godeps/Godeps.json, identifiant l'application comme étant gérée par godep ;
  • a un fichier vendor/vendor.json, identifiant l'application comme étant gérée par govendor ;
  • a un répertoire src, qui comporte des sous-répertoires, contient un ou plusieurs fichiers .go, identifiant l'application comme étant gérée par gb .

J'en conclus que votre seul fichier .go à la racine de l'arborescence ne correspond pas aux critères d'activation pour la construction automatique de projets Go. Je suggère de choisir l'un des gestionnaires de dépendance parmi les exigences ci-dessus et de modifier votre projet pour le prendre en charge. Après cela, AutoDevops devrait commencer à construire votre projet.

Si vous rencontrez toujours des problèmes après cela, cette note de debugging pourrait vous aider:

Après s’être assuré que le projet répond aux exigences du buildpack; si le problème persiste, la définition d'une variable de projet TRACE=true permet d'activer la journalisation détaillée, ce qui peut aider à poursuivre le dépannage.

1
David Planella