gpt4 book ai didi

java - Jenkins groovy 正则表达式匹配字符串 : Error: java. io.NotSerializableException : java. util.regex.Matcher

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:06:04 27 4
gpt4 key购买 nike

我正在尝试从 groovy 中的正则表达式中获取匹配的字符串。匹配的字符串毫无问题地打印到控制台,但是当我尝试在 git 命令中使用匹配的字符串时,出现以下错误:

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")

如何从正则表达式中获取匹配的字符串?

最佳答案

这个问题是由 Jenkins 的 CPS 引起的,它序列化所有管道执行以存储为可恢复状态。

对不可序列化方法的调用必须包装在用 @NonCPS 注释的方法中:

@NonCPS
String getVersion(String binaryName) {
def matches = (binaryName =~ /(V)(\d+)(_)(\d+)(_)(Build)(_)(\d+)/)
versionTag = ""+matches[0].getAt(0)
versionTag
}

现在可以从您的管道中调用此方法。如果您的 Jenkins master 在执行此方法期间重新启动,它将完全运行它 - 在许多情况下,例如您的情况,绝对没有问题。

关于java - Jenkins groovy 正则表达式匹配字符串 : Error: java. io.NotSerializableException : java. util.regex.Matcher,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47646409/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com