2017-06-19 90 views
1

我寫了加載到我的管道下面的功能:這個Groovy方法中的「不可序列化」是什麼?

def userTrigger() { 
    [$class: 'UsernamePasswordMultiBinding', credentialsId: jenkins_creds, usernameVariable: 'J_USER', passwordVariable: 'J_PASS'], 
    ]){ 
     cmd = "curl -s -u \${J_USER}:\${J_PASS} \${env.BUILD_URL}api/json | python -mjson.tool | grep userId | awk '{print \$2}' | tr -d '"|,' " 
     def ut = sh(returnStdout: true, script: cmd) 
     return ut 
    } 
} 

結果應該是誰引發構建了一個用戶名,清理它看起來像這樣在輸出之前:

"userId": "itaig", 

基本上,這個:

awk -F'"' '{print $4}' 

也會給我所需要的輸出,但我不知道如何逃脫字符這個說法了。

當我運行的工作,我得到以下錯誤:

java.io.NotSerializableException: org.codehaus.groovy.control.ErrorCollector 
    at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:860) 
    at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1032) 
    at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:988) 
    at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854) 

我非常肯定它是與我的逃避相關人物的嘗試,但我有一種感覺,我的天堂「T做是正確的,我已經試過逃避(「)在CMD行的末尾,但無濟於事。

你可以嘗試找到我的問題?

回答

2

什麼是右括號,右3號線支架關閉?

]){ 

這可能是更多的雙引號和單引號,然後轉義角色 - 確保他們配對很好。

+0

這就是使用UsernamePasswordMultiBinding類的方法,我使用它以便能夠將jenkins用戶名和密碼作爲掩碼值注入到curl命令中。 –

+0

你可以在這裏看到它:https://support.cloudbees.com/hc/en-us/articles/204897020-Fetch-a-userid-and-password-from-a-Credential-object-in-a-Pipeline -job-?mobile_site = true –

+0

@ItaiGanot - 在你的鏈接的例子中,所有的括號都是「平衡的」,但你的問題中的括號是「不平衡的」。我手動計算後(從左起第一個+1,右側第-1個)示例和幾個樣本 - 只有您發佈的答案是不平衡的。我使用Notepad ++插件「BracketsCheck」和鏈接頁面中的所有示例進行了雙重檢查 - 並且問題中的示例代碼因「不平衡」而失敗。我計算了1個左括號和2個右括號。除了這些之外,別以爲我會有很多幫助:-)。 –

相關問題