Я развертываю приложение Go через Jenkins и запускаю несколько тестов.
Все мои тесты проходят локально, даже если я удаляю все сторонние библиотеки из моей GOPATH, потому что я заполнил свою папку vendor
через godep save
.
Однако, когда Дженкинс запускает мои тесты, он сообщает о несовместимости типов между версией GitHub и версией поставщика:
mypackage/MyFile_test.go:65:22: cannot use MY_VARIABLE
(type "github.com/gocql/gocql".UUID) as type
"myproject/vendor/github.com/gocql/gocql".UUID in assignment
Я пытался использовать Dep
(официальный менеджер поставщиков команды Go) вместо godep
, но это не помогло решить проблему.
Нужно ли указывать моим тестам использовать «myproject / vendor / github.com / gocql / gocql» вместо «github.com/gocql/gocql»? ( ОБНОВЛЕНИЕ: Видимо, это незаконно и выдаст ошибку must be imported as github.com/gocql/gocql
.)
Как мне это решить?
ОБНОВЛЕНИЕ:
- Я использую Go 1.12.1 как на своей локальной машине, так и на сервере Jenkins.
- Я не использую
go modules
любого рода.
Вот раздел Go моего кода Jenkins Pipeline. Может быть, это как-то связано с этой проблемой?
steps {
// Create our project directory.
sh 'cd ${GOPATH}/src'
sh 'mkdir -p ${GOPATH}/src/myproject'
// Copy all files in our Jenkins workspace to our project directory.
sh 'cp -r ${WORKSPACE}/* ${GOPATH}/src/myproject'
// Copy all files in our "vendor" folder to our "src" folder.
sh 'cp -r ${WORKSPACE}/vendor/* ${GOPATH}/src'
// Build the app.
sh 'go build'
// Remove cached test results.
sh 'go clean -cache'
// Run Unit Tests.
sh 'go test ./... -v -short'
}