Pular para o conteúdo principal
A forma como o seu aplicativo funciona pode mudar a cada novo deployment. Ao rastrear seus deploys com o AppSignal, os incidentes de erro e as medições de desempenho são agrupados por deployment, para que você possa ver facilmente quais impactos seu deployment teve no desempenho e na taxa de erros do seu aplicativo. O AppSignal pode levar você de um backtrace de erro até a linha de código de onde um erro específico se originou, e isso ajuda Este guia mostrará como rastrear deploys no AppSignal usando deploy markers.
Leia mais informações detalhadas sobre deploy markers e para que servem.

Configurando o AppSignal

Este guia usará o método de opção de configuração revision para reportar deploy markers. Você pode ler sobre abordagens alternativas a isso em nossa documentação de Deploy Markers. A opção de configuração revision é configurada de forma diferente por linguagem de integração. Veja a lista de integrações abaixo para a que seu app usa. Observe que o AppSignal reportará automaticamente um deploy ao usar plataformas como Heroku ou Render, ou orquestradores de deployment como o Kamal.

Atualizar a revisão automaticamente

Recomendamos buscar dinamicamente o valor da opção de configuração revision do gerenciamento de controle de versão usado para o seu projeto (como Git ou SVN) na inicialização ou no deploy. Dessa forma, o valor não precisa ser atualizado manualmente por deploy. Se um hash de commit do Git for usado, ele também será compatível com error backtrace links. Abaixo está um exemplo de como você faria isso usando o Git:
git rev-parse --short HEAD
# Irá produzir o SHA curto do commit atual
Continuaremos a usar o Git para todos os exemplos de integração nesta documentação.

Configurações por linguagem

Ruby

Para aplicativos Ruby, carregaremos a revisão Git do arquivo de configuração. O comando shell que executamos na opção de configuração revision é o mesmo comando que usamos anteriormente para recuperar o hash do commit atual. Chamamos o comando git rev-parse e definimos a saída como a opção de configuração revision, como mostrado no exemplo abaixo:
Appsignal.configure do |config|
  config.revision = `git rev-parse --short HEAD`.strip
end

Usando gems de deploy Ruby

Se você usa uma ferramenta de deployment como Capistrano ou Hatchbox que exclui a pasta .git do deploy:
  • Modifique o processo de deploy para executar um comando que crie um arquivo REVISION na pasta current, contendo o hash do Git: git rev-parse --short HEAD > REVISION
Ao usar um provedor Platform-as-a-Service, o provedor pode criar este arquivo para você ou expor a revisão como uma variável de ambiente que você pode ler no arquivo de configuração. Se você não tiver certeza se isso se aplica a você, verifique com seu provedor ou entre em contato, podemos saber a resposta. Abaixo está um exemplo de como ler o hash do Git de um arquivo REVISION ao usar o Rails:
Appsignal.configure do |config|
  revision = Rails.root.join("REVISION") if defined?(Rails)
  config.revision = revision.read.strip[0, 7] if revision&.exist?
end
Leia mais sobre os detalhes da opção de configuração revision para Ruby

Elixir

Para aplicativos Elixir, carregaremos a revisão Git no arquivo de configuração config/appsignal.exs (a localização do seu arquivo pode ser diferente). No exemplo de arquivo config/appsignal.exs abaixo, chamamos o comando git rev-parse com Elixir e definimos a saída como a opção de configuração revision.
# Exemplo: config/appsignal.exs
{revision, _exitcode} = System.cmd("git", ["log", "--pretty=format:%h", "-n 1"])
config :appsignal, :config,
  revision: revision
  # Outras opções de configuração
Leia mais sobre os detalhes da opção de configuração revision para Elixir

Node.js

Para aplicativos Node.js, a revisão Git é carregada no arquivo de configuração do app. No snippet .js abaixo, chamamos o comando git rev-parse com Node.js e definimos a saída como a opção de configuração revision.
// Exemplo: appsignal.js
const childProcess = require("child_process");
const REVISION = childProcess.execSync("git rev-parse --short HEAD").toString();
const appsignal = new Appsignal({
  revision: REVISION,
  // Outras configurações
});

module.exports = { appsignal };
Leia mais sobre os detalhes da opção de configuração revision para Node.js

Python

Para aplicativos Python, a revisão Git é carregada no arquivo de configuração __appsignal__.py do aplicativo. No exemplo abaixo, chamamos o comando git rev-parse com Python e definimos a saída como a opção de configuração revision. O comando shell que executamos é o mesmo comando que usamos anteriormente para recuperar o hash do commit atual.
# Exemplo: __appsignal__.py
import subprocess
from appsignal import Appsignal

revision = subprocess.check_output(
    "git rev-parse --short HEAD", shell=True, text=True
).strip()

