問題タブ [build-process]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net - ASP.NET Web アプリケーションのビルド出力 - すべての展開ファイルを含めるにはどうすればよいですか?
ASP.NET Web アプリケーションをビルドすると、Web サイトのコードを含む .dll ファイルが生成されます (これは素晴らしいことです)。ただし、Web サイトにはすべての .aspx ファイルとその関連ファイルも必要であり、これらを正しい場所に配置する必要があります。ディレクトリ構造。各ビルドの結果として、これをすべて 1 つのディレクトリに入れるにはどうすればよいですか? ソース ディレクトリから適切なファイルを選択しようとするのは面倒です。
最終結果は、xcopy でデプロイ可能になるはずです。
更新:私が認識している Publish コマンドを手動で使用する必要はありません。アプリケーションが必要とするファイルの完全なセットをビルド出力にしたい - これは、MSBuildを実行することで、ファイルの完全なセットも 1 か所で取得できることを意味します。
version-control - ビルド バージョンを管理するための最適なビルド プロセス ソリューション
いくつかの独立したアプリケーションを使用して、かなり複雑なプロジェクトを実行しています。ただし、これらはいくつかの共有コンポーネントを使用します。だから私は以下のようなソースツリーを持っています。
- 私のプロジェクト
- アプリケーションA
- 共有1
- 共有2
- アプリケーションB
- アプリケーション C
すべてのアプリケーションには、プロジェクトと必要なすべての共有リソースをビルドする独自の MSBuild スクリプトがあります。これらのビルドは、CruiseControl 制御の継続的インテグレーション ビルド サーバーでも実行します。
アプリケーションがデプロイされると、複数のサーバーにデプロイされて負荷が分散されます。これは、異なるサーバーのそれぞれにどのビルド/リビジョンが展開されているかを追跡することが非常に重要であることを意味します (「1.0.0.68」など、DLL バージョンに現在のバージョンが必要です)。
何かが意図したとおりに機能しなかった場合にロールバックできるようにビルドされたリビジョン/ビルドを再作成できることも同様に重要です (そうです、それは起こります...)。現在、ソース管理に SourceSafe を使用していますが、その正当な理由を示すことができれば、変更することも可能です (SS 現在のところ、実際には問題なく動作しています)。
私たちが従おうとしているもう 1 つの原則は、さらに展開する統合サーバーによってビルドおよびテストされたコードのみであるということです。
「CrusieControl ビルド ラベル」ソリューション
上記を解決するためにいくつかのアイデアがありました。1 つ目は、継続的インテグレーション サーバーでプロジェクトをビルドし、ローカルにデプロイしてテストすることでした (現在はそれを実行しています)。おそらく知っているように、CruiseControl でビルドが成功するとビルド ラベルが生成されます。これを使用して、実行可能ファイルの DLL バージョンを設定できると思います (つまり、ビルド ラベル 35 は「1.0.0.35」のような DLL を作成します)。このビルド ラベルを使用して、完全なソース ツリーにラベルを付けるというアイデアもありました。その後、おそらくそのラベルでチェックアウトし、後でビルドを再作成できます。
完全なツリーにラベルを付ける理由は、実際のアプリケーション コード (ソース ツリーの 1 か所にある) だけでなく、すべての共有アイテム (ツリーの別の場所にある) も含めるためです。したがって、「アプリケーション A」のビルドが成功すると、ツリー全体にラベル「ApplicationA35」などのラベルが付けられます。
ただし、CruiseControl で生成されたビルド ラベルにアクセスできなくなるため、デプロイ前にこのビルドを再作成して DLL バージョンを設定すると、問題が発生する可能性があります。すべての CrusieControl ビルド ラベルがすべてのプロジェクトで一意である場合、ラベル付けに番号のみを使用できますが、そうではありません (アプリケーション A と B の両方が同時にビルド 35 である可能性があります)。ラベル。したがって、SourceSafe ラベルは「Application35」です。ビルド 35 をビルドしたら、ビルド 34 を再作成し、1.0.0.34 を DLL バージョン番号に設定するにはどうすればよいですか?
「改訂番号」ソリューション
たとえば、Subversion はチェックインのたびにソース ツリー全体のリビジョン番号を作成すると誰かが私に言いましたが、これは本当ですか? SourceSafe に似たようなものはありますか? これが正しければ、最新版を取得して CruiseControl サーバー上でビルドするときにそのリビジョン番号を取得するという考え方です。リビジョン番号は、DLL のバージョン番号 (たとえば、「1.0.0.5678」) を設定するために使用できます。その後、必要に応じて Subversion のこの特定のリビジョンを取得し、そのアプリケーションとすべての共有アイテムを含めて、過去の特定のバージョンを再作成できると思います。それは機能し、これも SourceSafe を使用して実現できますか?
要約する
したがって、主な要件は次の 2 つです。
- ビルドおよび展開された DLL のビルド/リビジョン番号を追跡できます。
- 過去のリビジョン/ビルドを再構築し、そのビルドの実行可能ファイルに古いビルド/リビジョン番号を設定できるようにします (要件 1 に準拠するため)。
では、これをどのように解決しますか?あなたの好みのアプローチは何ですか? また、それをどのように解決しますか? (または、まったく異なるアイデアをお持ちですか?) **詳細な回答をお願いします。**
おまけの質問リビジョン番号とビルド番号の違いは何ですか? また、両方が本当に必要になるのはいつですか?
apache-flex - ant/nant での Flex プロジェクトのビルド
私の会社では、Flex プロジェクトでビルドが壊れるという問題が繰り返し発生しています。この問題は主に、開発者がローカル マシンで行うビルドが、ビルド マシンで発生するビルドと根本的に異なるために発生します。開発者は を使用してプロジェクトをビルドしてFlexBuilder/eclipse
おり、ビルド マシンはコマンド ライン コンパイラを使用しています。必然的に、{projectname}-config.xml
ビルドを実行するおよび/またはバッチ ファイルが Eclipse で使用されるプロジェクト ファイルと同期しなくなるため、ビルドは開発者のマシンでは成功しますが、ビルド マシンでは失敗します。
私たちは、FlexBuilder のプロジェクト ファイルをファイルに変換するユーティリティ プログラムを作成する道を歩み始めましたが{projectname}-config.xml
、a) 文書化されておらず、b) 恐ろしいハックです。
構成ファイルを取得するために -dump-config スイッチを調べましたが、これにはいくつかの問題があります。マシン)、および 2) IDE から実行した場合にのみ正しく機能するため、ビルド プロセスに組み込むことはできません。
明日は、いくつかのオプションについて説明しますが、どちらもあまり好きではありません。
a)チェックイン後のイベントを Subversion に追加して、これらの絶対参照を削除するか、
b)絶対参照を削除するビルド前のプロセスを追加します。
私たちがこの問題に遭遇した最初の開発者グループであるとは信じられませんが、Google で適切な解決策を見つけることができません。他のグループはこの問題にどのように対処しましたか?
build-process - Rational Robot を使用した回帰テスト
私の最初のテストでは、アクティブで表示可能なデスクトップがないと Robot は動作しないことが示されました。たとえば、スケジュールされたタスク (または継続的インテグレーション サーバーから実行されたコマンド) はコマンド ライン プロセスとしてロボットを起動できる場合がありますが、ロボットは実際には記録されたスクリプトの実行に失敗します。
ビルド マシンにログインして「アクティブなデスクトップ」にすることは、受け入れられる解決策ではありません。
何か不足していますか?マシンに物理的にログインする必要がない方法で、事前に記録された Rational Robot スクリプトを継続的インテグレーション サーバーで実行することは可能ですか?
java - コマンドラインで Maven リポジトリを追加できますか?
~/.m2/settings.xml で依存関係を取得するための Maven リポジトリを追加できることは承知しています。しかし、次のようなコマンドラインを使用してリポジトリを追加することは可能ですか:
これを実行したい理由は、maven を呼び出すために使用するコマンド ライン オプションを完全に制御できる継続的統合ツールを使用しているためですが、統合ツールを実行するユーザーの settings.xml を管理するのは少し手間がかかります。面倒なこと。
tfs - TFS 内のビルドでコード カバレッジを有効にするにはどうすればよいですか?
.testrunconfig ファイルを使用してソリューションで TFS ビルドを実行するときに、コード カバレッジを有効にする方法を知る必要があります。
testrunconfig ファイルにはコード カバレッジ用のオプションがありますが、TFS ビルドを実行すると、コード カバレッジの結果はありません。
*Tests.dll マスクを使用してテストを実行していますが、テスト リスト (.vsmdi) は使用していません。
flash - Flash CS3 で SWF ファイルをビルドするときに、外部スクリプトまたはプログラムを呼び出すことはできますか?
SWF ファイルをビルドするたびに Flash CS3 から外部スクリプトまたはプログラムを呼び出す方法はありますか? subwcrev を使用してサブバージョン情報を追加したい - バージョン クラス ファイルが更新されたときにのみ更新されるため、SVN キーワードは機能しません。
visual-studio - Visual Studioでビルド時間を表示しますか?
ビルドサーバーは、C++プロジェクトの1つをビルドするのに時間がかかりすぎています。Visual Studio 2008を使用します。ソリューション内の各プロジェクトのビルドにかかった時間をdevenv.comに記録させて、どこに注力すべきかを知る方法はありますか?
この場合、ハードウェアの改善はオプションではありません。
出力の詳細度を設定してみました([ツール]/[オプション]/[プロジェクトとソリューション]/[ビルドと実行]/[MSBuildプロジェクトビルドの出力の詳細度]の下)。これはIDEでは効果がないようです。
コマンドラインからMSBuildを実行すると(Visual Studio 2008の場合はMSBuildv3.5である必要があります)、最後に経過した合計時間が表示されますが、IDEには表示されません。
ソリューション内のプロジェクトごとに時間のかかるレポートが本当に必要だったので、ビルドプロセスに時間がかかっている場所を把握できました。
または、実際にはNAntを使用してビルドプロセスを実行しているため(Jetbrains TeamCityを使用)、NAntに各ステップにかかる時間を教えてもらう方法はありますか?
build-process - 複数のホストでのコンパイル
複数のホスト (Linux と Windows など) でコンパイルして実行する必要があるコードを開発しているとします。
- コンパイルしている各ホストのハードウェアに完全にアクセスできます (私の場合、Linux ホストと Windows ホストが机の上に立っています)。
- ネットワークドライブを介した構築は高すぎる
- 中央リポジトリへのコミットは必要ありません -- 何かがチェックインされるとすぐに構築を試みる CI エンジンがあるとします。
「効率的」とは、コンパイル、編集、実行のサイクルをできるだけ短くシンプルに保つことを意味します。
visual-studio-2008 - VS 2008 Post Build Step面白いビジネス
わかりました、これが私のプロジェクトの内訳です: "Scripts" サブフォルダを持つ Web プロジェクトがあります。このフォルダーには、いくつかの JavaScript ファイルと JSMin.exe のコピーが、いくつかのファイルで JSMin.exe を実行するバッチ ファイルと共に含まれています。「call "$(ProjectDir)Scripts\jsmin.bat"」のビルド後のステップを設定しようとしました。ビルドを実行すると、バッチ ファイルは常に「コード 1 で終了」します。これは、Visual Studio または msbuild コマンド ラインを介して行われます。Scripts フォルダーからバッチ ファイルを手動で実行できますが、期待どおりに動作しているように見えるので、ここで何が問題なのかわかりません。$(ProjectDir)Scripts\jsmin.bat 呼び出しは引用符で囲まれています。これは、$(ProjectDir) にスペースが含まれている可能性があるためです (実際、私のマシンではそうです)。この時点で何をすべきかわかりません。私'
理想的には、ビルド マネージャーがコードを展開するときに余分な手順を実行する必要がないように、ビルド後またはビルド前の手順でこの問題を解決したいと考えています。
ありがとう!