diff --git a/release/clouddeploy/delivery-pipeline.yaml b/release/clouddeploy/delivery-pipeline.yaml index 71975d409ca..8ed36c21634 100644 --- a/release/clouddeploy/delivery-pipeline.yaml +++ b/release/clouddeploy/delivery-pipeline.yaml @@ -99,8 +99,8 @@ serialPipeline: gcloud storage cp gs://${PROJECT_ID}-deploy/${TAG_NAME}/cloudbuild-schema-verify-${TARGET_ID}.yaml . gcloud builds submit --no-source --config=cloudbuild-schema-verify-${TARGET_ID}.yaml analysis: - # 10 minutes. - duration: 600s + # 30 minutes. + duration: 1800s googleCloud: alertPolicyChecks: sandboxPartialDeploymentAlertPolicyChecks @@ -108,8 +108,8 @@ serialPipeline: profiles: ["sandbox-partial-phase-5"] percentage: 50 analysis: - # 10 minutes. - duration: 600s + # 30 minutes. + duration: 1800s googleCloud: alertPolicyChecks: sandboxPartialDeploymentAlertPolicyChecks @@ -155,8 +155,8 @@ serialPipeline: gcloud storage cp gs://${PROJECT_ID}-deploy/${TAG_NAME}/cloudbuild-deploy-gke-${TARGET_ID}.yaml . gcloud builds submit --no-source --config=cloudbuild-deploy-gke-${TARGET_ID}.yaml analysis: - # 10 minutes. - duration: 600s + # 30 minutes. + duration: 1800s googleCloud: alertPolicyChecks: sandboxStableDeploymentAlertPolicyChecks @@ -183,8 +183,8 @@ serialPipeline: gcloud storage cp gs://${PROJECT_ID}-deploy/${TAG_NAME}/cloudbuild-schema-verify-${TARGET_ID}.yaml . gcloud builds submit --no-source --config=cloudbuild-schema-verify-${TARGET_ID}.yaml analysis: - # 10 minutes. - duration: 600s + # 1 hour. + duration: 3600s googleCloud: alertPolicyChecks: productionPartialDeploymentAlertPolicyChecks @@ -192,8 +192,8 @@ serialPipeline: profiles: ["production-partial-phase-5"] percentage: 50 analysis: - # 10 minutes. - duration: 600s + # 1 hour. + duration: 3600s googleCloud: alertPolicyChecks: productionPartialDeploymentAlertPolicyChecks @@ -250,8 +250,8 @@ serialPipeline: gcloud storage cp gs://${PROJECT_ID}-deploy/${TAG_NAME}/cloudbuild-deploy-gke-${TARGET_ID}.yaml . gcloud builds submit --no-source --config=cloudbuild-deploy-gke-${TARGET_ID}.yaml analysis: - # 10 minutes. - duration: 600s + # 1 hour. + duration: 3600s googleCloud: alertPolicyChecks: productionStableDeploymentAlertPolicyChecks @@ -260,18 +260,34 @@ apiVersion: deploy.cloud.google.com/v1 kind: Automation metadata: name: deploy-nomulus/auto-advance-canary -description: Automatically advances rollouts through canary-1 phase after successful deployment and analysis. +description: Automatically advances rollouts through canary-1 and canary-5 phases in non-prod. # Placeholder: Replace with project service account. serviceAccount: serviceAccount selector: targets: - id: crash - id: sandbox - - id: production rules: - advanceRolloutRule: id: advance-canary-phases sourcePhases: - "canary-1" + - "canary-5" + wait: 0m +--- +apiVersion: deploy.cloud.google.com/v1 +kind: Automation +metadata: + name: deploy-nomulus/auto-promote-crash-to-sandbox +description: Automatically promotes release to sandbox after successful rollout in crash. +# Placeholder: Replace with project service account. +serviceAccount: serviceAccount +selector: + targets: + - id: crash +rules: +- promoteReleaseRule: + id: promote-crash-to-sandbox + destinationTargetId: "sandbox" wait: 0m diff --git a/release/clouddeploy/skaffold.yaml b/release/clouddeploy/skaffold.yaml index 80941d47969..7707f5664a1 100644 --- a/release/clouddeploy/skaffold.yaml +++ b/release/clouddeploy/skaffold.yaml @@ -5,6 +5,10 @@ metadata: name: nomulus-skaffold profiles: - name: crash + # Note: The stable profile intentionally includes partial-phase-5 manifests alongside + # primary workloads. This ensures that the candidate image is deployed across both deployments, + # maintaining stable pod and GKE node allocation to prevent churn on nodes hosting persistent + # registrar sessions. manifests: rawYaml: - ../../jetty/kubernetes/nomulus-crash-backend.yaml @@ -40,6 +44,10 @@ profiles: deploy: kubectl: { } - name: sandbox + # Note: The stable profile intentionally includes partial-phase-5 manifests alongside + # primary workloads. This ensures that the candidate image is deployed across both deployments, + # maintaining stable pod and GKE node allocation to prevent churn on nodes hosting persistent + # registrar sessions. manifests: rawYaml: - ../../jetty/kubernetes/nomulus-sandbox-backend.yaml @@ -75,6 +83,10 @@ profiles: deploy: kubectl: { } - name: production + # Note: The stable profile intentionally includes partial-phase-5 manifests alongside + # primary workloads. This ensures that the candidate image is deployed across both deployments, + # maintaining stable pod and GKE node allocation to prevent churn on nodes hosting persistent + # registrar sessions. manifests: rawYaml: - ../../jetty/kubernetes/nomulus-production-backend.yaml