web-dev-qa-db-ja.com

ジェンキンスで特定の時間にパラメーター化されたジョブを実行する

特定の時間に実行するようにスケジュールしたいパラメーター化されたジョブがあります。とにかくパラメータを選択して実行するようにスケジュールできますか?.

前もって感謝します

16
Kishore Tamire

これを処理するには、少なくとも2つの方法があります。
ただし、事前に目的の値を知っておく必要があります。

  • ジョブのデフォルト値を必要なものに設定し、
    その後、いつでも実行するようにスケジュールします。

  • パラメータ化されたジョブをスケジュールする代わりに、
    トリガーする別のジョブを作成します
    関連する
    パラメータの値
    (これにより、ターゲットジョブを開始することもできます
    値のセットが異なります)。

編集:

この3番目の方法では、必要に応じてパラメーターの値を更新できます。

  • 設定ファイルからパラメータの値を読み取るようにジョブを設定します
    (- EnvInject Plugin を介して)、その構成ファイルの内容を更新します
    ジョブを実行する前。

毎回実行する前にこのファイルを変更することは悪い習慣になることに注意してください
パラメータを使用してJenkinsジョブを自動的に開始するより良い方法があるため。

23
Gonen

Jenkinsのcrontabを使用すると、ジョブを特定の時間に実行するようにスケジュールできますが、パラメーターを渡すことはまだできません。

ただし、パラメーターを渡すように拡張する このJenkins機能リクエスト があります。利用可能になると、他のいくつかの回答が示唆しているように、追加のJenkinsジョブを作成する必要なしに、必要なことを実行できます。

この機能が役立つ場合は、この機能がJenkinsに含まれるように早めに投票できます。

4
Chris R

ビルドトリガーを使用してビルドを開始する場合、パラメーターを渡す方法はありません。ジョブはパラメーター化されているため、自動開始ジョブはデフォルトのパラメーターで実行されます。

これで十分な場合は、ジョブ構成ページの[ビルドトリガー]セクションで実行するスケジュールを設定し、[定期的にビルドする]チェックボックスを選択して適切な値を追加します(構文はcron)。デフォルトのパラメータを有効にします。

ただし、POSTをトリガーとしてjenkinsに送信し、希望する正確な値を渡すことができます。次に、シェルスクリプトを使用してCRONを直接使用する必要があるため、パラメーターを設定できます。値。

例えば、

http://example.com/jenkins/job/this_job/buildWithParameters?PARAMETER=Value

4
blotto

Gonenの答えに少し基づいて、 Build Flow Plugin を使用して、これを少し簡単にすることができます。インストール後、新しいジョブを作成し、タイプを「ビルドフロー」に設定します。このジョブを構成して、希望するスケジュールされた時刻に実行します。このジョブの「フローDSLを使用してビルドフローを定義する」セクションで、ビルドするジョブを指定します。

build( "Job You Want Built", param1:"whatever", Param2:"whatever")

さらに行を追加してビルドするジョブを指定するか、同じ行を繰り返してパラメーターを変更し、異なるパラメーターでジョブを複数回ビルドすることができます。

完了すると、ビルドフロージョブがスケジュールされた時間に実行され、指定されたパラメーターで目的のジョブが開始されます。

4
Aaron

Parameter Scheduler Plugin を使用できます

Cronスケジュールの後にパラメーターを指定できます。次に例を示します。

H(0-29)/10 * * * * % name=value; othername=othervalue

%の後の名前と値のペアは、パラメーターとして解釈されます。

3
dralth