1

このような質問を投稿するのに適切な場所かどうかはわかりません。

CircleCI で golang プロジェクトをテストしようとしていました。のフェーズでdependencies、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.ymlgo get -u github.com/aws/aws-sdk-go/...CI によってとにかく実行されました。そして、同じエラーで再び失敗しました。

CircleCI のログは次のとおりです。

ここに画像の説明を入力

これにはウォークアラウンドがありますか?それとも、(エラー メッセージに従って) go パッケージを取得するためのアドレスの構成など、何かを見逃していましたか?

前もって感謝します!

4

2 に答える 2

0

わかりました、これについてのウォークアラウンドを見つけました。

CircleCI は go 1.4 を使用しているようで、使用しない限りgit@github.commakeを使用できませんでした。したがって、httpsを使用してこれを行うことが現在唯一の方法であると考えました。go get -ugo get -u -fgo get -u

参照:問題#8850

また、CircleCI には、https の代わりにgit を強制的に使用するためgitの独自の構成があります。~/.gitconfiggit@github.com

[url "git@github.com:"]
        insteadOf = https://github.com/
[url "ssh://git@github.com/"]
        insteadOf = https://github.com/

CircleCI のボックスに ssh でアクセスすると、このファイルを見つけることができます。

参照

だから、私のやり方は:

dependencies-preの段階でこのファイルの名前を変更し、依存関係の段階を終了させます。その後、これらの構成が必要な場合は名前を元に戻します。

ファイルgo get -uに追加しても、CircleCIによって自動的に実行されても、正常に動作するようになりました。circle.yml

于 2015-07-27T04:55:40.687 に答える
0

以下を circle.yml ファイルに追加してみてください。これにより、http チェックアウトではなく SSH チェックアウトが強制されます。

checkout:
  post:
    - git config --global url.ssh://git@github.com/.insteadOf https://github.com/

その後、依存関係のオーバーライドをすべて削除できるはずです。

CircleCI には、SSH 接続で再構築できる優れた機能もあります。デバッグに問題がある場合は、コンテナー内でコマンドを手動で実行してみてください。

于 2015-07-27T03:44:26.213 に答える