gitlab-ci 与 Golang 不创建正确的文件夹结构

gitlab-ci with Golang do not create the right folder structure

有一个 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 ./...

解决方法是将克隆的项目复制到 GOPATH 文件夹。

    script :
    - mv /builds/ $GOPATH/src/github.com/company/project

使用图片中提供的 go wrapper 而不是 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"