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行的末尾,但無濟於事。
你可以嘗試找到我的問題?
這就是使用UsernamePasswordMultiBinding類的方法,我使用它以便能夠將jenkins用戶名和密碼作爲掩碼值注入到curl命令中。 –
你可以在這裏看到它: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 –
@ItaiGanot - 在你的鏈接的例子中,所有的括號都是「平衡的」,但你的問題中的括號是「不平衡的」。我手動計算後(從左起第一個+1,右側第-1個)示例和幾個樣本 - 只有您發佈的答案是不平衡的。我使用Notepad ++插件「BracketsCheck」和鏈接頁面中的所有示例進行了雙重檢查 - 並且問題中的示例代碼因「不平衡」而失敗。我計算了1個左括號和2個右括號。除了這些之外,別以爲我會有很多幫助:-)。 –