【发布时间】:2019-12-04 21:34:26
【问题描述】:
我想监控重新部署任务后创建的 kubernetes pod,一旦完成,我想检查 liquibase 日志。如果成功,我想删除作业。我怎样才能在gradle中实现这一点?我不想在重新部署后立即取消部署。所以 doLast 不是一个选择。下面的代码不会一直打印 ob还没有完成
task undeployAfterCompleted() {
group "kubernetes"
description "Undeploy the liquibase update job after completion"
def output = new ByteArrayOutputStream()
commandLine "bash", "-c", "kubectl get po -n pbr | grep 'liquibase' | awk '{ print \$3 }'"
while(!output.toString().equals('Completed')) {
sleep(5 * 1000)
println "Job has not completed yet."
commandLine "bash", "-c", "kubectl get po -n pbr | grep 'liquibase' | awk '{ print \$3 }'"
}
tasks.undeploy.execute()
}
【问题讨论】:
-
不..我不依赖一项任务来运行另一项任务。我只是检查 kubectl 命令的结果以执行一个名为 undeploy 的任务。
-
我的问题是如何编写一个while循环来持续监听每10分钟左右执行一次的kubectl命令的结果
-
所以我认为首先所有功能代码都应该进入 doLast(或 doFirst),因为您需要在 gradle 执行阶段而不是配置阶段运行它。然后我不确定您当前代码的哪一部分应该更新输出变量。也许 exec 会有所帮助:stackoverflow.com/questions/11093223
标签: gradle