【发布时间】:2018-08-31 09:33:15
【问题描述】:
我的 openshift jenkins 管道在推出时的最后一步失败。 Openshift 中的手动构建工作正常。它正在创建 Pod 并终止其他 Pod。就像使用管道时的接缝一样,它无法终止以前正在运行的 Pod。
当我手动终止正在运行的 pod 时,然后启动管道它工作正常。
然而,类似的管道在我们的测试环境中运行良好。
... previous stages
stage('PROD: Deploying image') {
when {
expression {
openshift.withCluster() {
openshift.withProject(PROD_PROJECTSPACE) {
return !openshift.selector('dc', "${APPLICATION_NAME}").exists()
}
}
}
}
steps {
script {
openshift.withCluster() {
openshift.withProject(PROD_PROJECTSPACE) {
openshift.newApp("${APPLICATION_NAME}:latest --allow-missing-imagestream-tags").narrow('svc').expose("--port=3013");
def dc = openshift.selector("dc", "${APPLICATION_NAME}");
while (dc.object().spec.replicas != dc.object().status.availableReplicas) {
sleep 10
}
openshift.set("triggers", "dc/${APPLICATION_NAME}", "--manual")
}
}
}
}
}
Failing in this stage
stage('PROD: Rollout') {
steps {
script {
openshift.withCluster() {
openshift.withProject(PROD_PROJECTSPACE) {
openshift.selector("dc", "${APPLICATION_NAME}").rollout().latest();
}
}
}
}
这是错误
ERROR: rollout:latest returned an error;
{reference={}, err=error: #15 is already in progress (Running)., verb=rollout, cmd=oc --server=https://172.30.0.1:443 --certificate-authority=/var/run/secrets/kubernetes.io/serviceaccount/ca.crt --namespace=global-prod --token=XXXXX rollout latest deploymentconfig/global-events , out=, status=1}
Finished: FAILURE
你能指点我吗,任何帮助都会有帮助
【问题讨论】:
-
使用 oc create -f myfile.yaml 创建了该管道
-
您是否还有在 DeploymentConfig 中定义的 ImageChange 触发器?如果使用管道触发部署,则需要删除它。如果你不这样做,当镜像构建时,一个新的部署将自动触发,这意味着 Jenkins 将同时尝试并触发一个新的部署。
-
你的意思是这个---触发器:-imageChangeParams:containerNames:-全局事件来自:种类:ImageStreamTag名称:'global-events:latest'命名空间:global-test lastTriggeredImage:>-docker -registry.default.svc:5000/global-test/global-events@sha256:39f46ecd98b212d9afca2150821994d0d1dde970cd0a5be1ce096a854e206b9d 类型:ImageChange
-
是的,运行
oc set triggers dc/yourappname --from-image --remove。
标签: openshift jenkins-pipeline