マルチ構成の Jenkins プロジェクトに取り組んでいます。2 つの構成軸は、Win/Linux と 32/64 ビットです。バージョン管理が変更されるたびにプライマリ構成 (32 ビット Windows) を構築したいと考えていますが、他の構成は週に 1 回だけ構築したいと考えています (適切な最新の状態を維持するためだけに)。
プロジェクトを複数の個別プロジェクトに分割せずに、このスケジュールを達成することは可能ですか?
マルチ構成の Jenkins プロジェクトに取り組んでいます。2 つの構成軸は、Win/Linux と 32/64 ビットです。バージョン管理が変更されるたびにプライマリ構成 (32 ビット Windows) を構築したいと考えていますが、他の構成は週に 1 回だけ構築したいと考えています (適切な最新の状態を維持するためだけに)。
プロジェクトを複数の個別プロジェクトに分割せずに、このスケジュールを達成することは可能ですか?
これを考慮してください:
利用可能なすべての構成を毎回ビルドしないのはなぜですか?
- 結局のところ、それが継続的インテグレーションの全体的な考え方です...
これらのビルドのアーティファクトを短時間でドロップできる
ため、ディスクが詰まることはありませんが、ビルドが壊れた場合はすぐにわかります。
一度に 1 つのジョブを実行するようにスレーブのキューを設定することもできるため、ビルドによってビルド サーバーが過負荷になることはありません。
もう 1 つのソリューションには、次のものが必要です。
Job_A1を、 Job_B (メインのマルチ構成ビルド プロセス)をトリガーする毎週のスケジューラとして設定します。ソース コードの変更があるたびにJob_Bを実行するようにJob_A2
を
設定します。Job_A1またはJob_A2によってトリガーされたかどうかを知るようにJob_Bを
設定
し(パラメーターとしてその名前を渡すことができます)、現在のconfig. Windows-32bitとは異なります。
この方法では、ソース管理の変更があるたびに 4 つの構成すべてが実行されますが、実際にビルドされるのは 1 つだけです。
幸運を!
残念ながら、この時点で Jenkins を介して直接ではありません。ジョブごとに 1 つのタイム ハンドラーしかなく、マルチ構成は単一のジョブであり、単一のタイマーがあります。
ハックがありますが、それは難しいでしょう。必要な正確なスクリプトはわかりませんが、曜日を確認できる場合は、スクリプトで次のようなことを試すことができます。
if (day == Sunday |OR| $NODE_NAME == win32), then:
<carry out build steps here>
finish
こちらです:
$NODE_NAME
は標準の Jenkins 環境変数であることに注意してください。ただし、これは、ビルドが「シェルの実行」または「Windows バッチの実行」のいずれかによって行われることを前提としています。
他の人が同時にビルドしてはいけない理由はありますか?
1 つはプライマリ用のフリー スタイル ジョブ、もう 1 つは Win64/Linux を使用したマルチ構成として 2 つのジョブを作成し、それを別の週ごとのタイマーに残すことができます。