Utilizzo delle notifiche di Cloud Deploy

Questa pagina descrive come utilizzare le notifiche del servizio Cloud Deploy, incluso come abbonarsi.

Cloud Deploy utilizza Pub/Sub per pubblicare notifiche per due scopi:

  • Consente di integrare Cloud Deploy con strumenti di terze parti e altri strumenti Google, come strumenti per la gestione delle richieste di flusso di lavoro o l'infrastruttura di test.

  • Per estendere Cloud Deploy con una logica di business supplementare.

Argomenti disponibili

Cloud Deploy pubblica messaggi nel seguente insieme di argomenti Google Pub/Sub:

  • clouddeploy-resources

    Quando è presente un'operazione (creazione, aggiornamento, eliminazione) su qualsiasi risorsa principale di Cloud Deploy (automazione, tipo di destinazione personalizzato, pipeline di distribuzione, esecuzione del job, rilascio, implementazione, destinazione).

  • clouddeploy-operations

    • Quando Cloud Deploy esegue il rendering della configurazione Skaffold.
    • Quando Cloud Deploy esegue il deployment in una destinazione (Start, Succeed, Failure, Terminated (esecuzione job), Cancelled (implementazione)).
  • clouddeploy-approvals

    • Quando Cloud Deploy richiede l'approvazione (o il rifiuto) di un'implementazione.
    • Quando un'implementazione è stata approvata o rifiutata.
  • clouddeploy-advances

    • Quando l'implementazione di Cloud Deploy è stata avanzata da una fase all'altra.
    • Quando un'implementazione è pronta per essere avanzata.

Puoi utilizzare un modello push o pull per le tue sottoscrizioni Pub/Sub.

Ricevi notifiche del servizio Cloud Deploy

Per ricevere le notifiche del servizio Cloud Deploy:

  1. Abilita l'API Cloud Deploy:

    Abilita l'API Cloud Deploy

    L'account di servizio dell'agente di servizio Cloud Deploy viene aggiunto automaticamente al progetto la prima volta che chiami l'API Cloud Deploy. Questo account di servizio ti consente di ricevere notifiche di servizio Cloud Deploy utilizzando Pub/Sub.

    Il nome dell'account di servizio ha il formato seguente, dove project-number è il numero del progetto:

     service-project-number@gcp-sa-clouddeploy.iam.gserviceaccount.com
    

    Se ancora non vedi l'account di servizio dell'agente di servizio Cloud Deploy nella tua pagina IAM o non puoi ricevere notifiche Pub/Sub, aggiungi questo account di servizio al tuo progetto:

    1. Apri la pagina IAM nella console Google Cloud:

      Apri la pagina IAM

    2. Fai clic su Aggiungi.

    3. Aggiungi la seguente entità, dove project-number è il numero del tuo progetto:

      service-project-number@gcp-sa-clouddeploy.iam.gserviceaccount.com
      
    4. Seleziona Service Management (Gestione servizio) > Agente di servizio Cloud Deploy come ruolo.

    5. Fai clic su Salva.

  2. Abilita l'API Pub/Sub:

    Abilita l'API Pub/Sub

  3. Crea l'argomento o gli argomenti Pub/Sub in base ai tipi di notifica che vuoi ricevere:

    gcloud pubsub topics create clouddeploy-resources
    gcloud pubsub topics create clouddeploy-operations
    gcloud pubsub topics create clouddeploy-approvals
    gcloud pubsub topics create clouddeploy-advances
    

    Per scoprire di più sulla gestione degli argomenti Pub/Sub, consulta la sezione sulla gestione degli argomenti e delle sottoscrizioni.

Iscriviti alle notifiche del servizio Cloud Deploy

Hai a disposizione diverse opzioni per iscriverti alle notifiche. Ad esempio, puoi eseguire il push dei messaggi a un endpoint o scrivere un'app Python per il polling della sottoscrizione.

Per informazioni su come configurare le sottoscrizioni Pub/Sub per le notifiche dei servizi Cloud Deploy, leggi la Guida per i sottoscrittori Pub/Sub. Puoi anche ottenere informazioni sulle librerie client Pub/Sub, che semplificano lo sviluppo di applicazioni per gli abbonati.

Valori dei campi

Questa sezione elenca i possibili valori per i campi nei messaggi Pub/Sub di Cloud Deploy.

Per Action

In queste notifiche, i possibili valori per Action sono i seguenti.

  • Per le risorse

    • Create
    • Update
    • Delete
  • Per le operazioni:

    • Start
    • Succeed
    • Failure
    • Terminated
    • Cancelled
  • Per le approvazioni:

    • Required
    • Approved
    • Rejected
  • Per gli anticipi:

    • Required
    • Advanced

Per ResourceType

I valori possibili per ResourceType sono i seguenti:

  • DeliveryPipeline
  • Target
  • Release
  • Rollout
  • JobRun

Messaggi di esempio

