問題タブ [parallel-builds]
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.
java - mavenですべての非スレッドセーフプラグインを確認するにはどうすればよいですか?
thisでmavenの並列ビルド構成について読みました。では、スレッドセーフでないすべてのプラグインを表示するにはどうすればよいでしょうか? Mavenに「plugin-not-safe-list」コマンドのようなものはありますか?
tfs - ビルド エージェント間でビルドを並列化するにはどうすればよいですか?
現在、同じ製品の 15 個の SKU のビルドを実行しています。シリアルでは、すべての SKU のフル ビルドに 3 時間弱かかります。
15 のビルド エージェントを必要とする 1 つのビルドの負荷を処理できるビルド ファームを作成するためのリソースがあり、その事実を利用したいと考えています。
数年前に TFS2010 でオンラインで見つけた TFS ビルド テンプレートを使用しましたが、テンプレートをアップグレードした後も TFS2012 で使用し続けました。残念ながら、そのテンプレートは TFS2013 で機能するように簡単にアップグレードすることはできません。欠点があったため、新しい 2013 の世界で新たに開始する新しいテンプレートを入手したいと考えています。(それが持っていた欠点は、単一のタスクの同時処理に関するものでした: ラベル付け、作業項目とビルド番号の関連付け、ロックされたファイルを含むプライベート ビルド。)
私はまだオンラインで何も見つけていないので、おそらく独自の並列ビルド テンプレートを作成するつもりです。TFS2013 用の独自の TFS 並列ビルド テンプレートの作成に取り掛かる前に、まだ見つけていないソリューションが既に利用可能かどうかを尋ねなければなりませんか?
(私は SO についてここで調査を行い、この件に関する多くの投稿を見つけましたが、VS2013 で動作する並列化されたテンプレートに対して提供される完全なソリューションはありません)
編集: TFS2010 用に見つかった並列ビルド テンプレートのソースへのリンクを追加
maven - Mavenのディレクトリ構造のオーバーロード
私は Jenkins と Maven を使用しています。org.apache、org.springframework などの一般的に使用されるアーティファクトをダウンロードしないようにする方法を探していますが、自分の会社のアーティファクトのみを再ダウンロード/再構築できるようにします。私は次のオプションを認識しています -
- 独自のローカル Maven リポジトリを使用してジョブを実行しますが、ダウンロードすると共通コンポーネントが何度も複製されます。
- マシン リポジトリから com.myCompany パッケージを削除/パージしますが、これは、並行して実行されている他のビルドに「スレーブ マシン」全体の影響を及ぼします。
私の考えは、ジョブ Maven リポジトリを使用することですが、com.myCompany を除くすべてのアーティファクト パッケージのマシン .m2 リポジトリへのソフトリンクを使用することです。これは公正な解決策と思われます。基本的に、com.myCompanyディレクトリのディレクトリ「オーバーロード」を実行するオプションを提供します
この問題の他の解決策を知っている人や、そのようなスキームを実装した人はいますか?
cmake - モジュールを使用した Fortran-90+ 用の CMake 並列ビルド
CMake を使用して複数の Fortran-90+ 実行可能ターゲットをビルドすると、すべての実行可能ファイルで共有される Fortran モジュールを使用し、make -j
. 問題は、コンパイルされたオブジェクトファイルがターゲットごとに異なるサブディレクトリに配置されているようCMakeFiles/targetName.dir/src/file.f90.o
ですが、モジュールファイルはターゲットごとに同じディレクトリに配置されているようです ( を設定してこのディレクトリを変更できますFortran_MODULE_DIRECTORY
が、それでも同じディレクトリになります)すべてのモジュール ファイル)。問題は、すべてのターゲットがこれらのモジュール ファイルを並行して書き始めることです
Fatal Error: Can't rename module file 'module.mod0' to 'module.mod': No such file or directory
。gfortran を使用すると、.mod0 ファイルが作成され、名前が .mod に変更されます。-j オプションなしで make を発行した場合 (シリアル ビルド)、問題は発生しません。
2 つの解決策を確認できますが、それらを実装する方法がわかりません。まず、すべてのターゲットのオブジェクト ファイルを、ターゲット固有のディレクトリではなく、同じディレクトリに配置します。N 個のターゲットに対して共有ソース ファイルを N 回コンパイルする必要がないため、これが好ましいオプションかもしれません。make プロセスは、オブジェクト ファイルが存在することを認識し、対応するソース ファイルを再度コンパイルしないため、.mod(0) ファイルに再度触れません (次のすべてのターゲットを最初のものに依存させる必要がある場合があります)。
2 番目の解決策は、.mod(0) ファイルをターゲット固有のディレクトリに配置して、他のターゲットによって上書きまたは削除されないようにすることです。これにより、必要以上のコンパイルが必要になりますが、私の問題は解決します。どちらのオプションを達成する方法もわからないので、ヒントや代替ソリューションを歓迎します。
ios - DerivedData のフォルダ パスを変更するには?
次のシナリオがあります。
ビルドを行うたびに、製品とビルド成果物が次のようなフォルダーに生成されることを知っています/Users/david/Library/Developer/Xcode/DerivedData/MyProject-foobar123
。xctool build
残念ながら、異なるコードを使用して、異なるターゲットに対して並行して複数処理したいと考えています。
MyProject-foobar123
これらの各ビルドの出力フォルダーは常にであると想定しても安全ですか?
もしそうなら、同じプロジェクトをビルドしていても(毎回異なるコードを並行して)、別のフォルダーにビルドできるようにするにはどうすればよいですか?
私が知りたい理由は、別のビルドを開始する前rm -rvf /Users/david/Library/Developer/Xcode/DerivedData/MyProject-foobar123
と同じようにしようとするためですxctool clean
(ただし、ビルドを並列化すると明らかにこれが問題になります)
maven - Maven がローカル ネクサスからアーティファクトをダウンロードできない
ローカル ネクサスからアーティファクトをダウンロードする際に問題が発生しました。少し長くなってしまい申し訳ありません。
ソースツリーはいくつかのプロジェクトに分割されています。それらをAおよびBと呼びましょう。Bは、ローカルの Nexus サーバーにデプロイされているAのリリース バージョンに依存しています。新しいAをリリースするたびに、次のいくつかのビルド (TeamCity 内) が新しいアーティファクトのダウンロードに失敗し、次のエラーが表示されます。
関連する事実を次に示します。
-T 1C
Mavenオプションで構築しています- アーティファクトはnexusに存在します-ダウンロードURLにアクセスすると機能します
- ローカルでビルドすると動作します
- つまり、最初は特定のアーティファクトのダウンロードに失敗し、次回は成功するが別のアーティファクトは失敗するというように、すべてのアーティファクトがダウンロードされるまで続きます。
- 同じローカル リポジトリにリリースされた別のプロジェクトも、バージョンが更新されると正常に動作します
ログに次の複数のダウンロード行が表示されます。
この行は、リリースされたアーティファクトごとに数回繰り返されます
- nexus インデックスの問題ではないようです (前述のように、ローカルでのビルドは正常に機能し、一部の TeamCity エージェントでも機能します)
- また、TeamCity エージェントと nexus サーバーの両方が同じデータセンターにあるため、ネットワークの問題ではないようです
これが長い間読んでいた場合は申し訳ありませんが、助けていただければ幸いです。このことは私たちを夢中にさせています。
ありがとう
maven - 一部のプロジェクトのみを並行して構築するにはどうすればよいですか?
私は、400 以上のモジュールを持つ非常に大きな Maven プロジェクトに取り組んでいます。ビルドを高速化するには:
一部のモジュールは互いに依存しているため、失敗します。それらは一緒に配置する必要があります。
しかし、他のモジュールのほとんどは独立しています。いくつかのモジュールの構築シーケンスを維持し、他のモジュールを並行させる方法はありますか?
msbuild - Typescript 並列ビルド
バックグラウンド:
共通のコアを持つ ASP.NET プロジェクトがいくつかあります。コアからの静的は、他のすべてのプロジェクトにコピーされます。すべてのプロジェクトに TypeScript を追加しました。
TypeScript ビルドが csproj でどのように見えるかを次に示します。
TypeScript ファイルがコンパイルされると、すべての参照ファイルもコンパイルされます。一部の TypeScript ファイルは、Core プロジェクトのファイルを参照します。そのため、Core プロジェクトのファイルが何度もコンパイルされることがあります (他のプロジェクトの複数のファイルがそれらを参照している場合)。
簡単な例:
ScriptA.ts:
ScriptB.ts:
A または B プロジェクトのビルドにより、Core からの Common.ts もビルドされます。
問題:
一部のファイルが複数回ビルドされても問題ありません。しかし - プロジェクトを並行してビルドする場合 (これがデフォルトの VS 動作です!) - ビルドがクラッシュして例外が発生することがあります:
理由は、2 つ以上のプロジェクトが TypeScript ファイルをビルドしようとし、いくつかの共通プロジェクトから参照ファイルをビルドしようとするためです。1 つのプロジェクトが ts ファイルから js ファイルへのビルドを開始し、js ファイルをロックします。他のプロジェクトが同じファイルをロックしようとしてクラッシュします。
問題は、そのような並行ビルド/ロックを回避する方法です。参照されたプロジェクトは既にコンパイルされている必要があるため、他のプロジェクトからファイルをビルドしないように TypeScript コンパイラと言うことができますか?