3

私は、日常業務に継続的な統合を実装しようとしています。私たちのチームでは、ワークステーション上の Visual Studio でコードをビルドして展開するだけから、Visual Studio を使用せずに MSBuild.exe を使用してビルド サーバー (Jenkins) で自動化することに移行しています。

プロジェクトには、Automap などの参照への外部依存関係があります。automap (たとえば) dll がビルド サーバー上にないため、msbuild の実行は明らかな理由で失敗します。ビルドの一部にする必要がある他の dll があります。例として automap を使用しています。

では、自動ビルドの一部としてビルド サーバーへの依存関係を取得する最善の方法は何でしょうか? 「lib」フォルダーの使用に関する言及を見たことがありますが、それをどこに置くべきか (私のプロジェクト、ファイルシステム、SVN ...?)、およびビルドサーバーがどのようにそこに到達するのかがよくわかりません。また、NuGet は依存関係で何かを実行できることも読みましたが、私のビルド サーバーはインターネットに接続されておらず、作成した NuGet パッケージをビルドにプルさせる方法と、その方法がわかりません。一緒に働きます。

編集: Subversion を使用していますが、TeamCity を購入する必要があり、資金調達の可能性がゼロであるため、TeamCity を使用できません。

4

4 に答える 4

5

SVN + CCNet を実行します。次のようなサードパーティ ライブラリ用の SVN リポジトリがあります。

/foo/foo-1.2.3
/foo/foo-1.4.0
/bar/bar-1.0.0

つまり、ライブラリごとに 1 つのディレクトリがあり、使用可能なバージョンごとにサブディレクトリがあります。

1 つの規則として、ディレクトリには元のライブラリが含まれている必要があります。つまり、解凍してコミットし、変更を加えることはできません。

プロジェクトにライブラリが必要な場合は、lib-directory を追加し、サードパーティ リポジトリからライブラリへのリンク (svn:externals) を入力します。ここで重要なのは、ローカル ディレクトリ名にバージョン番号を含めないことです。foo-1.4.0 が必要な場合、lib ディレクトリの svn:externals リンクは次のようになります。

foo https://svn-server/3rdparty/foo/foo-1.4.0

つまり、最終的に /lib/foo になります。そうすれば、svn:externals リンクを新しいバージョンを指すように変更するだけでバージョンのアップグレードがはるかに簡単になり、(ファイル名が変更されていない限り) すべてのプロジェクトが自動的にそれを取得してコンパイル可能になります。 .

NuGetに関しては..価値があるよりも多くの問題がありますが、意見は異なります:)

それが役立つことを願っています

于 2012-06-09T18:19:33.200 に答える
5

私は stmax のソリューションが気に入っていますが、現時点では少し面倒かもしれません。

最も簡単な方法は、リポジトリに lib ディレクトリを作成し、すべてのサードパーティ アセンブリをそのディレクトリに追加することです。 すべてのプロジェクトを更新して、この lib ディレクトリからサードパーティ アセンブリを参照します。すべてをチェックインします。次のビルドを行うためにビルド サーバーが起動すると、最新の変更がプルされます。これには、新しい lib ディレクトリとプロジェクト参照の変更が含まれます。グリーンビルド!

于 2012-06-09T23:17:39.237 に答える
1

内部パッケージ リポジトリをセットアップできるため、NuGet の詳細を読む必要があります。

http://weblogs.asp.net/jgalloway/archive/2011/02/02/downloading-a-local-nuget-repository-with-powershell.aspx

于 2012-06-09T11:03:43.190 に答える
1

システムがどれほど洗練されていても、最初の目標は CI を実行することです。システムを構築するときは、多くの場合、「lib ディレクトリ」オプションが最も簡単です。バイナリを Subversion にチェックインします。それは醜いですが、それはあなたを始めさせ、あなたのビルドレベルは再現可能になります。これは必須です. これが機能したら、ニーズに合った外部依存バージョン管理システム (おそらく Nuget) を調査して選択します。

補足として、TeamCity の無料デプロイが機能しないことを詳細に確認してください。最後に、ライセンスが必要になるには、多数の調整されたプロジェクトまたは多数のビルド エージェントが必要であることを確認しました。

于 2012-06-09T17:31:27.110 に答える