jenkins - 詹金斯声明性管道的不可序列化错误
问题描述
我试图从我的管道中触发我的电子邮件推广工作,该管道从Jenkins
消息中提取回购名称。但无法解决SerializableException
此块的错误。任何帮助是极大的赞赏。
post{
success{
script{
@NonCPS
//upstream_job_name = null
def manager = manager.getLogMatcher('.*Obtained Jenkinsfile from git (.*)$')
if(manager.matches()){
def gitMsg=manager.group(1)
gitrepo = "${gitMsg}"
echo gitrepo
def upstream_job_name = gitrepo.split("/")[4].replace(".git", "")
println upstream_job_name
}
build job: 'job-approval' , parameters: [[$class: 'StringParameterValue', name: 'upstream_job_name', value: upstream_job_name]]
}
}
}
以下是我收到的错误消息:
[Pipeline] // 执行成功后的脚本错误:
java.io.NotSerializableException: java.util.regex.Matcher at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:926) at org.jboss.marshalling.river.BlockMarshaller.doWriteObject(BlockMarshaller.java:65 ) 在 org.jboss.marshalling.river.BlockMarshaller.writeObject(BlockMarshaller.java:56) 在 org.jboss.marshalling.MarshallerObjectOutputStream.writeObjectOverride(MarshallerObjectOutputStream.java:50) 在 org.jboss.marshalling.river.RiverObjectOutputStream.writeObjectOverride( RiverObjectOutputStream.java:179)
解决方案
您需要manager
在使用后立即释放。更多细节可以在这篇文章中找到
script{
//upstream_job_name = null
def manager = manager.getLogMatcher('.*Obtained Jenkinsfile from git (.*)$')
if(manager.matches()){
def gitMsg=manager.group(1)
gitrepo = "${gitMsg}"
echo gitrepo
def upstream_job_name = gitrepo.split("/")[4].replace(".git", "")
println upstream_job_name
}
manager = null
build job: 'job-approval' ,
parameters: [
[$class: 'StringParameterValue', name: 'upstream_job_name', value: upstream_job_name]
]
}
推荐阅读
- ethereum - 构建我的第一个智能合约应用程序
- python - 我想为 Python 中的 DataFrame 生成“最佳”和“最差”评论的 WordCloud
- reactjs - 无法将参数传递给 React 处理函数
- flutter - 如何将小部件靠近关闭?
- windows - 如何更改 Windows Defender 的日志文件?
- postgresql - Db2 选择子查询
- android - 从 firebase 检索数据时查看 PostIME 0,1 错误
- python - 如何将 Python 网络爬虫打包为 Chrome 扩展程序?
- java - Java - 来自不同对象类型的相同属性的比较器类
- excel - 向 IF/OR 添加多个语句