Gli esempi seguenti mostrano diversi tipi di messaggi Pub/Sub dagli argomenti di Cloud Deploy.

Creazione pipeline di distribuzione

Di seguito è riportato un esempio di messaggio Pub/Sub pubblicato in clouddeploy-resources in risposta alla creazione di un nuovo deliveryPipeline:

{
  "ackId":   "RFAGFixdRkhRNxkIaFEOT14jPzUgKEUQBQgUBXx9cEFMdVhddmhRDRlyfWByY11AAgVMVnldURsHaE5tdR_Wg6LHS0NVaF4TBgpGVX5fXx0IYVtedi_m7r_2wPXOXkAvOYXL6Mtpe735h9xvZiM9XxJLLD5-IzRFQV5AEkwoAURJUytDCypYEU4EISE-MD5FUw",
  "message": {
    "attributes": {
      "Action": "Create",
      "Resource": "projects/120123456789/locations/us-central1/deliveryPipelines/etest",
      "ResourceType": "DeliveryPipeline",
      "Location": "us-central1",
      "DeliveryPipelineId": "etest",
      "ProjectNumber": "120123456789",

    },
    "messageId": "2407836004659723",
    "publishTime": "2021-05-17T21:24:48.204Z"
  }
}

Inizio rendering

Di seguito è riportato un esempio di messaggio Pub/Sub pubblicato in clouddeploy-operations per notificare che è stato eseguito il rendering di una release:

{
  "ackId": "U0RQBhYsXUZIUTcZCGhRDk9eIz81IChFFwYIFAV8fXBBTHVeXHRoUQ0Zcn1gcmNfR1MLFlN5WFEaB2hObXUfioKix0tDVWheEwYKRVZ3W1kdBGFVXH0v_qD5rMP1zl5AKDnZyujLaXudkqxfZiM9XxJLLD5-PTNFQV5AEkw2BkRJUytDCypYEU4EISE-MD5F",
  "message": {
    "attributes": {
      "Action": "Start",
      "Resource": "projects/120123456789/locations/us-central1/deliveryPipelines/etest/releases/f2",
      "ResourceType": "Release"
      "Location": "us-central1",
      "DeliveryPipelineId": "etest",
      "ProjectNumber": "120123456789",
      "ReleaseId": "f2",
    },
    "messageId": "2407805942699908",
    "publishTime": "2021-05-17T21:28:04.201Z"
  }
}

È necessaria un'approvazione

Di seguito è riportato un esempio di messaggio Pub/Sub pubblicato in clouddeploy-approvals per notificare che un'implementazione richiede l'approvazione:

{
   "ackId": "RVNEUAYWLF1GSFE3GQhoUQ5PXiM_NSAoRRILUxNRXHQBWhBpWF8aB1ENGXJ8ZnxtCRBVU0FWf1VbEQ16bVxti6C2rERfQXduWhQJBkBXd11aHQhoXF9dotnkpeTv2kFwYSuN8_7mSH_Mo6AYZiA9XBJLLD5-IzZFQV5AEkwoA0RJUytDCypYEU4EISE-MD4",
   "message": {
     "attributes": {
       "Action": "Required",
       "Rollout": "projects/120123456789/locations/us-central1/deliveryPipelines/etest/releases/f2/rollouts/rollout-123"
       "ReleaseId": "f2",
       "RolloutId": "rollout-123",
       "TargetId": "prod",
       "Location": "us-central1",
       "ProjectNumber": "120123456789",
     },
     "messageId": "2407845492165003",
     "publishTime": "2021-05-17T21:31:25.143Z"
   }
 }

Avanzamento dell'implementazione

Di seguito è riportato un esempio di messaggio Pub/Sub pubblicato in clouddeploy-advances per notificare che un'implementazione è stata avanzata da una fase a quella successiva:

{
  "ackId": "RFAGFixdRkhRNxkIaFEOT14jPzUgKEUSAwVPAihdeTFXKkFZdWhRDRlyfWB9bV4UUFZMV38OURoHaE5tdR_z4ILjS0NVbVkQBApEUHldXhkEa1RcfC-a0fmv1OzMV0AvOaCoyO9pe77r3NluZiM9XhJLLD5-Jz1FQV5AEkwsCERJUytDCypYEU4EISE-MD5FUw",
  "message": {
    "attributes": {
      "Action": "Advanced",
      "Location": "us-central1",
      "PhaseId": "stable",
      "ProjectNumber": "120123456789",
      "ReleaseId": "rollout-123",
      "Rollout": "projects/120123456789/locations/us-central1/deliveryPipelines/etest/releases/f2/rollouts/rollout-123",
      "RolloutId": "rollout-123",
      "TargetId": "prod"
    },
    "messageId": "7335813725293809",
    "publishTime": "2023-04-03T15:16:30.425Z"
  }
}

In questo messaggio, PhaseId identifica la fase in cui è stata avanzata l'implementazione.

Passaggi successivi