A と B の 2 つのリモート マシンがあります。どちらにも Jenkins がインストールされています。
A: これはトランクから構築されます。
B: オートメーションをトリガーします。
マシン A でビルドが成功したときに、マシン B で Jenkins ジョブを構成するにはどうすればよいですか?
私が使用していたサーバーの 1 つが別の会社に属していたため、同じ要件がありました。したがって、可能ではありますが、ジェンキン セットを変更するための賛同を得るには明らかに長い時間がかかります。それとその出力を監視するためのアクセスが許可されていたにもかかわらず。ただし、これらの制限がない場合は、マスター/スレーブ構成全体に従って、これに対処する必要があります。そうは言っても、これが私が思いついた解決策であり、これが真の要件である理由を説明したことに注意してください.
Jenkins 用の ScriptTrigger プラグインをインストールすると、次のようなスクリプトを使用してリモート jenkins インスタンスを監視できます。
LAST_SUCCESSFUL_UPSTREAM_BUILD=`curl http://my.remote.jenkins.instance.com:8080/job/remoteJobName/lastSuccessfulBuild/buildNumber`
LAST_KNOWN_UPSTREAM_BUILD=`cat $WORKSPACE/../lastKnownUpstreamBuild || echo 0`
echo $LAST_SUCCESSFUL_UPSTREAM_BUILD> $WORKSPACE/../lastKnownUpstreamBuild
exit $(( $LAST_SUCCESSFUL_UPSTREAM_BUILD > $LAST_KNOWN_UPSTREAM_BUILD ))
終了コードが '1' の場合は常にビルドをスケジュールするための ScriptTrigger を取得します。適切なポーリング間隔を設定すると、それができます。
これは明らかに、アップストリーム ジョブが成功した場合にのみビルドをスケジュールします。要件に応じて、上記の URL で「lastSuccessfulBuild」の代わりに「lastBuild」または「lastFailedBuild」を使用してください。
注: BASH シェルを使用して実装されています。他の UNIX シェルでは動作する可能性がありますが、Windows では動作しません。