継続的インテグレーションにおいて、外部アプリケーションの依存関係に対処する最善の方法は何ですか?

StackOverflow https://stackoverflow.com/questions/119724

質問

TeamCity Continuous Integration サーバーを使用する際に、最適な対処方法が不明ないくつかの問題が判明しました。つまり、アプリケーションが CI サーバー上で必要とする外部アプリケーションを参照する方法です。

この問題は当初、Crystal Reports への依存関係で判明したため、当面の問題を修正するために Crystal Reports をサーバーにインストールしました。ただし、より多くのアプリケーションを CI サーバーに移行するにつれて、より多くの依存関係が見つかるようになります。

ここでの最善の戦略は何でしょうか?必要なアプリケーションをサーバーにインストールし続けるためですか?

ありがとう

役に立ちましたか?

解決

可能であれば、外部依存関係をビルド システムの一部にします。たとえば、インストーラーをバージョン管理システムにチェックインし、それをチェックアウトしてサイレント モードで実行するステップを用意します (多くのインストーラーは、コマンドライン /s を使用してユーザー アクションを行わないモードをサポートしている場合があります)。

こうすることで、ブランチ用または新しいハードウェア用に別のビルド マシンをセットアップする必要がある場合でも、すべてを再現可能です。

他のヒント

ビルドを完了するために実際のアプリケーションが必要な場合は、ビルド サーバーへのアプリケーションのインストールを続行する必要があります。

アプリケーションから DLL またはアセンブリへの参照が必要なだけの場合、私の会社で行ったことは、特定のアプリケーションに必要な参照のインストール可能な「SDK」を作成し、よく知られている開発マシンおよびビルド マシンにインストールすることです。ソリューションが参照するライブラリ ディレクトリ。

ビルド マシンでは、ビルド前の手順によって正しいバージョンの依存関係がインストールされ、完了時にそれらがクリーンアップされます。

最近、ビルド プロセスでアクティブ化されるビルド マシンに仮想マシンを使用することに移行しました。これらの VM には、ビルド前として SDK がインストールされ、ビルド後にスナップショットの状態に復元されます。アンインストールがほぼ不可能な依存関係がいくつかあったため、これにより毎回クリーンな出発点が得られました。

Maven を使用してビルドする場合は、pom.xml ファイルで依存関係を定義できます。その後、必要に応じて自動的にダウンロードされます。

正しくフォローできたのか分かりませんが…

あなたのアプリケーションはビルド中にこの外部アプリに依存していると思いますか?その場合、CI を実行しているマシン上にあるはずです...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top