Steps e acoes
Steps sao as acoes individuais que um workflow executa. Cada step e definido em JSON e pode usar dados do evento que disparou o workflow para personalizar seu comportamento.
Tipos de step
| Tipo de step | Descricao |
|---|---|
| Enviar notificacao | Enviar mensagem via Slack, PagerDuty ou email |
| Atualizar incidente | Alterar status, severidade do incidente ou adicionar comentario |
| Atualizar status page | Definir status de componente em uma status page |
| Criar ticket | Criar ticket no Jira, Linear ou GitHub Issues |
| Requisicao HTTP | Enviar requisicao HTTP para qualquer API externa |
| Delay | Aguardar uma duracao especifica antes do proximo step |
| Condicional | Ramificar com base em uma condicao |
Definindo um step
Cada step e definido como um objeto JSON com um tipo e configuracao:
{
"type": "send_notification",
"channel": "slack",
"target": "#incidents",
"message": "Incidente {{incident.id}} declarado como {{incident.severity}}: {{incident.title}}"
}Variaveis de template
Os steps podem referenciar dados do incidente usando a sintaxe {{variavel}}:
| Variavel | Descricao |
|---|---|
{{incident.id}} | Identificador do incidente |
{{incident.title}} | Titulo do incidente |
{{incident.severity}} | Nivel de severidade (P1-P4) |
{{incident.status}} | Status atual |
{{incident.type}} | Tipo do incidente |
{{incident.commander}} | Nome do Comandante |
{{incident.url}} | URL do incidente no Batida |
Logica condicional
Use steps condicionais para ramificar seu workflow com base em propriedades do incidente:
{
"type": "conditional",
"condition": "{{incident.severity}} == 'P1'",
"if_true": [
{ "type": "send_notification", "channel": "pagerduty", "target": "exec-escalation" }
],
"if_false": [
{ "type": "send_notification", "channel": "slack", "target": "#incidents" }
]
}Execucao paralela
Por padrao, os steps rodam em sequencia. Para rodar steps em paralelo, agrupe-os em um bloco parallel:
{
"type": "parallel",
"steps": [
{ "type": "send_notification", "channel": "slack", "target": "#incidents" },
{ "type": "update_status_page", "component": "API", "status": "degraded" }
]
}Steps paralelos sao todos iniciados simultaneamente. O workflow aguarda todos os steps paralelos serem concluidos antes de avancar para o proximo step sequencial.
Tratamento de erros
Quando um step falha, o comportamento do workflow depende da sua configuracao:
| Em caso de falha | Descricao |
|---|---|
| Parar | O workflow para e registra o erro |
| Continuar | O workflow pula o step que falhou e continua |
| Retentar | O workflow retenta o step ate 3 vezes com backoff |
Por padrao, os workflows usam o comportamento Parar. Voce pode sobrescrever isso por step no editor de workflow.
Logs de execucao dos steps
Cada execucao de step e registrada em log. Voce pode visualizar os logs na pagina de detalhes do workflow para ver:
- Quais steps tiveram sucesso e quais falharam.
- Os dados de entrada e saida de cada step.
- Timestamps e duracoes de execucao.