Webhooks
Nesta seção, você encontra informações sobre webhooks.

O que é?

Webhook é um recurso que observa os eventos de um sistema. Quando os eventos acontecem, o webhook tem a função de enviar uma notificação para os interessados cadastrados em receber as informações desse evento.
O Charles possui o módulocharlescd-hermes, que é responsável por identificar esses eventos e enviar aos inscritos as notificações.

Como cadastrar?

É necessário criar configurações de webhook para utilizar essa funcionalidade no Charle. Para isso, siga os passos abaixo:
    1.
    Em Workspace, clique em 'Add Webhook';
    2.
    Preencha os campos de:
      Descrição: adicione a descrição do webhook;
      Webhook URL: coloque a URL do serviço;
      Secret (Opcional): adicione, se necessário, a chave de aplicação;
    3.
    Escolha o evento: deploy, undeploy ou ambos.
Depois do cadastro, um card aparecerá com o status de sucesso ou erro da última mensagem enviada. Veja a imagem abaixo:
Exemplo de mensagem de erro para solicitação do webhooks
As informações do evento são enviadas na propriedade content. O seu serviço exposto precisa aceitar essa propriedade no corpo da requisição.

Propriedade comum dos objetos do payload de webhook

Cada payload de evento possui propriedades únicas. Você pode encontrá-las nas seções individuais de eventos. Abaixo estão as propriedades comuns:
Key
Tipo
Descrição
subscriptionId
String
O id da subscrição do Webhook.
subscriptionId
String
O id da subscrição do Webhook.
executionId
String
O id de execução do evento. Permite rastrear todo ciclo de vida da notificação.
event
Object
Detalhes do evento.

Eventos

Os eventos observáveis são início e finalização de deploy e undeploy.

Deploy

Quando você cadastra um webhook para receber informações sobre eventos de deploy de um determinado workspace, ou quando um deploy for iniciado e finalizado automaticamente, você irá receber uma notificação com detalhes do evento.
Quando o evento é disparado, um payload HTTP POST é enviado a URL do webhook cadastrado. Veja abaixo:
Key
Tipo
Descrição
type
String
Tipo do evento. Os valores possíveis são START_DEPLOY e FINISH_DEPLOY
status
String
Status do evento. Os valores possíveis são SUCCESS e ERROR.
date
String
Data de execução do evento.
timeExecution
Long
Tempo de execução do evento.
worspaceId
String
Id do workspace.
author
Object
Informações do autor do evento.
circle
Object
Informações do círculo do deploy/undeploy.
release
String
Informações do deploy/undeploy.
features
Object
Informações das features do deploy/undeploy.
error
String
Mensagem de erro em caso de status com erro.

Exemplo de payload do evento de Deploy

1
{
2
"content": "{
3
"subscriptionId": "5d4c95b4-6f83-11ea-bc55-0242ac130003",
4
"executionId": "5d4c95b4-6f83-11ea-bc55-0242ac130003",
5
"event": {
6
"type": "FINISH_DEPLOY",
7
"status": "FAIL",
8
"error": "Failed to pull image nexus.mydomain.co.uk/nginx Error: image nginx:latest not found",
9
"date": "2020-01-10 22:00:00",
10
"workspaceId": "5d4c95b4-6f83-11ea-bc55-0242ac130003",
11
"author": {
12
"email": "[email protected]",
13
"name": "CharlesCD"
14
},
15
"circle": {
16
"id": "5d4c95b4-6f83-11ea-bc55-0242ac130003",
17
"name": "circle-qas"
18
},
19
"release": {
20
"tag": "tag",
21
"modules": [{
22
"id": "5d4c95b4-6f83-11ea-bc55-0242ac130003",
23
"name": "ZupIt/charlescd",
24
"componentes": [{
25
"id": "5d4c95b4-6f83-11ea-bc55-0242ac130003",
26
"name": "charlescd-moove"
27
},
28
{
29
"id": "5d4c95b4-6f83-11ea-bc55-0242ac130004",
30
"name": "charlescd-villager"
31
}
32
]
33
},
34
{
35
"id": "5d4c95b4-6f83-11ea-bc55-0242ac130004",
36
"name": "ZupIt/horusec",
37
"componentes": [{
38
"id": "5d4c95b4-6f83-11ea-bc55-0242ac130005",
39
"name": "horusec-account"
40
},
41
{
42
"id": "5d4c95b4-6f83-11ea-bc55-0242ac130006",
43
"name": "horusec-analytics"
44
}
45
]
46
}
47
],
48
"features": [{
49
"name": "new-moove-feature",
50
"branchName": "feature/moove-feature"
51
},
52
{
53
"name": "new-horusec-feature",
54
"branchName": "feature/horusec-feature"
55
}
56
]
57
}
58
}
59
}"
60
}
Copied!

