首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CircleCI & Golang -无法导入AWS SDK

CircleCI & Golang -无法导入AWS SDK
EN

Stack Overflow用户
提问于 2015-07-27 11:05:02
回答 2查看 768关注 0票数 1

我不确定这是否是发布这样的问题的正确位置。

我试着在CircleCI上测试我的golang项目。在dependencies阶段,执行CI

代码语言:javascript
复制
go get -u github.com/aws/aws-sdk-go/...

出现了一个错误:

代码语言:javascript
复制
package github.com/aws/aws-sdk-go/...
    imports github.com/aws/aws-sdk-go/aws
    imports github.com/aws/aws-sdk-go/aws/awserr: /home/ubuntu/sprocket-analytics-data-pipeline-v2/src/go/src/github.com/aws/aws-sdk-go is from git@github.com:aws/aws-sdk-go, should be from https://github.com/aws/aws-sdk-go

这个错误很长,上面的代码只是其中的一部分。

因此,我更新了我的circleci.yml以覆盖依赖项阶段。circleci.yml如下所示:

代码语言:javascript
复制
machine:
  timezone:
    Asia/Tokyo
  environment:
    GOPATH: /home/ubuntu/my-project/src/go
dependencies:
  override:
    - go get github.com/go-sql-driver/mysql
    - go get github.com/google/google-api-go-client/bigquery/v2
    - go get code.google.com/p/goauth2/oauth/jwt
    - go get golang.org/x/tools/cmd/cover
    - go get github.com/AlekSi/gocov-xml
    - go get github.com/jstemmer/go-junit-report
    - go get github.com/golang/mock/gomock
    - go get github.com/onsi/gomega
    - go get github.com/onsi/ginkgo/ginkgo
    - go get github.com/aws/aws-sdk-go/...
    - go get github.com/axw/gocov/...
test:
  pre:
    - go install path/to/the/package
  override:
    - go test /home/ubuntu/my-project/src/go/src/path/to/the/package

我配置中的go get github.com/aws/aws-sdk-go/...工作正常。

但是,在执行完我的circleci.yml中的所有命令之后,CI还是执行了go get -u github.com/aws/aws-sdk-go/...。它再次失败,并出现相同的错误。

以下是来自CircleCI的日志:

这个有没有走走的地方?或者我错过了什么,比如配置地址来获取go包(根据错误消息)?

提前感谢!

EN

回答 2

Stack Overflow用户

发布于 2015-07-27 11:44:26

尝试将以下内容添加到circle.yml文件中。这应该会强制执行SSH签出,而不是http签出。

代码语言:javascript
复制
checkout:
  post:
    - git config --global url.ssh://git@github.com/.insteadOf https://github.com/

然后,您应该能够删除所有依赖项覆盖。

CircleCI还有一个很好的特性,您可以使用SSH连接进行重建。如果调试有问题,请尝试在容器中手动运行命令。

票数 0
EN

Stack Overflow用户

发布于 2015-07-27 12:55:41

好的,我找到了一个解决这个问题的方法。

看起来CircleCI使用的是go 1.4,它不允许人们使用git@github.com来制作go get -u,除非你使用go get -u -f。所以我想尝试使用https来做go get -u是目前唯一的方法。

ref: issue #8850

CircleCI在~/.gitconfig中的git上有自己的配置,强制git使用git@github.com而不是https:

代码语言:javascript
复制
[url "git@github.com:"]
        insteadOf = https://github.com/
[url "ssh://git@github.com/"]
        insteadOf = https://github.com/

如果你通过ssh访问CircleCI的盒子,你可以找到这个文件。

ref

所以,我的方式是:

dependencies-pre,阶段重命名此文件,并让依赖项阶段结束,如果您仍然需要这些配置,则将其重命名。

现在,无论是将其添加到circle.yml文件中,还是由CircleCI自动执行,go get -u都能正常工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31644370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档