28

私はジェンキンスで仕事をしています(BIGJOBと呼びます)。ビルド手順のいくつかは、Parameterized Trigger Pluginを使用して他のジョブ(SMALLJOBと呼びます)でビルドをトリガーし、それらが完了するのを待つことです。私がする必要があるのは、SMALLJOBでトリガーされたビルドからアーティファクトを取得することです。

もともと、 Copy Artifact Pluginを使用して、トリガーされたSMALLJOBの「最後のビルド」からアーティファクトを取得できると思っていました。また、一度に1つのSMALLJOBしか実行されていない場合、これは確実に機能します。

しかし、私は複数のBIGJOBを実行していて、すべてが複数のSMALLJOBをトリガーするため、「最後のビルド」の使用は2つのSMALLJOBが同時に終了するという信頼性がありません。

特定のダウンストリームジョブからアーティファクトを取得するためのより信頼性の高い方法はありますか?ビルド番号を取得できれば、curlを使用してアーティファクトを取得できます。

4

3 に答える 3

34

将来、この質問に(他の)困惑があれば、次のようになります。

パラメータ化されたトリガープラグインをビルドステップとして使用する場合、「トリガーされたプロジェクトがビルドを完了するまでブロックする」を有効にしてトリガーを構成すると、次の環境変数が以降のビルドステップで使用できるようになります。

  • LAST_TRIGGERED_JOB_NAME="最後のプロジェクトが開始されました"
  • TRIGGERED_BUILD_NUMBER_{プロジェクト名}="最後にトリガーされたビルド番号"

バージョン2.17以降

  • TRIGGERED_JOB_NAMES="トリガーされたすべてのプロジェクトのカンマ区切りリスト"
  • TRIGGERED_BUILD_NUMBERS_{プロジェクト名}="トリガーされたビルド番号のコンマ区切りリスト"
  • TRIGGERED_BUILD_RESULT_{プロジェクト名}="プロジェクトの最後にトリガーされたビルド結果"
  • TRIGGERED_BUILD_RESULT_{プロジェクト名}RUN{ビルド番号}="ビルド番号のトリガーされたビルドの結果"
  • TRIGGERED_BUILD_RUN_COUNT_{プロジェクト名}="プロジェクトに対してトリガーされたビルドの数"

プラグインのWebサイトで詳細を参照してください-質問にリンクされています。

于 2013-06-25T14:27:39.877 に答える
10

私自身の答えを見つけました。プラグインやすでに設定されている変数ほど簡単ではありませんが、機能します。

Jenkins XMLAPIをdepth=1(URLを完全にトラバースし、すべての情報を利用できるようにするために非常にインポート)およびXPATHで使用します。これが私が使用したURLのサンプルです:

http://jenkins/job/SMALLJOB/api/xml?depth=1&xpath=/freeStyleProject/build[action/cause/upstreamProject="%JOB_NAME%" and action/cause/upstreamBuild=%BUILD_ID%]/number/text()

これにより、適切なSMALLJOB(このBIGJOBによって開始されたもの)のビルド番号が返されます。次に、Jenkinsからのhttpダウンロードでその番号を使用して、アーカイブされたビルドファイルを取得します。

于 2011-08-22T20:58:28.540 に答える
0

あなたはこの関数を参照するかもしれません:

Jenkins Buildは次の場所にあります:

jenkinsapi.api.block_until_complete(jenkinsurl、jobs、maxwait = 12000、interval = 30、raise_on_timeout = True、username = None、password = None)

jenkinsapi.api.get_artifacts(jenkinsurl、jobid = None、build_no = None、username = None、password = None)

jenkinsapi.api.get_build(jenkinsurl、jobname、build_no、username = None、password = None)

jenkinsapi.api.get_latest_build(jenkinsurl、jobname、username = None、password = None)

jenkinsapi.api.get_latest_complete_build(jenkinsurl、jobname、username = None、password = None)

jenkinsapi.api.get_latest_test_results(jenkinsurl、jobname、username = None、password = None)

jenkinsapi.api.get_nested_view_from_url(url、username = None、password = None)

jenkinsapi.api.get_view_from_url(url、username = None、password = None)

jenkinsapi.api.grab_artifact(jenkinsurl、jobid、artifactid、targetdir、username = None、password = None)

jenkinsapi.api.install_artifacts(artifacts、dirstruct、installdir、basestaticurl)

jenkinsapi.api.search_artifact_by_regexp(jenkinsurl、jobid、artifactRegExp、username = None、password = None)

于 2016-04-12T06:30:55.930 に答える