mirror of
https://github.com/google/nomulus
synced 2026-08-15 11:46:08 +00:00
* Fix image replacement in cd (#3186) * read sql jobs from ar * revert release change * flatten file path for sql jobs * no source to sql command * add automation to pipeline * fix automation * fix replica seize for backend and console in partial phases
158 lines
5.8 KiB
YAML
158 lines
5.8 KiB
YAML
apiVersion: deploy.cloud.google.com/v1
|
|
kind: DeliveryPipeline
|
|
metadata:
|
|
name: deploy-nomulus
|
|
description: deploy-nomulus is a Cloud native replacement for Spinnaker that enables
|
|
gradual rollouts and SLA-based canary analysis for Nomulus.
|
|
serialPipeline:
|
|
stages:
|
|
- targetId: crash
|
|
strategy:
|
|
canary:
|
|
customCanaryDeployment:
|
|
phaseConfigs:
|
|
- phaseId: "canary-1"
|
|
profiles: ["crash-partial-phase-1"]
|
|
percentage: 10
|
|
analysis:
|
|
# 10 minutes.
|
|
duration: 600s
|
|
googleCloud:
|
|
alertPolicyChecks:
|
|
crashPartialDeploymentAlertPolicyChecks
|
|
- phaseId: "canary-5"
|
|
profiles: ["crash-partial-phase-5"]
|
|
percentage: 50
|
|
analysis:
|
|
# 10 minutes.
|
|
duration: 600s
|
|
googleCloud:
|
|
alertPolicyChecks:
|
|
crashPartialDeploymentAlertPolicyChecks
|
|
- phaseId: "stable"
|
|
profiles: ["crash"]
|
|
percentage: 100
|
|
postdeploy:
|
|
tasks:
|
|
- type: container
|
|
image: gcr.io/google.com/cloudsdktool/google-cloud-cli:stable
|
|
env:
|
|
DEPLOYED_IMAGE: ${{ deploy_params['deployed_image'] }}
|
|
BASE_IMAGE: ${{ deploy_params['base_image'] }}
|
|
TARGET_ID: ${{ target.id }}
|
|
command: ["/bin/bash"]
|
|
args:
|
|
- "-c"
|
|
- |
|
|
gcloud container images add-tag $DEPLOYED_IMAGE \
|
|
${BASE_IMAGE}:live-cd-${TARGET_ID} --quiet
|
|
- type: container
|
|
image: gcr.io/google.com/cloudsdktool/google-cloud-cli:stable
|
|
env:
|
|
TARGET_ID: ${{ target.id }}
|
|
TAG_NAME: ${{ deploy_params['tag_name'] }}
|
|
PROJECT_ID: ${{ deploy_params['project_id'] }}
|
|
command: ["/bin/bash"]
|
|
args:
|
|
- "-c"
|
|
- |
|
|
gcloud storage cp gs://${PROJECT_ID}-deploy/${TAG_NAME}/cloudbuild-schema-deploy-${TARGET_ID}.yaml .
|
|
gcloud builds submit --no-source --config=cloudbuild-schema-deploy-${TARGET_ID}.yaml
|
|
analysis:
|
|
# 10 minutes.
|
|
duration: 600s
|
|
googleCloud:
|
|
alertPolicyChecks:
|
|
crashStableDeploymentAlertPolicyChecks
|
|
- targetId: sandbox
|
|
strategy:
|
|
canary:
|
|
customCanaryDeployment:
|
|
phaseConfigs:
|
|
- phaseId: "canary-1"
|
|
profiles: ["sandbox-partial-phase-1"]
|
|
percentage: 10
|
|
predeploy:
|
|
tasks:
|
|
- type: container
|
|
image: gcr.io/google.com/cloudsdktool/google-cloud-cli:stable
|
|
env:
|
|
TARGET_ID: ${{ target.id }}
|
|
TAG_NAME: ${{ deploy_params['tag_name'] }}
|
|
PROJECT_ID: ${{ deploy_params['project_id'] }}
|
|
command: ["/bin/bash"]
|
|
args:
|
|
- "-c"
|
|
- |
|
|
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
|
|
googleCloud:
|
|
alertPolicyChecks:
|
|
sandboxPartialDeploymentAlertPolicyChecks
|
|
- phaseId: "canary-5"
|
|
profiles: ["sandbox-partial-phase-5"]
|
|
percentage: 50
|
|
analysis:
|
|
# 10 minutes.
|
|
duration: 600s
|
|
googleCloud:
|
|
alertPolicyChecks:
|
|
sandboxPartialDeploymentAlertPolicyChecks
|
|
- phaseId: "stable"
|
|
profiles: ["sandbox"]
|
|
percentage: 100
|
|
postdeploy:
|
|
tasks:
|
|
- type: container
|
|
image: gcr.io/google.com/cloudsdktool/google-cloud-cli:stable
|
|
env:
|
|
DEPLOYED_IMAGE: ${{ deploy_params['deployed_image'] }}
|
|
BASE_IMAGE: ${{ deploy_params['base_image'] }}
|
|
TARGET_ID: ${{ target.id }}
|
|
command: ["/bin/bash"]
|
|
args:
|
|
- "-c"
|
|
- |
|
|
gcloud container images add-tag $DEPLOYED_IMAGE \
|
|
${BASE_IMAGE}:live-cd-${TARGET_ID} --quiet
|
|
- type: container
|
|
image: gcr.io/google.com/cloudsdktool/google-cloud-cli:stable
|
|
env:
|
|
TARGET_ID: ${{ target.id }}
|
|
TAG_NAME: ${{ deploy_params['tag_name'] }}
|
|
PROJECT_ID: ${{ deploy_params['project_id'] }}
|
|
command: ["/bin/bash"]
|
|
args:
|
|
- "-c"
|
|
- |
|
|
gcloud storage cp gs://${PROJECT_ID}-deploy/${TAG_NAME}/cloudbuild-schema-deploy-${TARGET_ID}.yaml .
|
|
gcloud builds submit --no-source --config=cloudbuild-schema-deploy-${TARGET_ID}.yaml
|
|
analysis:
|
|
# 10 minutes.
|
|
duration: 600s
|
|
googleCloud:
|
|
alertPolicyChecks:
|
|
sandboxStableDeploymentAlertPolicyChecks
|
|
---
|
|
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.
|
|
# Placeholder: Replace with project service account.
|
|
serviceAccount: serviceAccount
|
|
selector:
|
|
targets:
|
|
- id: crash
|
|
- id: sandbox
|
|
rules:
|
|
- advanceRolloutRule:
|
|
id: advance-canary-phases
|
|
sourcePhases:
|
|
- "canary-1"
|
|
wait: 0m
|
|
|