Jenkins groovy regex match string : Error: java.io.NotSerializableException: java.util.regex.Matcher(Jenkins groovy 正则表达式匹配字符串:错误:java.io.NotSerializableException:java.util.regex.Matcher)
问题描述
我正在尝试从 groovy 中的正则表达式中获取匹配的字符串.匹配的字符串打印到控制台没有问题,但是当我尝试在 git 命令中使用匹配的字符串时,我收到以下错误:
I'm trying to get the matched string from a regex in groovy. The matched string prints to the console without problems, but when I try use the matched string in a git command I get the following error:
Err: Incremental Build failed with Error: java.io.NotSerializableException: java.util.regex.Matcher
代码如下:
def binaryName = "298_application_V2_00_Build_07.hex"
def matches = (binaryName =~ /(V)(d+)(_)(d+)(_)(Build)(_)(d+)/)
versionTag = ""+matches[0].getAt(0)
echo "${matches}"
echo "$versionTag"
bat("git tag $versionTag")
bat("git push origin --tags")
如何从正则表达式中获取匹配的字符串?
How can I get the matched string from the regex?
推荐答案
这个问题是Jenkins的CPS,它将所有管道执行序列化以存储为可恢复状态.
This problem is caused by Jenkins' CPS, which serializes all pipeline executions to store as resumable state.
对不可序列化方法的调用必须包装在一个用 @NonCPS
注释的方法中:
Calls to non-serializable methods have to be wrapped in a method annotated with @NonCPS
:
@NonCPS
String getVersion(String binaryName) {
def matches = (binaryName =~ /(V)(d+)(_)(d+)(_)(Build)(_)(d+)/)
versionTag = ""+matches[0].getAt(0)
versionTag
}
现在可以从您的管道中调用此方法.如果您的 Jenkins master 在执行此方法期间重新启动,它将完全运行它 - 在许多情况下,例如您的,绝对没有问题.
this method can now be called from your pipeline. In case your Jenkins master restarts during execution of this method, it would just run through it completely - which is in many cases, such as yours, absolutely no problem.
这篇关于Jenkins groovy 正则表达式匹配字符串:错误:java.io.NotSerializableException:java.util.regex.Matcher的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Jenkins groovy 正则表达式匹配字符串:错误:java.io.NotSerializableException:java.util.regex.Matcher
基础教程推荐
- “未找到匹配项"使用 matcher 的 group 方法时 2022-01-01
- 如何使用 Java 创建 X509 证书? 2022-01-01
- 降序排序:Java Map 2022-01-01
- Java Keytool 导入证书后出错,"keytool error: java.io.FileNotFoundException &拒绝访问" 2022-01-01
- FirebaseListAdapter 不推送聊天应用程序的单个项目 - Firebase-Ui 3.1 2022-01-01
- 设置 bean 时出现 Nullpointerexception 2022-01-01
- 无法使用修饰符“public final"访问 java.util.Ha 2022-01-01
- Java:带有char数组的println给出乱码 2022-01-01
- 减少 JVM 暂停时间 >1 秒使用 UseConcMarkSweepGC 2022-01-01
- 在 Libgdx 中处理屏幕的正确方法 2022-01-01