notify

package
v0.5.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 6, 2026 License: MIT Imports: 8 Imported by: 0

Documentation

Overview

Package notify avisa quando uma execucao falha.

Existe porque era a maior ausencia frente ao Kestra: os 51 flows daquele repositorio tinham, cada um, o MESMO bloco `errors: alert_slack` copiado — vinte linhas de payload repetidas cinquenta vezes. Aqui o alerta e uma propriedade da INSTALACAO: configura-se o webhook uma vez e todo workflow passa a avisar, com opcao de silenciar um.

O webhook nao vem do YAML do workflow de proposito. Ele e uma credencial: quem tiver acesso a URL posta no canal como se fosse a plataforma, e um arquivo de pipeline nao e lugar para isso.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Alerta

type Alerta struct {
	Workflow    string
	RunID       string
	Status      string
	Trigger     string
	Tentativas  int
	LogicalDate *time.Time
	Erro        string

	// Passo e o node que falhou. Vem como campo proprio, e nao so embutido no
	// texto do erro, porque e a primeira coisa que quem esta de plantao procura:
	// "qual passo?" antes de "por que?".
	Passo string

	// TrechoDoLog sao as ultimas linhas da saida daquele passo, lidas de
	// `task_runs.log`. Sem isto o alerta diz que algo falhou; com isto ele diz o
	// que falhou e por que, sem ninguem precisar abrir a tela as 4h.
	TrechoDoLog string

	// Tags do workflow viram os campos "Dominio" e "Pipeline" da mensagem — no
	// Kestra isso vinha de `labels`, e e o que faz o alerta ser acionavel sem
	// abrir a tela.
	Tags []string

	// URLBase da UI, para o link direto da execucao. Vazia = sem link.
	URLBase string
}

Alerta e o que se conta sobre uma falha.

type Notificador

type Notificador interface {
	Falhou(ctx context.Context, a Alerta) error
}

Notificador manda o alerta. Interface pequena para que o dispatcher nao conheca Slack — e para que o teste nao precise de rede.

type Slack

type Slack struct {
	Webhook string
	Cliente *http.Client

	// Ambiente aparece no cabecalho ("prod", "dev"). Sem isso, um alerta de
	// homologacao as tres da manha e indistinguivel de um de producao.
	Ambiente string
}

Slack posta num Incoming Webhook.

func NovoSlack

func NovoSlack(webhook, ambiente string) *Slack

func (*Slack) Falhou

func (s *Slack) Falhou(ctx context.Context, a Alerta) error

Falhou posta a mensagem.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL