2016-09-20 5 views
0

私はスナップショットartifactoryリポジトリから最新のビルド番号を与え、jenkinsからスクリプトを実行する小さなgroovyスクリプトを作成しようとしています。誰かが私は配列で、または複数のためにこれを行うことができる方法を私に伝えることができ、私は複数のジョブのためにそれを行うにしようとしていますが、私はそうすることはできませんよ、単一のジョブに成功しGroovyスクリプトを使用して複数のジョブのartifactoryから最新のビルド番号を取得します。jenkinsから実行

import groovy.json.* 
import hudson.model.* 
import jenkins.model.Jenkins 

    // get current thread/Executor 
     def applicationLatestBuild = getLatestBuild('application') 

def getLatestBuild(jobName) { 
    def searchUrl = "http://xyz.nbc.com:9090/api/search/artifact?name=${jobName}&repos=libs-snapshot-local" 
    def conn = searchUrl.toURL().openConnection() 
    conn.setRequestProperty("X-Result-Detail", "info, properties") 
    def searchResultTxt = conn.content.text 
    //println "Found: ${searchResultTxt}" 
    def searchResults = new JsonSlurper().parseText(searchResultTxt) 
    def builds = searchResults.results.findAll{it.properties["build.number"] != null}.collect { Integer.parseInt(it.properties["build.number"][0]) }.sort().unique().reverse() 
    builds[0] 
} 

Result is : 

Result: 168 

を最新のビルド番号を取得することができ下は私が書こうとしている私のコードです

import groovy.json.* 
    import hudson.model.* 
    import jenkins.model.Jenkins 

    def PoidonServicesLatestBuild = getLatestBuild('PoidonServices') 
    def applicationLatestBuild = getLatestBuild(application) 

    def getLatestBuild(jobName) { 
     def searchUrl = "http://xyz.nbc.com:9090/api/search/artifact?name=${jobName}&repos=libs-snapshot-local" 
     def conn = searchUrl.toURL().openConnection() 
     conn.setRequestProperty("X-Result-Detail", "info, properties") 
     def searchResultTxt = conn.content.text 
     //println "Found: ${searchResultTxt}" 
     def searchResults = new JsonSlurper().parseText(searchResultTxt) 
     def builds = searchResults.results.findAll{it.properties["build.number"] != null}.collect { Integer.parseInt(it.properties["build.number"][0]) }.sort().unique().reverse() 
     builds[0] 
    } 

    def pa = new ParametersAction([ 
     new StringParameterValue("PoidonServicesLatestBuild", "${PoidonServicesLatestBuild}"), 
     new StringParameterValue("applicationLatestBuild ", "${ applicationLatestBuild }"), 
    ]) 

// add variable to current job 
thr.executable.addAction(pa) 

答えて

0

下記のコードは正常に動作しており、尊重されたジョブのスナップショットリポジトリから最新のビルド番号を取得できます。

import groovy.json.* 
import hudson.model.* 
import jenkins.model.Jenkins 

def applicationdataLatestBuild = getLatestBuild('PoidonServices') 
def CareDiscoveryProductsLatestBuild = getLatestBuild('application') 


def thr= Thread.currentThread().executable 

def getLatestBuild(jobName) { 
    def searchUrl = "http://xyz.nbc.com:9090/api/search/artifact?name=${jobName}&repos=libs-snapshot-local" 
    def conn = searchUrl.toURL().openConnection() 
    conn.setRequestProperty("X-Result-Detail", "info, properties") 
    def searchResultTxt = conn.content.text 
    //println "Found: ${searchResultTxt}" 
    def searchResults = new JsonSlurper().parseText(searchResultTxt) 
    def builds = searchResults.results.findAll{it.properties["build.number"] != null}.collect { Integer.parseInt(it.properties["build.number"][0]) }.sort().unique().reverse() 
    println "Using ${jobName} build ${builds[0]}" 
    builds[0] 
} 

def pa = new ParametersAction([ 
new StringParameterValue("PoidonServicesLatestBuild", "${PoidonServicesLatestBuild}"), 
    new StringParameterValue("applicationLatestBuild", "${applicationLatestBuild}"), 
]) 


// add variable to current job 
thr.addAction(pa) 
関連する問題