我对詹金斯来说比较新。我进入了一个场景,我需要读取控制台输出并找到一个特定的字符串并将其设置为环境变量。我将在一些下游工作中使用这个变量。
例如:我的jenkins job的控制台将包含类似的内容 product_build_number: 123456
我查看过FindText,像插件一样记录解析器,但是他们没有帮助我将这个值设置为环境变量
有人可以帮助找到这个号码并将其传递给下游工作吗?
**
更新了答案:
**
def matcher = manager.getLogMatcher(".*product_build_number=(\\d+.*)")
if(matcher.matches()) {
pbn= matcher.group(1).substring(0)
manager.build.setDescription(pbn) // you can do anything with this here
}
答案 0 :(得分:1)
示例:
下面的脚本会发出一个警告标记,如果检测到已弃用的方法被使用,则会将构建标记为不稳定。
if(manager.logContains(".*uses or overrides a deprecated API.*")) {
manager.addWarningBadge("Thou shalt not use deprecated methods.")
manager.createSummary("warning.gif").appendText("<h1>You have been warned!</h1>", false, false, false, "red")
manager.buildUnstable()
}
完整的解决方案不仅使用Groovy Postbuild Plugin来解析控制台输出和设置变量BUILD_MSG
,还需要Parameterized Trigger Plugin来触发具有预定义参数MSG=${BUILD_MSG}
的下游作业。下游作业自动访问MSG
参数。
Groovy Postbuild脚本:
import hudson.model.*
matcher = manager.getLogMatcher('^build msg: (.*)$')
if (matcher.matches()) {
buildMsg=matcher.group(1)
manager.build.addAction(
new ParametersAction([
new StringParameterValue("BUILD_MSG", "${buildMsg}")
])
)
}