我使用gitlab-ci来测试,编译和部署一个小型golang应用程序,但问题是阶段花费的时间比必要的长,因为它们每次都必须获取所有依赖项。
如何在两个阶段(测试和构建)之间保持golang依赖关系?
这是我当前的gitlab-ci配置的一部分:
test:
stage: test
script:
# get dependencies
- go get github.com/foobar/...
- go get github.com/foobar2/...
# ...
- go tool vet -composites=false -shadow=true *.go
- go test -race $(go list ./... | grep -v /vendor/)
compile:
stage: build
script:
# getting the same dependencies again
- go get github.com/foobar/...
- go get github.com/foobar2/...
# ...
- go build -race -ldflags "-extldflags '-static'" -o foobar
artifacts:
paths:
- foobar
如Yan Foto所述,您只能使用项目工作区中的路径。但是您可以$GOPATH
按照Extrawurst Blog的建议将其移动到项目内部。
test:
image: golang:1.11
cache:
paths:
- .cache
script:
- mkdir -p .cache
- export GOPATH="$CI_PROJECT_DIR/.cache"
- make test
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句