在Jenkins CI中随机获得失败

Recently I get an issue on go get when processing build on Jenkins: the Go get command will be randomly failed when trying to build images. For example, here are several lines in my Dockerfile:

go get -u golang.org/x/lint/golint && \
go get github.com/glaslos/ssdeep && \
go get github.com/mitchellh/mapstructure && \
go get github.com/denisenkom/go-mssqldb && \
go get -u github.com/go-sql-driver/mysql && \
go get github.com/hashicorp/consul/api && \
go get -u github.com/gin-gonic/gin && \
go get -u github.com/gocql/gocql && \
go get github.com/satori/go.uuid && \
go get github.com/golang/protobuf/protoc-gen-go && \

And I will get a fail like:

go get -u github.com/go-sql-driver/mysql cd .; git clone https://github.com/go-sql-driver/mysql /root/go/src/github.com/go-sql-driver/mysql Cloning into '/root/go/src/github.com/go-sql-driver/mysql'... fatal: unable to access 'https://github.com/go-sql-driver/mysql/': Could not resolve host: github.com package github.com/go-sql-driver/mysql: exit status 128

The failed go packages are randomly distributed. Does anyone have any idea to avoid this issue? Like tools that get go package without go get, etc.

Many thanks!

TLDR; Just commit and push your vendor folder.

It may be caused by a network issue. What I suggest is that you use a vendoring solution (like dep or modules) and have all your dependencies in a vendor folder, that way you make sure that you are able to replicate builds. Even Kubernetes (https://github.com/kubernetes/kubernetes) has its dependencies in a vendor folder in their repository.