appsignal = Appsignal(
    # Outras configurações
    revision=revision
)
Leia mais sobre os detalhes da opção de configuração revision para Python

JavaScript de front-end

Como os aplicativos JavaScript de front-end são executados no navegador, não é possível chamar o comando executável git do seu aplicativo de front-end para obter a revision atual. Existem duas abordagens comuns para passar o valor da revisão ao seu aplicativo de front-end:

Usando variáveis de ambiente em tempo de build (recomendado para front-ends desacoplados)

Ferramentas modernas de build de front-end incorporam variáveis de ambiente ao seu bundle em tempo de build. Você pode passar a revisão Git por meio de uma dessas variáveis e referenciá-la na sua configuração do AppSignal. O prefixo da variável e o padrão de acesso dependem da ferramenta de build. O exemplo abaixo usa o Vite, que expõe variáveis de ambiente prefixadas com VITE_ através do objeto import.meta.env. Defina a variável antes do build:
export VITE_REVISION=$(git rev-parse --short HEAD)
npm run build
Em seguida, leia-a no arquivo onde você configura o AppSignal:
// Exemplo: appsignal.js
export const appsignal = new Appsignal({
  revision: import.meta.env.VITE_REVISION,
  // Outras configurações
});
Importe a instância appsignal configurada onde você inicializa seu app. Por exemplo, em um main.js de uma aplicação Vue:
// Exemplo: main.js
import { createApp } from "vue";
import App from "./App.vue";
import { appsignal } from "./appsignal";
import { errorHandler } from "@appsignal/vue";

const app = createApp(App);
app.config.errorHandler = errorHandler(appsignal, app);

app.mount("#app");

Usando um atributo HTML renderizado pelo back-end

Se o seu front-end for renderizado por uma aplicação de back-end (como uma aplicação Ruby ou Elixir), você pode definir o valor da revision no corpo HTML como um atributo data:
<body data-app-revision="REVISION VALUE">
  <!-- Restante do HTML -->
</body>
Em seguida, recupere este valor no seu JavaScript:
// Exemplo: appsignal.js
const body = document.body;
export const appsignal = new Appsignal({
  revision: body.dataset.appRevision,
  // Outras configurações
});
Leia mais sobre os detalhes da opção de configuração revision para JavaScript

Go

Para aplicativos Go, a revisão é definida em um atributo de recurso OpenTelemetry quando o OpenTelemetry é inicializado. No exemplo abaixo, chamamos o comando git rev-parse e definimos a saída como o atributo de recurso appsignal.config.revision. O comando shell que executamos é o mesmo comando que usamos anteriormente para recuperar o hash do commit atual.
import (
	"os/exec"

	// E outras importações
)

var revision string
cmd := exec.Command("git", "rev-parse", "--short", "HEAD")
output, err := cmd.Output()
if err != nil {
	revision = "unknown"
} else {
	revision = strings.TrimSpace(string(output))
}

res := resource.NewWithAttributes(
	resource.WithAttributes(attribute.String("appsignal.config.revision", revision)),
	// E outros atributos de recurso
)
Para aplicativos Go, a opção de configuração appsignal.config.revision é uma configuração obrigatória, portanto, ela já deve estar definida. Consulte a opção de configuração appsignal.config.revision para mais informações.

Java

Para aplicativos Java, defina a revisão usando a variável de ambiente OTEL_RESOURCE_ATTRIBUTES. Usaremos o mesmo comando Git mostrado anteriormente.
export OTEL_RESOURCE_ATTRIBUTES="\
  appsignal.config.revision=$(git rev-parse --short HEAD),\
  ..."
Para aplicativos Java, a opção de configuração appsignal.config.revision é uma configuração obrigatória, portanto, ela já deve estar definida. Consulte a opção de configuração appsignal.config.revision para mais informações.

PHP

Para aplicativos PHP, defina a revisão na sua configuração para sobrescrever o padrão. Por padrão, o AppSignal define a revisão usando o mesmo comando Git mostrado em Atualizar a revisão automaticamente.
$revision = trim(shell_exec('git rev-parse --short HEAD 2>/dev/null')) ?: 'unknown';

return [
    'revision' => $revision,
    // ... outras opções
];
Consulte a opção de configuração appsignal.config.revision para mais informações.

Deploy

Quando terminar de configurar a opção revision, faça o commit das suas alterações e o deploy do seu aplicativo. Quando o app iniciar/reiniciar, o AppSignal criará um deploy na seção de deploys do seu app. É isso! Você configurou com sucesso seu aplicativo para notificar o AppSignal sobre deploys! Os dados do seu aplicativo serão rastreados juntamente com o deployment apropriado, ajudando a aprimorar sua capacidade de analisar o desempenho do seu aplicativo. Os deploys não estão sendo reportados ou estão sendo reportados incorretamente? Entre em contato conosco e nós o ajudaremos!