1

次の形式のマルチジョブ構造があります。

ジョブA ジョブB ジョブC

JobB の実行の一部が JobA にパラメータを設定するようにしたいので、JobB が終了した後、JobA はそれを JobC に渡すことができます。

マルチジョブ プラグイン自体を調べてみましたが、それを行う方法が見つかりませんでした。また、グルーヴィーの有無にかかわらず、主題に関するさまざまな検索をグーグルで試みましたが、有用なものは何も見つかりませんでした。

4

2 に答える 2

4

Groovy スクリプトを使用して問題を解決しました。

def my_run = Thread.currentThread().executable
def my_parent_run = my_run.getCause(hudson.model.Cause.UpstreamCause).getUpstreamRun()

def preExistingAction = my_parent_run .getAction(hudson.model.ParametersAction.class)
my_parent_run.getActions().remove(preExistingAction)
def params = preExistingAction ?. iterator() ?. toList() ?: []
params << new hudson.model.StringParameterValue('TEST_PARAM', 'FOO')
my_parent_run.addAction(new hudson.model.ParametersAction(params))

Jenkins JVM のコンテキストでスクリプトが実行され、ビルド オブジェクトをインポートできるように、スクリプトがスクリプトを使用する「システム」(「システム Groovy スクリプトの実行」ビルド ステップ) になることが重要です。

したがって、JobB がこのスクリプトを実行し、このビルド ステップが完了すると、JobA には "FOO" という値を持つ "TEST_PARAM" というパラメーターがあり、標準的な方法で簡単に JobC に渡すことができます。

ここでは完全修飾名を使用していますが、スクリプト内import hudson.model.*のすべてを取り除くことができます。hudson.modle.

多くの場合に便利な機能だと思うので、まさにそれを行うプラグインを作成して公開することを目指しています。

于 2013-07-22T13:20:10.460 に答える