2012-05-27 11 views
9

すべてのジョブは、Xが、私はX = N X = n-1ですべての仕事をsurveil、各場合の構築を開始するために持つすべての仕事をしたい> 1.数であることだジョブ名、内の文字列LEVEL_Xを持っていることを与えられた問題ジェンキンス/ハドソンの仕事をどのようにして他の仕事を監視し、ビルドするかどうかを決定する方法は?

を彼らの成功は終わりです。 X = nの仕事は、1分間隔で他の仕事を監視したい。

まず最初に、私はそれを行う最良の方法を知っていることに興味を持っています。小さなスクリプトで実装できるのであれば解決策を望んでいます。溝を使ってsystem groovy script PLUGIN。ここで

答えて

35

はいくつかのヒントやコードスニペットです:

  • スクリプトのデバッグをお届けしますhttp://<jenkins-server>/scriptでのGroovyスクリプトのコンソールがあります。
  • ここにJenkins Java APIへのリンクです。
  • すべてのジョブ名を出力コードスニペット:LEVEL_nからnを抽出

    def hi = hudson.model.Hudson.instance 
        hi.getItems(hudson.model.Project).each {project -> 
        println(project.displayName) 
    } 
    
  • コードスニペット(クロージャとして実装):すべての最新のためのステータスを取得します

    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) 
    } 
    
  • starts a buildの方法にリンクします。

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

+0

ありがとう、それはジョブの情報にアクセスする良い方法です。 – Moni

+2

jenkinsサーバスクリプトのURLは+1です - ノードgroovyコンソールはすべてのクラスをインポートしないので無駄です。 – Epu

+0

groovyコンソールでは、完全なスクリプト/コマンドがすべて1行になければならないことがわかりました。そうでなければ、さまざまな構文エラーがあります。例えばジョブ名スニペットは私のために次のように動作します: '' 'def hi = hudson.model.Hudson.instance; hi.getItems(hudson.model.Project).each {project - > println(project.displayName)} '' ' – gaoithe

関連する問題