4

「ヘルパー」と「メイン」の2つのジョブと、単一のjenkinsインスタンス(ホストとエグゼキューター)があります。

ヘルパーはサードパーティのリソースを管理し、メインジョブの準備を行います(正確には、テスト用にアプリケーションをデプロイするための環境を作成します)。

ヘルパージョブの唯一のアーティファクトは、メインジョブ用に特別に準備された環境のIPを含む単一のファイルです。

この場合、ビルドをヘルパーからメインに戻すにはどうすればよいですか?

4

2 に答える 2

8

あなたは、IPを持つファイルを「メイン」ジョブに渡すだけでよいと言っています。必要なのがそのIPだけである場合、(ファイルなしで)それを行うより簡単な方法があります。両方について説明します。

あるジョブから別のジョブにアーティファクトを渡すには

「ヘルパー」ジョブでは、ワークスペースからそのファイルをアーカイブする必要があります。

  1. ビルド後のアクションで、 [アーティファクトのアーカイブ]を選択します
  2. ワークスペースを基準にしたパスを配置します。ワイルドカードを使用するか、ファイル名が常に同じである場合はファイル名をハードコードすることができます。
  3. 他のプロジェクトのビルドステップでトリガー/呼び出しビルドを使用して「メイン」ジョブを自動的にトリガーするように、このジョブを構成します。このプラグインをお持ちでない場合は、こちらから入手できます
  4. ビルドするプロジェクトの場合、「メイン」ジョブの名前を入力します

ここで、「メイン」ジョブで、前の(「ヘルパー」)ジョブからこのアーティファクトをコピーする必要があります。

  1. 最初のビルドステップでは、[別のプロジェクトビルドステップからアーティファクトをコピーする]を選択します。このプラグインをお持ちでない場合は、こちらから入手できます
  2. プロジェクト名には、「ヘルパー」ジョブの名前を入力します
  3. どのビルドについて、「最新の成功したビルド」を選択します
  4. アーティファクトをコピーするには、**/yourartifactname*.*アーティファクト名を「ヘルパー」ジョブで構成したものを使用します。フロントで使用**/すると、アーティファクトに到達する前にディレクトリ構造が無視されることを確認します
  5. [ターゲットディレクトリ]には、このファイルもコピーされる「メイン」ジョブのワークスペース内の場所を指定します。
  6. [ディレクトリをフラット化]にチェックマークを付けると、ファイルは手順5で指定した場所に直接移動します。そうでない場合は、(「ヘルパー」ジョブで)アーカイブされたディレクトリ構造が保持されます。

これで、「メイン」ジョブのワークスペースに「ヘルパー」ジョブのファイルが含まれます。ワークスペース内の他のファイルと同じように使用します

あるジョブから別のジョブに変数を渡すには

前述したように、必要なのが「ヘルパー」ジョブのある時点で変数として持っている1つのIPアドレスだけである場合は、他のプロジェクトのステップでビルドをトリガー/呼び出しを使用して「メイン」ジョブに送信するだけです。 「ヘルパー」ジョブのステップ3と4で構成したもの。この場合、「メイン」ジョブで特別な構成は必要ありません。

  1. 他のプロジェクトのビルドステップでトリガー/呼び出しビルドを使用して「メイン」ジョブを自動的にトリガーするように「ヘルパー」ジョブを構成します。このプラグインをお持ちでない場合は、こちらから入手できます
  2. ビルドするプロジェクトの場合、「メイン」ジョブの名前を入力します
  3. [パラメータの追加]ボタンをクリックします
  4. 事前定義されたパラメータを選択します
  5. と入力しますVarForMain=$VarFromHelper。ここで、VarFromHelperはIPアドレスを含む「ヘルパー」ジョブVarForMainの環境変数であり、は「メイン」ジョブでこの値に設定される環境変数です。これらが同じ名前を持つことができない理由はありません。

これで、「メイン」ジョブで、$VarForMain他の環境変数と同じように参照できます。

于 2013-01-28T17:37:35.133 に答える
2

受け入れられた答えは私の場合は役に立ちませんでしたが、私はちょうどトリックを思いついた:

  1. 次のシェルコマンドを使用してメインジョブを作成します

    echo "PARAMS_FILE=${WORKSPACE}/build-${BUILD_NUMBER}.params" > "${WORKSPACE}/build-${BUILD_NUMBER}.params"
    
  2. サブジョブをビルドステップ(ビルドのステップではなく)に追加して作成します

  3. ファイルをパラメーターソースとしてサブビルドに渡し、ビルドに次のようなスクリプトの行でファイルを更新させます。

    echo "MY_VAR=some_value" >> "$PARAMS_FILE"
    

このようにして、後続のすべてのジョブの環境が前のジョブの結果で更新されます。

于 2014-07-21T01:28:25.000 に答える