---
title: GitHub Releases
description: >-
  Transforme as releases do GitHub de um repositório em entradas de changelog com a source githubReleases(), para que suas notas de release sejam o seu changelog.
---

O adapter nativo `githubReleases()` transforma as releases de um repositório em um changelog: cada release vira uma entrada `type: changelog`, então suas notas de release _são_ o seu changelog — nada precisa ser escrito duas vezes. Junto com a [timeline de changelog](/pt/docs/advanced/changelog) gerada, publicar uma release no GitHub já publica uma entrada no changelog.

```ts blume.config.ts
import { defineConfig } from "blume";
import { filesystem, githubReleases } from "blume/sources";

export default defineConfig({
  content: {
    sources: [
      filesystem({ root: "content" }),
      githubReleases({
        prefix: "changelog",
        owner: "acme",
        repo: "sdk",
        // prereleases: false,  // include prereleases (default off)
        // drafts: false,       // include drafts (needs a write token)
        // limit: 100,          // cap releases, newest-first
      }),
    ],
  },
});
```

Cada release é mapeada automaticamente para os campos do changelog: o nome (ou a tag) vira o título, a data de publicação define a ordem na timeline, a tag vira `changelog.version`, e as prereleases recebem a tag `Prerelease` (as demais, `Release`). As notas são renderizadas como o corpo da entrada, com duas mudanças nos links: um link que não seja um endereço web, de e-mail, de telefone ou relativo (uma URL `javascript:`, por exemplo) mantém só o texto, e um link que aponta para o seu próprio [`deployment.site`](/pt/docs/deployment) é reescrito para o caminho relativo à raiz, então ele acompanha os deploys de preview e a base do seu deployment. Defina um `prefix` na source para que as páginas de release fiquem aninhadas em uma rota como `/changelog/v1-2-0`.

Um repositório privado se autentica com a variável de ambiente `GITHUB_TOKEN` — o mesmo token usado pelos outros recursos do GitHub, nunca colocado direto na sua config; o adapter declara essa variável, então um build sem ela gera um aviso. Como [toda source remota](/pt/docs/content/sources#caching-and-offline-builds), ela fica em cache em `.blume/cache/<source>/` e é servida offline se a API estiver inacessível. Como o changelog é um conteúdo complementar, uma falha na busca sem cache (por exemplo, um build de CI sem token) resulta em um changelog vazio com um aviso, em vez de quebrar o build — defina `GITHUB_TOKEN` nos seus ambientes de CI e de deploy para preenchê-lo.
