我在Jenkins中具有部署阶段,该阶段执行“ oc补丁”和“ oc推出”命令。这些命令将替换DeploymentConfig中的docker映像名称,并在openshift中推出更改。 可以想象,这是异步调用。这意味着在Jenkins中,我无法验证新部署的Pod是否正在运行或发生故障。 Jenkins只是执行oc命令并进入下一阶段的执行。我的要求是,我想在Jenkins中返回pod的实际状态,以标记管道成功/失败。
我找不到任何oc或kubectl命令,可以使用同步调用为我提供确切的部署状态。作为解决方法,我编写了shell脚本,该脚本在“ oc rollout”发布后的一定时间内检查pod的状态(使用grep),然后将退出状态发送回Jenkins shell。随着管道执行时间的增加,我觉得这不是进行部署验证的正确方法。
我们在openshift / kubernetes中是否有标准实用程序,它可以为我提供Pod post部署的确切状态,我可以依靠它并可以在Jenkins中标记部署管道的成功/失败。
请注意,我正在管道中打开shell会话,并在已安装oc cli的代理上执行oc cli命令。该代理不是openshift集群的一部分,Jenkins坐在openshift集群之外。