【发布时间】:2020-01-19 23:22:13
【问题描述】:
我在 Jenkins 中有执行“oc patch”和“oc rollout”命令的部署阶段。这些命令替换了 DeploymentConfig 中的 docker 镜像名称,并在 openshift 中发布了更改。 可以想象,这是异步调用。这意味着在 Jenkins 中,我无法验证新部署的 pod 是否正在运行或失败。 Jenkins 只是执行 oc 命令并继续执行下一个阶段。我的要求是我想在 Jenkins 中获取 pod 的实际状态以标记管道成功/失败。
我找不到任何 oc 或 kubectl 命令可以使用同步调用为我提供准确的部署状态。作为解决方法,我编写了 shell 脚本,它在“oc rollout”后的一定时间内检查 pod 的状态(使用 grep),并将退出状态发送回 Jenkins shell。随着管道执行时间的增加,我觉得这不是进行部署验证的正确方法。
我们在 openshift/kubernetes 中是否有标准实用程序,它可以提供我可以依赖的 pod 部署后的准确状态,并使用它可以在 Jenkins 中标记我的部署管道成功/失败。
请注意,我正在管道中打开 shell 会话并在安装了 oc cli 的代理上执行 oc cli 命令。此代理不是 openshift 集群的一部分,Jenkins 位于 openshift 集群之外。
【问题讨论】:
-
你试过
oc rollout status。它将等待部署完成。
标签: jenkins kubernetes openshift