2016-11-21 24 views
0

我剛剛通過JSON URL發現Jenkins作業,每個作業都使用這種格式:https://jenkinsurl.net/job/_test/lastBuild/api/json提供瞭如下所示的信息。Groovy基於JSON的作業值生成動態參數?

{"_class":"hudson.model.FreeStyleBuild","actions":[{"_class":"hudson.model.ParametersAction","parameters":[{"_class":"hudson.model.StringParameterValue","name":"build_num","value":""}]},{"_class":"hudson.model.CauseAction","causes":[{"_class":"hudson.model.Cause$UserIdCause","shortDescription":"Started by user anonymous","userId":"anonymous","userName":"anonymous"}]},{},{},{},{},{},{"_class":"org.jenkinsci.plugins.buildenvironment.actions.BuildEnvironmentBuildAction"},{}],"artifacts":[],"building":false,"description":null,"displayName":"#1","duration":1850,"estimatedDuration":1850,"executor":null,"fullDisplayName":"_test #1","id":"1","keepLog":false,"number":1,"queueId":5753,"result":"SUCCESS","timestamp":1479700053274,"url":"http://jenkinsserver.net/job/_test/1/","builtOn":"node_name","changeSet":{"_class":"hudson.scm.EmptyChangeLogSet","items":[],"kind":null},"culprits":[]} 

我想知道我怎麼可以查詢這些領域與Groovy腳本來幫助我建立動態參數選擇「與參數建設」的時候。我已經有了Groovy和Dynamic參數插件,並將它們用於我一直使用的一些簡單查詢來生成一些參數,如時間戳未被Jenkins作業下游覆蓋。

如何查詢這些並返回它們的值?例如,如果我想回去,從這個段開始構建用戶的價值:

[{"_class":"hudson.model.Cause$UserIdCause","shortDescription":"Started by user anonymous","userId":"anonymous","userName":"anonymous"}]

這不是一個關於得到觸發構建的人的問題。對不起,如果這不是一個很好的例子,但這個似乎是一個嵌套,所以大概是一個很好的學習。

我知道如何引用參數的值,並獲取一些信息返回以生成它們,但不知道如何使用該URL並從中提取特定信息以幫助在構建開始之前創建參數值。這可能嗎?如果不是,我還可以使用其他什麼機制?

回答

0

你可以做類似這樣的東西: How do I discover the additional causes of my Jenkins build?

job = hudson.model.Hudson.instance.getItem("demo-job") 
build = job.getLastBuild() 

// get action first 
def action = build.getAction(hudson.model.CauseAction.class)  
cause = action.findCause(hudson.model.Cause.UserIdCause) 
println cause.userId 

http://javadoc.jenkins-ci.org/hudson/model/Cause.UserIdCause.html

的問題是混淆升技所以不知道如果這有助於在所有。無論如何,您應該能夠從getLastBuild()中提取所需的所有信息。

在構建開始之前無法獲得額外的參數。如果那是你的意思。