Gitlab CI - не удалось выполнить задание Auto DevOps. Невозможно выбрать пакет сборки для проекта Go? - PullRequest
0 голосов
/ 08 ноября 2018

Не удалось выполнить задание My Gitlab CI Auto DevOps с

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

Я прошел

и я до сих пор не уверен, куда мне положить buildpack.

Мой должен быть heroku-buildpack-go, из которого я потерял трек, откуда я это взял.

Мой репо состоит только из одного символа README.md, а "Hello, площадка" main.go.

Вывод:

Благодаря подробному объяснению Дэвида, я смог запустить DevOps с правильным билдом:

Из этого я могу сделать вывод, что ваш единственный файл .go в корне дерева каталогов не соответствует критериям активации для автоматического построения проектов Go. Я бы предложил выбрать одного из менеджеров зависимостей в приведенных выше требованиях и изменить ваш проект для его поддержки.

FTA, я только что сделал touch go.mod, затем git add & git push, и AutoDevops действительно начал строить мой проект GO.

Однако мне кажется, что Gitlab AutoDevops не может создавать какие-либо проекты GO очень легко, так как я получаю следующую ошибку (с переменной проекта 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

Более простое решение - использовать файл .gitlab-ci.yml, задокументированный в
https://blog.boatswain.io/post/build-go-project-with-gitlab-ci/
(и затем в Gitlab CI - Запустите Shared Runner для обычных репо ).

1 Ответ

0 голосов
/ 11 ноября 2018

Из документации AutoDevops :

Auto Build создает сборку приложения одним из двух способов:

  • При наличииDockerfile, он будет использовать сборку docker для создания образа Docker.
  • В противном случае он будет использовать Herokuish и Heroku buildpacks для автоматического обнаружения и сборки приложения в Docker.image.

Затем рассмотрим критерии активации сборки в соответствии с Heroku Go buildpack документация:

Этот сборочный пакет обнаружит вашхранилище как Go, если вы используете:

или более конкретно для godep, govendor или GB :

Пакет Heroku Go используется, когда приложение встречается с одним из следующихиз-за требований:

  • имеет файл Godeps/Godeps.json, идентифицирующий приложение как управляемое godep ;
  • имеет файл vendor/vendor.json, идентифицирующий приложениекак управляемый govendor ;
  • имеет каталог src, который имеет подкаталоги, содержит один или несколько файлов .go, идентифицируя приложение как управляемое gb .

Из этого я могу сделать вывод, что ваш единственный .go файл в корне дерева каталогов не соответствует критериям активации для автоматического построения проектов Go.Я бы предложил выбрать одного из менеджеров зависимостей в приведенных выше требованиях и изменить ваш проект для его поддержки.После этого AutoDevops должен начать сборку вашего проекта.

Если после этого у вас все еще будут проблемы, эта заметка отладки может помочь:

После проверки того, чтопроект отвечает требованиям buildpack;если это все равно не удается, установка переменной проекта TRACE=true включит подробное ведение журнала, что может помочь продолжить устранение неполадок.

...