Jenkins管道-使用sh和curl获取java.io.NotSerializableException

2jcobegt  于 2022-11-01  发布在  Jenkins
关注(0)|答案(2)|浏览(235)

我正在创建一个jenkins管道,它会在某个时候创建一个Jira Ticket。不幸的是,我得到了:java.io.NotSerializableException: org.codehaus.groovy.runtime.EncodingGroovyMethods$1
编码:

token = createEncodedToken()

    def curlCommand = "curl -H 'Authorization: Basic ${token}' -X POST -d \'${payload}\' -H 'Content-Type: application/json' ${jira_url} > JIRA_TICKET"

    try {
        println "executing: ${curlCommand}"
        sh "${curlCommand}"
    } catch (NotSerializableException err) {
        println "${err}"
    }

创建编码令牌:

def createEncodedToken() {
   def auth = "${jira_user}:${jira_password}"
   return auth.bytes.encodeBase64()
}

得到的curlCommand可以工作!我可以在curl或示例管道中发送它。但是当我在我的jira.groovy脚本中使用它时,我就得到了异常。

[Pipeline] echo
executing: curl -H "Authorization: Basic MYTOKEN=" -X POST -d "{"fields":{"project":{"key":"KEY"},"summary":"Pipeline Test","description":"Creating of an issue using project keys and issue type names using the REST API","issuetype":{"name":"Story"}}}" -H "Content-Type: application/json" https://MYJIRA/rest/api/2/issue/ > JIRA_TICKET
[Pipeline] sh
[plinetest] Running shell script
[Pipeline] echo
java.io.NotSerializableException: org.codehaus.groovy.runtime.EncodingGroovyMethods$1

输出文件JIRA_TICKET用于读取生成的问题密钥。
有趣的事实:虽然我得到了一个异常,但票证已创建......但我无法读取JIRA_TICKET文件。
我目前正在Sandbox Pipeline中进行测试:

def jira = fileLoader.fromGit('jira.groovy', 'MYBITBUCKET-pipeline.git', 'master', 'CREDS', '')
echo "create ticket"
def payload = '{"fields":{"project":{"key":"KEY"},"summary":"Pipeline  Test","description":"Creating of an issue using project keys and issue type names using the REST API","issuetype":{"name":"Story"}}}'
jira.createTicket(payload)

调用经过测试,运行正常。也许是jira lib导致了这个问题?我知道jenkins管道的Serializable概念,但我不明白我错过了什么。我现在很无知...任何帮助都是感激的。

q5lcpyga

q5lcpyga1#

encodeBase64()不返回字符串。它返回一个实现groovy.lang.Writeable的类,该类具有toString()方法。
您需要显式调用toString()。

iqxoj9l9

iqxoj9l92#

请尝试使用new URL(jira_url).openConnection();而不是curl。您可以参考此Groovy built-in REST/HTTP client?

相关问题