2016-07-07 6 views
3

私はGoDepを使用してプロジェクトの依存関係を解決しています。 私の問題は、依存関係のリポジトリが削除され、プロジェクトが構築されないということです。go依存関係を保存するには?

私はArtifactoryや他のソリューションに依存関係を保存するための解決策を探しています。

アドバイスをしてください。

よろしくお願いいたします。

答えて

1

GoDepsがこれを行うための標準的な方法かもしれませんが、通常は少し複雑です。私の意見では、カスタムGoPathを設定し、コードに依存関係を含める(.gitフォルダを削除する)Makefileを使用してください。この方法でバージョンがフリーズし、誰もgodep restoreまたはこれに類するものを行う必要はありません。

make deployのようなコードを作成し、GoFmtを実行し、pkgファイルを消去し、独自のGoPathにインストールしますbin/し、バイナリを実行して実行するだけです。

不足している依存関係をインストールするmake installのような別の1つを持つことができます。

inotify-toolsを使ってLinuxベースのシステムで変更を探し続け、コールを再構築するために、これを自分のMakefileで使って時計を作成することができました。

内部的にすべてのコマンドは標準のgoコマンドを使用しますが、GoDepsを取り除きJSONを維持します。依存関係をアップグレードするには、ディレクトリ全体をカスタムパスに手動でコピーして.git /フォルダを削除する必要があるため、少し問題になる可能性があります。

弊社ではこの方法を使用しており、私たちにとっては非常にうまく機能しているようです。

さらに、この方法では、基本的には、$GOPATH/src/github.com/repoName/種類のパスを取得できます。

私が不明な場合は、私に知らせてください、私はgithubに要点を追加します。

+3

また、makefileにカスタム '$ GOPATH'を設定することなく、すべてのことを行うgovendor(https://github.com/kardianos/govendor)を使用するだけです(' go build 'と同様、そして率直に言って、' make 'はそんなもののために地獄として遅いです)。 Govendorはあなたのdepsを '/vendor'に保存します。これはあなたのコードをチェックし、信頼できるビルドを可能にします。 Go 1.6(または1.5を使ってベンダーのenvvarを設定する)を使用している限り、 '' go'ツールは '/ vendor'フォルダを自動的に' '好きです ''ので、カスタム' $ GOPATH'はまったく必要ありません。 – Kaedys

+1

Ahh stackoverflow ..毎日何か新しいことを教えてくれる!ありがとう、私はそれを見てみましょう。 – ishaan

+0

ソースコードでバイナリファイルを** source **コントロールにチェックインしないでください。しないでください。 – JBaruch