Github CircleCI&;戈朗-Can';t导入AWS SDK

Github CircleCI&;戈朗-Can';t导入AWS SDK,github,go,aws-sdk,circleci,aws-sdk-go,Github,Go,Aws Sdk,Circleci,Aws Sdk Go,我不确定这是否是发布此类问题的正确位置 我试图在CircleCI上测试我的golang项目。在依赖项阶段,执行CI go get -u github.com/aws/aws-sdk-go/... 发生了一个错误: 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

我不确定这是否是发布此类问题的正确位置

我试图在CircleCI上测试我的golang项目。在
依赖项
阶段,执行CI

go get -u github.com/aws/aws-sdk-go/...
发生了一个错误:

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
类似于:

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/…
运行良好

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

以下是CircleCI的日志:

这里有没有步行的地方?或者我遗漏了什么,比如配置地址以获取go包(根据错误消息)


提前谢谢

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

checkout:
  post:
    - git config --global url.ssh://git@github.com/.insteadOf https://github.com/
然后,您应该能够删除所有依赖项覆盖


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

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

checkout:
  post:
    - git config --global url.ssh://git@github.com/.insteadOf https://github.com/
然后,您应该能够删除所有依赖项覆盖


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

好的,我找到了一个解决方法

CircleCI似乎正在使用go 1.4,它不允许人们使用
git@github.com
使
转到get-u
,除非您使用
转到get-u-f
。 所以我想尝试使用https来执行
go get-u
是目前唯一的方法

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

[url "git@github.com:"]
        insteadOf = https://github.com/
[url "ssh://git@github.com/"]
        insteadOf = https://github.com/
如果您通过ssh访问CircleCI的box,您可以找到此文件

因此,我的方法是:

dependencies pre阶段重命名此文件,并让dependencies阶段完成,如果仍然需要这些配置,请重新命名它


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

好的,我找到了一个解决方法

CircleCI似乎正在使用go 1.4,它不允许人们使用
git@github.com
使
转到get-u
,除非您使用
转到get-u-f
。 所以我想尝试使用https来执行
go get-u
是目前唯一的方法

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

[url "git@github.com:"]
        insteadOf = https://github.com/
[url "ssh://git@github.com/"]
        insteadOf = https://github.com/
如果您通过ssh访问CircleCI的box,您可以找到此文件

因此,我的方法是:

dependencies pre阶段重命名此文件,并让dependencies阶段完成,如果仍然需要这些配置,请重新命名它


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

谢谢您的评论。我试图强制git使用
git@github.com
以签出,并删除所有依赖项覆盖。问题仍然存在。我认为这里的问题是go命令
go-get
只允许用户使用https在go 1.4中获取包。这是一本书。从1.4.1开始,根据[.我使用ssh访问circleci框,并通过
go-get-u-f
管理go-get,因此我认为找到一种在circleci上使用https的方法是解决问题的办法。感谢您的评论。我已经尝试强制git使用
git@github.com
以签出,并删除所有依赖项覆盖。问题仍然存在。我认为问题在于这里的em是go命令
go-get
只允许用户在go 1.4中使用https获取软件包。这里是一个。这个限制似乎从1.4.1开始根据[。我使用ssh访问circleci框并通过
go-get-u-f
管理go-get,因此我认为找到一种在circleci上使用https的方法是出路。