web-dev-qa-db-ja.com

Jenkinsでビルドアーティファクトを別のジョブに渡す方法

セットアップ

Jenkinsには2つの仕事があります。

  • build master-これはコードをビルドし、アーティファクトを作成します
  • deploy master-これはアーティファクトをデプロイします

現在、deploy masterには、「最新の成功したビルド」を使用した「別のプロジェクトからの成果物のコピー」ビルドステップがあります。

build-master

私の目標

毎回deploy masterジョブの構成を変更せずにデプロイするときに特定のビルドを選択できるように、このステップを「最新の正常なビルド」から「ビルドパラメーターで指定された」に変更したい。

私が試したこと

まず、「ビルドパラメーターで指定」に変更しました。

build-specific

次に、「このプロジェクトはパラメーター化されています」の横のボックスをチェックし、BUILD_SELECTORの文字列パラメーターを追加しました。

parameter

次に、ビルドを選択し、47ジョブからのビルド番号である入力build masterを入力しました。

さらに、APIコールを試しました

$.ajax({
  type: 'POST',
  url: 'https://jenkins/job/deploy%20master/build?token=abc7f5abc0c45abcea0646ed858abcde&BUILD_SELECTOR=47'
});

結果

両方の場合、次の出力で失敗しました。

Started by user styfle
[EnvInject] - Loading node environment variables.
Building in workspace C:\Jenkins\jobs\deploy master\workspace
ERROR: Unable to find a build for artifact copy from: build master
Started calculate disk usage of build
Finished Calculation of disk usage of build in 0 seconds
Started calculate disk usage of workspace
Finished Calculation of disk usage of workspace in 0 seconds
Finished: FAILURE

質問

デプロイ時にビルド番号(またはその他の識別子)を指定できるように、これを適切に構成するにはどうすればよいですか?

ソリューションで更新する

Geroldの答えのおかげで、私の解決策は、「コピーアーティファクトのビルドセレクター」パラメーターを追加し、新しい環境変数を使用して、既に追加した文字列パラメーターにリンクすることでした。

enter image description here

19
styfle

Jenkinsのプロジェクト/ジョブごとに1つのワークスペースがあります。ビルドのディレクトリには、ビルドとその結果に関する情報のみが含まれています。

両方のルートディレクトリはManage JenkinsConfigure System→で指定されています Advanced...

以前のビルドのアーティファクトを展開するには、build masterの別の場所にコピーし、deploy masterから後でアクセスする必要があります。

更新:

Which buildParameter Nameのインラインヘルプを参照してください:

この名前のパラメータは、上記のビルドパラメータセクションに追加する必要があります。ビルドセレクターを選択するための特別なパラメータータイプがあります。

String Parameterの代わりに、これを使用して、Artifactコピーのビルドセレクターを使用します。

5
Gerold Broser

下流プロジェクトに以下を追加します。 「文字列パラメーター」ではなく「アーティファクトのコピー用のビルドセレクター」

"Build selector for Copy Artifact" instead of a "String Parameter"!!

別のプロジェクトから成果物をコピーする

enter image description here

それでおしまい。 「パラメーター付きビルド」をクリックして、ビルド番号を渡します enter image description here

2
Febin