1

マルチ構成の Jenkins プロジェクトに取り組んでいます。2 つの構成軸は、Win/Linux と 32/64 ビットです。バージョン管理が変更されるたびにプライマリ構成 (32 ビット Windows) を構築したいと考えていますが、他の構成は週に 1 回だけ構築したいと考えています (適切な最新の状態を維持するためだけに)。

プロジェクトを複数の個別プロジェクトに分割せずに、このスケジュールを達成することは可能ですか?

4

2 に答える 2

1

これを考慮してください:

利用可能なすべての構成を毎回ビルドしないのはなぜですか?
- 結局のところ、それが継続的インテグレーションの全体的な考え方です...

これらのビルドのアーティファクトを短時間でドロップできる
ため、ディスクが詰まることはありませんが、ビルドが壊れた場合はすぐにわかります。

一度に 1 つのジョブを実行するようにスレーブのキューを設定することもできるため、ビルドによってビルド サーバーが過負荷になることはありません。

もう 1 つのソリューションには、次のものが必要です。

  • ビルドの 2 つの「スターター」
  • すべてのスレーブを利用可能にする

Job_A1を、 Job_B (メインのマルチ構成ビルド プロセス)をトリガーする毎週のスケジューラとして設定します。ソース コードの変更があるたびにJob_Bを実行するようにJob_A2
を 設定します。Job_A1またはJob_A2によってトリガーされたかどうかを知るようにJob_B 設定 し(パラメーターとしてその名前を渡すことができます)、現在config. Windows-32bitとは異なります。

この方法では、ソース管理の変更があるたびに 4 つの構成すべてが実行されますが、実際にビルドされるのは 1 つだけです。

幸運を!

于 2012-10-05T08:46:59.150 に答える
1

残念ながら、この時点で Jenkins を介して直接ではありません。ジョブごとに 1 つのタイム ハンドラーしかなく、マルチ構成は単一のジョブであり、単一のタイマーがあります。

ハックがありますが、それは難しいでしょう。必要な正確なスクリプトはわかりませんが、曜日を確認できる場合は、スクリプトで次のようなことを試すことができます。

if (day == Sunday |OR| $NODE_NAME == win32), then:
  <carry out build steps here>
finish

こちらです:

  • その日が日曜日の場合、ノードに関係なくすべてのステップが実行されます。
  • ノード名が win32 の場合、この手順も実行されます。
  • ただし、日が日曜日ではなく、$NODE_NAME が wi​​n64 または linux32 または linux64 の場合、手順は実行されません。

$NODE_NAMEは標準の Jenkins 環境変数であることに注意してください。ただし、これは、ビルドが「シェルの実行」または「Windows バッチの実行」のいずれかによって行われることを前提としています。

他の人が同時にビルドしてはいけない理由はありますか?

1 つはプライマリ用のフリー スタイル ジョブ、もう 1 つは Win64/Linux を使用したマルチ構成として 2 つのジョブを作成し、それを別の週ごとのタイマーに残すことができます。

于 2012-10-04T21:26:21.430 に答える