私はジェンキンスで仕事をしています(BIGJOBと呼びます)。ビルド手順のいくつかは、 Parameterized Trigger Plugin を使用して他のジョブ(SMALLJOBと呼びます)でビルドをトリガーし、それらが完了するのを待つことです。私がする必要があるのは、SMALLJOBでトリガーされたビルドからアーティファクトを取得することです。
もともと、私は Copy Artifact Plugin を使用して、トリガーされたSMALLJOBの「最後のビルド」からアーティファクトを取得できると考えていました。また、一度に1つのSMALLJOBしか実行されていない場合、これは確実に機能します。
しかし、私は複数のBIGJOBを実行していて、すべてが複数のSMALLJOBをトリガーしているため、「最後のビルド」の使用は、2つのSMALLJOBが同時に終了するという信頼性がありません。
特定のダウンストリームジョブからアーティファクトを取得するためのより信頼性の高い方法はありますか?ビルド番号を取得できれば、curlを使用してアーティファクトを取得できます。
将来、この質問に(他の)問題が発生した場合:
パラメータ化されたトリガープラグインをビルドステップとして使用する場合、「トリガーされたプロジェクトがビルドを完了するまでブロックする」を有効にしてトリガーを構成すると、次の環境変数が以降のビルドステップで使用できるようになります。
バージョン2.17以降
プラグインのウェブサイトで詳細をご覧ください-質問にリンクされています。
私自身の答えを見つけました。プラグインやすでに設定されている変数ほど簡単ではありませんが、機能します。
Jenkins XML APIを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ダウンロードでその番号を使用して、アーカイブされたビルドファイルを取得します。
あなたはこの関数を参照するかもしれません:
Jenkinsビルド ここで見つけることができます:
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)