web-dev-qa-db-ja.com

手動でトリガーされたダウンストリームジョブをチェーンし、パラメーターも渡すにはどうすればよいですか?

Jenkinsを使用してビルドパイプラインを作成しており、パイプラインでデプロイステップをトリガーする必要があります。これは手動プロセスを意味します(ビルドは自動的に実行され、タイミングが調整され、展開段階で停止し、手動認証を待機します)。

前のステップのパラメーターを使用してデプロイステップもトリガーする必要があります。

したがって、「パラメータ化されたプラグイン」を使用して、ジョブ間でパラメータを渡すことができます。自動化されたOR手動でトリガーされたダウンストリームジョブをトリガーできます(これが標準機能であるか、プラグインによって手動ビルドが追加されたかどうかはわかりません)。

ただし、手動のパラメーター化されたジョブをトリガーする方法が見つかりません。

誰かがこれを行う方法を知っていますか?使用できる別のプラグインはありますか?

パラメーターが必要な理由は、汎用デプロイメントジョブを作成し、デプロイするためにモジュール名とMavenバージョンを渡す必要があるためです。 I couldモジュールごとに特定のデプロイメントジョブを作成しますが、これは非常に面倒です。

私も次のことを検討していますが、それは応急修理のようです。

  1. 自動化されたジョブはビルドを実行し、「デプロイメントトリガー」ビルドをトリガーし、パラメーターを渡します。
  2. 「デプロイメントトリガー」は、これらのパラメーターをファイルシステム上のファイルに書き込み(ビルドステップ-シェル実行)、手動で実際のデプロイメントジョブをトリガーします
  3. デプロイメントジョブ(「デプロイメントトリガー」ジョブからWORKSPACEを使用する必要があります)は、ファイルシステムからパラメーターを読み取ります(EnvInjectプラグインを使用)。

このアプローチにはさまざまな問題があります

  1. 私はそれが好きではありません。
  2. パラメータを渡すための中間ジョブちょうどがあります。これにより、Jenkinsワークスペースが乱雑になります
  3. ビルドは同じワークスペースで実行されるため、私には壊れやすいように見えます(実行可能ですが!)
13
GKelly

Build-pipeline-pluginの現在の製品バージョン(1.4.2)では、パラメーターを使用して手動のダウンストリームジョブを指定できます。これは、パイプラインに表示され、そこから開始できます。古いバージョンではそれができませんでした。

7
Ivan

Build Pipeline Pluginhttps://wiki.jenkins-ci.org/display/JENKINS/Build+Pipeline+Plugin を見てください。

自動トリガーまたは手動トリガーのジョブを指定できます。

また、ジョブ間でパラメーターを渡す必要がある場合は、Groovyプラグインをダウンロードする必要があります: https://wiki.jenkins-ci.org/display/JENKINS/Groovy +プラグイン

パラメータを渡すために、ジョブ間でSVNリビジョンを言うと、ビルドの開始時にSystem Groovyスクリプトを実行する必要があります。これは、任意のダウンストリームジョブで使用できるSVN_UPSTREAMパラメーターを追加する例です。 注:システムのGroovyスクリプトも含むダウンストリームジョブの作成に問題があることに気づきました。作成された元のパラメータへの参照を吹き飛ばしているようです。

import hudson.model.*
def build = Thread.currentThread().executable;
build.addAction(new ParametersAction(new StringParameterValue("SVN_UPSTREAM", build.getEnvVars()['SVN_REVISION'])));
println "SVN_UPSTREAM:" + build.getEnvVars()['SVN_UPSTREAM'];
2
user1687178

ある種の回避策があります:

  • アップストリームジョブで手動プロモーションを設定する(ビルドをプロモートする場合...>手動で承認された場合のみ)
  • プロモーションで、アクションの追加を指定>他のプロジェクトでパラメーター化されたビルドをトリガーし、ジョブを指定してパラメーターを追加します

アップストリームジョブの特定のビルドを手動でプロモートすると、ダウンストリームジョブのビルドが起動します。ただし、ダウンストリームジョブはパイプラインに表示されません。

2
Ivan

Build Pipeline Pluginはこれを行うことができますが、この記事の執筆時点では、リリースされたバージョンではありません。私はメイン(当時はrev 392)からプラグインを作成しました。これには、 この問題 で言及されている パッチ が含まれており、機能します。
これをインストールすると、最初のジョブで「他のプロジェクトのビルド(手動ステップ)」と呼ばれるビルド後のアクションを使用でき、2番目のジョブに渡されるパラメーターを構成できます(手動で)トリガーされた)パイプラインジョブ。

1
Niklas

私の意見では、目標を達成する可能性はありません

パイプライン配信を開始すると、pipeline-pluginは最初のジョブのパラメーターのみをチェックします->次に、initParam画面を表示します(または表示しません)

ただし、次のステップ(デプロイなど)が手動で、パラメーターが必要な場合、initParam画面は無視されます。問題を確認してください https://issues.jenkins-ci.org/browse/JENKINS-32336

0
marek.kapowicki