Jenkins 有没有办法解析控制台输出并设置环境变量
我对詹金斯比较陌生。我进入了这样一个场景:我需要读取控制台输出并找到一个特定的字符串,然后将其设置为环境变量。我将在一些下游工作中使用这个变量 例如:my jenkins job的控制台将包含以下内容Jenkins 有没有办法解析控制台输出并设置环境变量,jenkins,Jenkins,我对詹金斯比较陌生。我进入了这样一个场景:我需要读取控制台输出并找到一个特定的字符串,然后将其设置为环境变量。我将在一些下游工作中使用这个变量 例如:my jenkins job的控制台将包含以下内容 product\u build\u number:123456 我已经研究了FindText,类似于日志解析器的插件,但它们不能帮助我将这个值设置为环境变量 有人能帮忙找到这个号码并把它传给下游的工作吗 ** 更新后的答复: ** 考虑使用 例如: 如果检测到使用了不推荐的方法,下面的脚本会放置一
product\u build\u number:123456
我已经研究了FindText,类似于日志解析器的插件,但它们不能帮助我将这个值设置为环境变量
有人能帮忙找到这个号码并把它传给下游的工作吗
**
更新后的答复:
**
考虑使用
例如:
如果检测到使用了不推荐的方法,下面的脚本会放置一个警告标志,并将生成标记为不稳定
这是您(通过控制台)获取此号码的唯一方法吗?你能用任何其他方法获得版本号吗?(读取属性文件、查询服务)?此数字是在我的作业期间执行的其他脚本的输出。我对这个脚本没有控制权。我会尝试让您知道,在一段时间内,我必须从ParametersAction中删除“[]”,并添加System.setProperty(“hudson.model.ParametersAction.safeParameters”,“BUILD_MSG”)或jenkins Dhudson.model.ParametersAction.safeParameters=BUILD_MSG的开头以使其工作。
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
}
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()
}
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}")
])
)
}