我正在使用詹金斯。
Jenkins 有一份上游工作:A
Jenkins 有一份下游工作:B
A 的控制台日志输出为:
1
2
3
B 的控制台日志输出为:
A
B
C
我想要得到的是:
有什么办法,我可以在作业 A 的控制台日志中获取作业 B 的控制台输出,然后决定作业“A”是否成功(使用日志解析/grep 关键字来表示失败/错误等)。
不知道你想达到什么,但它看起来相当做作。看看以下方法是否符合您的需求:作为构建步骤,通过参数化触发器插件从Job A启动Job B。A可以选择等待B,然后根据B调整A 的构建结果。
一种快速简便的方法是只使用 curl
IE
curl http://myJenkinsServer:9090/job/ProjectNamel/$childJobLastBuildNumber/consoleFull | sed "s#<span class="timestamp"><b>##g;s#</b> </span># #g"
... 其中 $childJobLastBuildNumber 是子/下游作业的最新/最后构建#。
使用 curl 和 sed - 现在我可以在父作业中显示子/下游作业的输出,如果我运行上面的curl | sed ..执行 Shell中的命令。
获取作业 B 的控制台输出。
我没有找到比使用cat
. 您必须将“作业 B 触发器”步骤设置为block
. 因此,在工作 B 完成之前,工作 A 不会完成。然后在“job B trigger”步骤之后,添加一个执行shell脚本的步骤。
cat "$JENKINS_HOME/jobs/<PATH_TO_YOUR_JOB>/builds/$TRIGGERED_BUILD_NUMBER_<FOLDER_AND_JOB_NAME>/log"
请注意,这$TRIGGERED_BUILD_NUMBER_<FOLDER_AND_JOB_NAME>
是 Jenkins 动态注入的环境变量。
根据作业 B 判断作业 A 是否失败。
您不必解析下游作业的控制台输出。在上游作业的配置中,当触发作业 B 时,您可以选择。喜欢:
- 如果触发的构建更差或等于,则此构建步骤失败
- 如果触发的构建更差或等于,则将此构建标记为失败
- 如果触发的构建更差或等于,则将此构建标记为不稳定