2017-07-16 13 views
2

2つの異なるJenkinsシステムで実行されるJenkinsfileマルチブランチパイプラインスクリプトがあります。 Jenkinsfileは特定のラベル名に依存しています。システムの1つでは、ラベルベースのエージェントは利用可能であり、別のエージェントでは(意図的に)使用できません。前者では正常に動作します。一致するラベルのないJenkinsシステムでは、一致するエージェントを見つけることができないため、ジョブはハングアップします。ラベルが一致しない場合、Jenkinsパイプラインビルドを中止する方法

ラベルが見つからない場合にビルドを中止する(または開始しない)オプションを指定する方法はありますか?ここ

+0

Jenkinsfileにラベル名を渡すにはどうすればよいですか? '' 'パイプライン{ エージェント{ラベル '私のビルドノード-1'} } ' '' このラベルは1で利用可能なドッキングウィンドウの画像をさす: –

+0

@VitaliiVitrenko私たちのJenkinsfileは次のようになりますジェンキンス、しかし別のものではない。 (意図的)、ラベルが見つからない場合はビルドを拒否する方法があるかどうかを確認したい。 – vasya10

+0

宣言型パイプラインでは可能かどうかわからないが、スクリプト化されたパイプラインではこれを行うことは間違いない –

答えて

0

いくつかの議論: https://issues.jenkins-ci.org/browse/JENKINS-35905

ができない可能性がありますが、彼らは、共有ライブラリに呼び出している場合はいつでもすぐに

あなたがラベルは、オンライン/利用可能であることを確認することができ、その後、ビルドに失敗し

def computers = Jenkins.instance.computers 
for(computer in computers){ 
     if(computer.isOnline()){ 
      labelStr = computer.node.getLabelString() 
     } 
     if labelStr ~= /user input/ 
      break; 
} 
System.exit(1); // no label 
関連する問題