Undeploy

Quando você cadastra um webhook para receber informações sobre eventos de undeploy, de um determinado workspace, quando um undeploy for iniciado e finalizado automaticamente você irá receber uma notificação com detalhes do evento.
Quando o evento é disparado, um payload HTTP POST é enviado a URL do webhook cadastrado, veja abaixo:
Key
Tipo
Descrição
type
String
Tipo do evento. Os valores possíveis são START_UNDEPLOY e FINISH_UNDEPLOY
status
String
Status do evento. Os valores possíveis são SUCCESS e ERROR.
date
String
Data de execução do evento.
worspaceId
String
Id do workspace.
author
Object
Informações do autor do evento.
circle
Object
Informações do círculo do deploy/undeploy.
release
String
Informações do deploy/undeploy.
features
Object
Informações das features do deploy/undeploy.
error
String
Mensagem de erro em caso de status com erro.

Exemplo de payload do evento de Undeploy

1
"content": "{
2
"subscriptionId": "5d4c95b4-6f83-11ea-bc55-0242ac130003",
3
"executionId": "5d4c95b4-6f83-11ea-bc55-0242ac130003",
4
"event": {
5
"type": "START_UNDEPLOY",
6
"status": "SUCCESS",
7
"date": "2020-01-10 22:00:00",
8
"workspaceId": "5d4c95b4-6f83-11ea-bc55-0242ac130003",
9
"author": {
10
"email": "[email protected]",
11
"name": "CharlesCd"
12
},
13
"circle": {
14
"id": "5d4c95b4-6f83-11ea-bc55-0242ac130003",
15
"name": "circle-qas"
16
},
17
"release": {
18
"tag": "tag",
19
"modules": [
20
{
21
"id": "5d4c95b4-6f83-11ea-bc55-0242ac130003",
22
"name": "ZupIt/charlescd",
23
"componentes": [
24
{
25
"id": "5d4c95b4-6f83-11ea-bc55-0242ac130003",
26
"name": "charlescd-moove"
27
},
28
{
29
"id": "5d4c95b4-6f83-11ea-bc55-0242ac130004",
30
"name": "charlescd-villager"
31
}
32
]
33
},
34
{
35
"id": "5d4c95b4-6f83-11ea-bc55-0242ac130004",
36
"name": "ZupIt/horusec",
37
"componentes": [
38
{
39
"id": "5d4c95b4-6f83-11ea-bc55-0242ac130005",
40
"name": "horusec-account"
41
},
42
{
43
"id": "5d4c95b4-6f83-11ea-bc55-0242ac130006",
44
"name": "horusec-analytics"
45
}
46
]
47
}
48
],
49
"features": [
50
{
51
"name": "new-moove-feature",
52
"branchName": "feature/moove-feature"
53
},
54
{
55
"name": "new-horusec-feature",
56
"branchName": "feature/horusec-feature"
57
}
58
]
59
}
60
}
61
}"
62
}
Copied!
Last modified 5mo ago