2016-07-20 37 views
0

我正在开发Golang项目并使用TravisCI。作为依赖工具,使用Godeps。如何在Travis-ci上管理建筑物golang项目

运行git push测试后,发生如下错误。

# command-line-arguments 
cmd/proj/main_test.go:6:2: cannot find package 
"command-line-/vendor/github.com/xxxxx/xxxxx/abc" in any of: 
/home/travis/.gimme/versions/go1.6.linux.amd64/src/command-line-/vendor/github.com/xxxxx/xxxxx/xxx 

为什么找不到包? 作为构建日志,似乎通过get get command很好地工作。

我的travis.yml在这里。

language: go 
sudo: false 
go: 
    - 1.6 
    - tip 

services: 
    - redis-server 

env: 
    global: 
    - secure: "xxxxx" 

script: 
    - go fmt ./... 
    - go vet $(go list ./... | grep -v /vendor/) 
    - go test -v cmd/xxxx/*.go -xxxx ${XXXXX} 

before_install: 
    - go get github.com/tools/godep 

branches: 
    only: 
    - master 

去版本的提示是可以的。 但1.6或1.5版本无法正常运行。

我该如何管理这种情况?

+0

如果你在/ vendor下检查了你的依赖到git中,那么Travis不需要去获取godep。对于1.5,您需要将GO15VENDOREXPERIMENT env var设置为1,但godep本身无关紧要。 – voutasaurus

回答

1

Go 1.6管理依赖关系的方式与Go 1.5和以前的版本不同。

1.6介绍/vendor文件夹。每当您导入依赖项时,如果库存在/vendor中,则加载该库。

行为在1.5中引入,但在该版本中它是实验性的。这意味着您需要使用GO15VENDOREXPERIMENT=1环境变量启用它。

如果您只需要提供对1.5和1.6的支持,那么只需在构建1.5个项目时将该变量添加到Travis。

如果您还需要为1.5之前的版本扩展支持,那么它会更复杂一点。

+0

谢谢你的建议。 虽然我设置了版本1.6和山雀,但提示版本可以工作。但1.6不能。 而travis似乎试图在供应商目录中找到软件包。 – Harry

+0

@收集整本Travis日志会很有帮助。 –