gitlab-ci с Golang не создает правильную структуру папок

Наличие проекта Golang и рабочей области Go. Я пытаюсь запустить свой тест, но у меня следующая ошибка:

api/server.go:8:2: cannot find package "github.com/braintree/manners" in any of:
    /usr/local/go/src/github.com/braintree/manners (from $GOROOT)
    /go/src/github.com/braintree/manners (from $GOPATH)

Проблема заключается в том, что при клонировании проекта он делает это в этой папке:

Клонирование в '/builds/compagny/project'...

$GOPATH is /go

а затем внутри этой папки у меня должно быть что-то вроде: src/github.com/compagny/project

Я могу : export GOPATH=$(pwd), но это не помогает, ожидайте папку /src.

Но у меня нет контроля, где gitlab-ci клонирует проект, не так ли?

мой gitlab-ci.yml:

stages:
  - build
  - test

build-my-project:
  image: golang:1.6
  stage: build
  script:
    - go get -u github.com/Masterminds/glide
    - glide install
    - go build

test-my-project:
  image: golang:1.6
  stage: test
  script:
    - go get -u github.com/Masterminds/glide
    - glide install
    - go test -v ./...

person Maxime Roussin-Bélanger    schedule 11.08.2016    source источник
comment
Вы должны запустить go get ... для загрузки зависимостей проекта.   -  person Martin    schedule 11.08.2016
comment
@mgansler glide работает   -  person Maxime Roussin-Bélanger    schedule 12.08.2016


Ответы (2)


Используйте оболочку go, представленную на изображении, вместо glide. Он создаст символическую ссылку в нужном месте, а затем go get ваши зависимости. Например.

build-my-project:
  image: golang:1.6
  stage: build
  script:
    - go-wrapper download
    - go build

Таким образом, оболочка go знает правильный путь вашего проекта, который вам нужно будет добавить в качестве комментария импорта в ваш main.go, например:

package main // import "github.com/your/repo"
person Adam B    schedule 23.10.2016

В качестве обходного пути вы можете скопировать клонированный проект в папку GOPATH.

    script :
    - mv /builds/ $GOPATH/src/github.com/company/project
person Irfan Nurhakim    schedule 02.09.2016