Cloud Source Repositories pubblica messaggi sul tuo repository in risorse denominate chiamate argomenti. Le app sottoscritte agli argomenti Pub/Sub possono ricevere questi messaggi. Ad esempio, quando lo stato del repository cambia, puoi ricevere un avviso. Inoltre, puoi configurare ruoli e autorizzazioni per gli argomenti Pub/Sub per controllare in che modo gli utenti interagiscono con gli eventi Pub/Sub generati dal tuo repository.
Questa pagina fornisce una panoramica delle notifiche Pub/Sub per Cloud Source Repositories. Per informazioni su come impostare e utilizzare le notifiche Pub/Sub, consulta Configurazione delle notifiche Pub/Sub.
Ambito
Puoi configurare Cloud Source Repositories per pubblicare eventi in un argomento Pub/Sub. Puoi impostare l'ambito di questa configurazione sull'intero progetto Google Cloud o su un singolo repository.
Una volta configurato, Cloud Source Repositories pubblica i messaggi nell'argomento Pub/Sub specificato utilizzando il tuo account di servizio. Devi prima concedere all'account di servizio le autorizzazioni per pubblicare nell'argomento. Se hai attivato la registrazione di controllo per Pub/Sub, questo account di servizio viene visualizzato come chiamante delle API Pub/Sub.
Autorizzazioni
La configurazione di Cloud Source Repositories per la pubblicazione di messaggi richiede quanto segue:
- Un progetto o un repository in cui vengono monitorati gli eventi. Se viene specificato un progetto, vengono monitorati tutti i repository al suo interno.
- Un argomento Pub/Sub in cui Cloud Source Repositories pubblica i messaggi.
- Un account di servizio per accedere all'argomento Pub/Sub.
- Un formato di messaggio (ad esempio JSON o Protocol Buffers).
Quando configuri Cloud Source Repositories per Pub/Sub, devi avere queste autorizzazioni:
source.repos.updateRepo
nel repository specificato osource.repos.updateProjectConfig
nel progetto specificatoiam.serviceAccounts.actAs
nell'account di servizio specificato
Dopo la registrazione dell'argomento Pub/Sub, l'account di servizio specificato deve disporre dell'autorizzazione pubsub.topics.publish
per pubblicare un messaggio.
Tipi di evento
Pub/Sub può inviarti una notifica quando un utente crea un repository, ne elimina uno o esegue il push di un commit in un repository. Ogni evento è un tipo di evento specifico. La tabella seguente elenca i tipi e le relative definizioni.
Tipo di evento | Descrizione |
---|---|
CreateRepo | Si verifica quando un utente crea un repository. |
RefUpdate | Si verifica quando un utente esegue un comando git push. |
DeleteRepo | Si verifica quando un utente elimina un repository. |
Formato delle notifiche
Puoi configurare Pub/Sub in modo da utilizzare uno dei due formati per le notifiche:
- JSON
- Buffer di protocollo
Dati di notifica
Ogni notifica Pub/Sub contiene le seguenti informazioni su un evento:
Nome campo | Descrizione |
---|---|
nome | Nome del repository. |
url | L'URL del repository. |
eventTime | L'ora in cui è avvenuta la modifica. |
refUpdateEvent | Informazioni sulla modifica specifica. |
createRepoEvent | Indica se un utente ha creato un repository. |
deleteRepoEvent | Indica se un utente ha eliminato un repository. |
Se la notifica riguarda un comando git push
, la notifica contenente il
refUpdateEvent
campo contiene le seguenti informazioni:
Nome campo | Descrizione |
---|---|
L'indirizzo email dell'utente che ha apportato la modifica. | |
refUpdates | Informazioni sul commit. |
Il campo refUpdates
contiene i seguenti dettagli sul comando git push
:
Nome campo | Descrizione |
---|---|
refName | Il nome della filiale. |
updateType | Il tipo di aggiornamento. Per ulteriori informazioni, vedi Tipi di aggiornamento. |
oldId | L'ID commit precedente per il repository. |
newId | Il nuovo ID del repository. |
Tipi di aggiornamento
Un evento git push
può avere uno dei quattro tipi di aggiornamento. Puoi trovare il tipo nel
campo updateType
della notifica.
Tipo aggiornamento | Descrizione |
---|---|
CREA | Si verifica quando il comando crea un nuovo riferimento. |
UPDATE_FAST_FORWARD | Si verifica quando il comando aggiorna un oggetto. |
UPDATE_NON_FAST_FORWARD | Si verifica quando il comando utilizza il flag -f , ad esempio git push -f . |
ELIMINA | Si verifica quando il comando elimina un riferimento. |
Esempio di notifica
Di seguito è riportato un esempio dei dati contenuti in una notifica Pub/Sub. Questa notifica utilizza il formato JSON.
{
"name": "projects/test-project/repos/pubsub-test",
"url": "[URL_PATH]",
"eventTime": "2018-02-21T21:23:25.566175Z",
"refUpdateEvent": {
"email": "someone@somecompany.com",
"refUpdates": {
"refs/heads/master": {
"refName": "refs/heads/master",
"updateType": "UPDATE_FAST_FORWARD",
"oldId": "c7a28dd5de3403cc384a025834c9fce2886fe763",
"newId": "f00768887da8de62061210295914a0a8a2a38226"
}
}
}
}
Esempio di configurazione tra progetti
Puoi configurare Cloud Source Repositories per pubblicare un messaggio in un argomento di un progetto diverso. In questo caso, devi creare un account di servizio nello stesso progetto in cui si trova il tuo repository. Nel progetto che contiene
l'argomento Pub/Sub, assegna il ruolo roles/pubsub.publisher
a questo
account di servizio. Quando configuri Cloud Source Repositories con questo account e questo argomento Pub/Sub, i messaggi di evento per il tuo repository vengono visualizzati nell'argomento nell'altro progetto.