使用Golang的gitlab-ci不会创建正确的文件夹结构

时间:2016-08-11 02:21:22

标签: go gitlab gitlab-ci

拥有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),但这没有帮助,Go期待一个/ 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 ./...

2 个答案:

答案 0 :(得分:2)

使用图像中提供的go包装而不是滑动。它将在适当的位置创建一个符号链接,然后go get您的依赖项。 E.g。

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"

答案 1 :(得分:0)

要解决此问题,您可以将克隆项目复制到GOPATH文件夹。

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