web-dev-qa-db-ja.com

Jenkins / Hudsonの仕事を他の仕事を監視し、構築するかどうかを決定する方法は?

[〜#〜]問題[〜#〜]

すべてのジョブのジョブ名に文字列LEVEL_Xが含まれているとすると、Xは1より大きい数値です。X= nのすべてのジョブがX = n-1のすべてのジョブを監視し、それぞれがそれらは成功して終了します。そして、X = nのジョブで、1分間隔で他のジョブを監視する必要があります。

まず第一に、それを行うための最良の方法を知りたいと思っています。第二に、小さなスクリプト、おそらくGROOVYを使用してsystem groovy scriptで実行できるGroovyスクリプトで実装できるソリューションが必要です。プラグイン。

10
Gogi

ヒントとコードスニペットは次のとおりです。

  • http://<jenkins-server>/scriptにはGroovyScriptコンソールがあり、スクリプトのデバッグに役立ちます。
  • Jenkins Java API へのリンクは次のとおりです。
  • すべてのジョブ名を出力するコードスニペット:

    def hi = hudson.model.Hudson.instance
       hi.getItems(hudson.model.Project).each {project ->
       println(project.displayName)
    }
    
  • LEVEL_nからnを抽出するコードスニペット(クロージャとして実装):

    def level = { name ->
      def ret = 0
      name.eachMatch(~'LEVEL_([1-9]+[0-9*])', {ret = it[1].toInteger()})
      return ret
    }
    
  • 最新のすべてのビルドのステータスを取得するコードスニペット:

    def hi = hudson.model.Hudson.instance
    hi.getItems(hudson.model.Project).each {project ->
      println(project.lastBuild.result)
    }
    
  • ビルドを開始する というメソッドへのリンク。

注:Matrixビルドを使用している場合は、状況が少し複雑になります。しかし、あなたがそうしない限り、これで十分なはずです。

42
malenkiy_scot