2017-05-08 5 views
0

私は自分のプロジェクトでCIを設定していますが、いくつかのDLLをインストールするのに問題があります。設定は次のとおりです。repoはTFSGIT 2015サーバー上にあります。私は、VM上に構築サーバ(エージェント)をセットアップしました。コードがチェックインされると、ビルドサーバーがビルドされ、テストが実行されます。一部の内部パッケージ/ DLL(別のTFS 2010サーバー上にある)が見つからないため、ビルドに失敗します。TFSでCI/CDをセットアップする方法 - 依存関係をインポートするには?

私の質問は:これを解決する最良の方法は何ですか?私は粗いアプローチは、単にDLLをレポに追加することですが、TFS 2010サーバからDLLをインポートできる事前ビルドのステップがあるのか​​どうか疑問に思っていました。シンプルなパワーシェルスクリプトはそれをするだろうか?

私はmicrosoftスタックに慣れていないので、任意の指針/提案をいただければ幸いです。ありがとう。

答えて

2

はこれを処理するいくつかの方法がありますが、あなたはできます

  1. は、使用している機能のNUGETパッケージを作成し、内部的にこれをホストします。ここでのボーナスは、CICDの観点から適切なビルド方法で作業を行い、適切なバージョン管理を維持することで、将来、バージョンの正確なインスタンスを再構築できることを保証することです。 NUGET RESTOREステップを実行するときは、単に引数を追加するだけです:-source

    • あなたは自分のNUGETフィードを追加することができます。
    • コードで簡単に作成できます。 Hanselman: Creating your own Nuget Feed
    • サードパーティのホストを使用することができます。
  2. は、メタデータとしてバージョンの詳細を適用し、バージョン管理システムにリモートTFSサーバーのうち、これらのファイルをコピーするビルドステップを使用します(これらのビルドリモートTFSがバージョン格納していないと仮定すると)。繰り返しますが、ここで懸念されるのは、特定の時間に効果的にロールバックできることを完全に保証できることです。

  3. TFSサーバーから特定のビルドバージョンアーティファクトを取得するためにPowershellを使用します。ここでは、最新のビルドを取得するスクリプトの例を示します。 DLLプロジェクトでビルドが利用されている場合は、これを使用できます。これは、特定のビルドを取得するために変更するのは簡単ではありません。私はいくつかのビルド変数を介して、個人的にこれを行います。ここで最も注目すべきは、 "DropLocation"です。これは、Artifactのファイルドロップになります。 Mike Poulson: Get last known good build via Powershell

  4. Powershellスクリプトを直接使用して、ビルドスクリプトで他のTFSのデータをコピーします。最低限、アーティファクトにこれを保存すればロールバックするだけでも十分ですが、私は、特に大きなプロジェクトでも後方に構築できるようにしたいと思います。ちょっとしたことで、あなたのアーティファクトのストレージで劇的な何かが起こった場合。この回答はあなたを助けることができます:Copy files from bfs version control to directory これを助けるpowershellツールもあります。

これを解決する方法は数多くありますが、私の提案は一歩前進して正しい方法で設計することです。この例では、リモートビルドが実行され、依存する成果物を作成する場合、それらを適切に管理し、特定のビルドに関連してキャプチャすることを確認したいとします。だから私はまだ自分のNUGETフィードを利用することを提案しています。

+0

ワウ。どうもありがとうございます。より良い答えを求めることができませんでした!私たちの即時のニーズ(私は、ボード上にmgmtを取得するためのすべてのことの「概念の証明」をしようとしています)では、#2が機能します。おそらく、これはビルド定義のビルド前のステップの一部ですか?すべてがうまくいくと仮定#1は、特定のビルドに戻る必要がある場合、バージョニングがチームに正確なデータを与えるので、確実に行く方法です。再度、感謝します。 – jrDeveloper

関連する問題