Мы использовали конфигурацию развертывания с триггером изменения изображения, чтобы при появлении нового изображения в настроенном потоке изображений запускалось новое развертывание.Это сработало относительно хорошо, но теперь мы получили новый вызов.Конвейер должен дождаться завершения развертывания и отразить успех / неудачу в качестве результата работы.
Мы рассчитывали пока приостановить развертывание, пока создается изображение.Затем, после создания, отмените развертывание и разверните его в явном виде, затем дождитесь завершения развертывания:
# To work well with previously auto triggered deployments, pause rollouts if present
oc rollout pause dc "$SOURCE_NAME" || true
# apply deployment config
# TODO: Pass all the template parameters
oc process -f delivery-automation/openshift/jdk-service-template.yml -p "SOURCE_NAME=$SOURCE_NAME" -p "IMAGE_NAME=$IMAGE_NAME" | oc apply -f - --validate
# tag the correct image version as latest
# https://docs.openshift.com/container-platform/3.4/dev_guide/application_lifecycle/promoting_applications.html
oc tag "$OC_PROJECT_STORAGE/$IMAGE_NAME:$SOURCE_VERSION" "$IMAGE_NAME:latest"
# gogogogo
oc rollout resume dc "$SOURCE_NAME" || true
#new deployment with latest image
oc rollout latest "$SOURCE_NAME"
#check for rollout is success
oc rollout status "dc/$SOURCE_NAME" --watch
Это почти работает, за исключением того, что оно по-прежнему вызывает развертывания при изменении образа, которое затем завершается неудачно на oc rollout latest
, поскольку другое развертываниеуже выполняется.
РЕДАКТИРОВАТЬ: Команда oc rollout resume
фактически запускает развертывание при изменении изображения!
Мы также пытались изменить триггер, чтобы не запускать егоавтоматически безрезультатно:
triggers:
- type: ImageChange
imageChangeParams:
automatic: false
containerNames:
- ${SOURCE_NAME}
from:
kind: ImageStreamTag
name: '${IMAGE_NAME}:latest'
Мы также пытались полностью удалить триггер изменения изображения, но затем развертывание не выполняется, поскольку оно не может разрешить фактическое изображение.