Integrazione di Cloud Deploy con altri sistemi

Puoi integrare Cloud Deploy con alcuni degli altri sistemi su cui ti basi per la distribuzione del software. Questa pagina descrive come integrare Cloud Deploy con quanto segue:

  • Strumenti di test
  • Gestione dei flussi di lavoro

Consulta la sezione Integrazione con il tuo sistema CI per scoprire come chiamare Cloud Deploy dalla pipeline CI.

Prima di iniziare

Le istruzioni riportate in questa pagina presuppongono che tu soddisfi già le seguenti condizioni:

Integrazione con i test automatici

Puoi utilizzare Cloud Deploy con Pub/Sub per integrare i test con la pipeline di distribuzione, in modo da promuovere automaticamente la release per la distribuzione continua.

Puoi anche utilizzare le annotazioni in un'implementazione per fornire un link ai risultati del test. Per ulteriori informazioni, vedi Utilizzare etichette e annotazioni con Cloud Deploy.

Utilizzo di Pub/Sub per automatizzare la promozione

  1. Ascolta i messaggi Pub/Sub dall'argomento clouddeploy-operations.

    Il messaggio contiene i seguenti attributi:

    • Action: SUCCEED
    • ResourceType: Rollout
    • Resource: projects/.../locations/.../deliveryPipelines/.../releases/.../rollouts/...
  2. Quando ricevi una notifica che ti informa che il deployment è andato a buon fine, esegui i test sull'applicazione di cui è stato eseguito il deployment.

  3. Quando i test sono riusciti, chiama Cloud Deploy per eseguire automaticamente la promozione alla fase successiva:

    gcloud deploy releases promote RELEASE_NAME \
    --delivery-pipeline=PIPELINE_NAME \
    --region=REGION \
    --annotations=KEY=VALUE,...
    

    dove:

    • RELEASE_NAME

      è il nome della release. Questo valore è obbligatorio.

    • PIPELINE_NAME

      è il nome della pipeline di distribuzione che gestisce questa release. Questo valore è obbligatorio.

    • REGION

      è la regione in cui è in esecuzione la pipeline. Se hai impostato la proprietà deploy/region, puoi omettere questo flag.

    • KEY=VALUE,...

      è un elenco di una o più coppie di stringhe chiave-valore separate da virgole che possono contenere informazioni sui risultati dei test e altre informazioni sui test. Ecco un esempio:

      gcloud deploy releases promote --annotations="from_target=test,status=stable"

      Le annotazioni sull'implementazione sono immutabili, pertanto se aggiungi un'annotazione dello stato, non potrai aggiornarlo in un secondo momento nella stessa implementazione.

Utilizzare le annotazioni per fornire l'accesso ai risultati dei test

Se hai l'URL che rimanda alla pagina in cui è possibile accedere ai risultati del test, puoi fornire questo URL come annotazione per un'implementazione utilizzando il flag --annotations. Ecco un esempio:

gcloud deploy releases promote --delivery-pipeline=my-demo-app-1 --region=us-central1 --project=my-demo-app-1-project --release=test-release-001 --annotations="test_results_url=https://example.com/results/my-demo-app-test-results-dev"

Per ulteriori informazioni, vedi Utilizzare etichette e annotazioni con Cloud Deploy.

Integrazione con la gestione dei flussi di lavoro di terze parti

Cloud Deploy pubblica messaggi operativi in Pub/Sub. Lo strumento di gestione dei flussi di lavoro può iscriversi a questi argomenti Pub/Sub e utilizzarli per attivare flussi di lavoro specifici.

Per le approvazioni

L'argomento clouddeploy-approvals invia una notifica al sistema quando è necessaria un'approvazione per l'implementazione. Il sistema di flusso di lavoro esterno può quindi fare la sua magia per ottenere l'approvazione e chiamare gcloud deploy rollouts approve.

L'account che emette il comando rollouts approve deve avere il ruolo IAM predefinito roles/clouddeploy.approver.

Per configurare un flusso di lavoro di approvazione esterno:

  1. Richiedi l'approvazione nel target.

    Nella definizione del target, includi requireApproval: true.

  2. Per utilizzare i messaggi, iscriviti all'argomento clouddeploy-approvals Pub/Sub e configura il sistema di gestione del flusso di lavoro.

  3. Quando il sistema di gestione dei flussi di lavoro riceve un messaggio dall'argomento clouddeploy-approvals che include "Action": "Required", avvia un flusso di lavoro di approvazione, configurato in base ai requisiti della tua organizzazione.

    Il messaggio include anche un riferimento all'implementazione da approvare, nel seguente formato:

    Resource: projects/.../locations/.../deliveryPipelines/.../releases/.../rollouts/...

    L'output del flusso di lavoro di approvazione è un'approvazione o un rifiuto dell'implementazione.

  4. Il sistema di gestione del flusso di lavoro restituisce l'approvazione o il rifiuto a Cloud Deploy sotto forma del seguente comando:

    Il comando per l'approvazione è il seguente:

    gcloud deploy rollouts approve ROLLOUT \
    --delivery-pipeline=PIPELINE_NAME \
    --region=REGION \
    --release=RELEASE_NAME
    

    Il comando per rifiutare l'implementazione è il seguente:

    gcloud deploy rollouts reject ROLLOUT \
    --delivery-pipeline=PIPELINE_NAME \
    --region=REGION \
    --release=RELEASE_NAME
    

    dove:

    • ROLLOUT

      è il nome dell'implementazione per cui è stata richiesta l'approvazione.

    • PIPELINE_NAME

      è la pipeline di distribuzione che gestisce il deployment della tua applicazione.

    • RELEASE_NAME

      è il nome della release a cui è associata questa implementazione.

    • REGION

      è la regione in cui è in esecuzione la pipeline di distribuzione.

Ecco un esempio:

gcloud deploy rollouts approve test-rollout --delivery-pipeline=web-app --release=test-release --region=us-central1