---
title: GitHub リリース
description: >-
  githubReleases() ソースを使ってリポジトリの GitHub リリースを変更履歴エントリに変換し、リリースノートをそのまま変更履歴として活用します。
---

組み込みの `githubReleases()` アダプターは、リポジトリのリリースを変更履歴に変換します。各リリースは `type: changelog` エントリになるため、リリースノートが*そのまま*変更履歴になり、同じ内容を二度書く必要はありません。自動生成される[変更履歴タイムライン](/ja/docs/advanced/changelog)と組み合わせれば、GitHub リリースを公開するだけで変更履歴エントリも公開されます。

```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
      }),
    ],
  },
});
```

各リリースは変更履歴のフィールドに自動的に対応付けられます。リリース名（またはタグ）がタイトルになり、公開日がタイムラインの順序を決め、タグが `changelog.version` になります。また、プレリリースには `Prerelease`（それ以外には `Release`）のタグが付きます。リリースノートはエントリ本文としてレンダリングされますが、その際リンクに 2 つの変更が加えられます。Web、メール、電話、相対アドレスのいずれでもないリンク（たとえば `javascript:` URL）はラベルのみが残ります。また、自身の [`deployment.site`](/ja/docs/deployment) へのリンクはルート相対パスに書き換えられるため、プレビューデプロイやデプロイのベースパスに追従します。ソースに `prefix` を指定すると、リリースページが `/changelog/v1-2-0` のようなルート配下にネストされます。

プライベートリポジトリは `GITHUB_TOKEN` 環境変数で認証します。これは他の GitHub 機能で使われるものと同じトークンで、設定ファイルに直接記述されることはありません。アダプターがこの変数を宣言しているため、未設定のままビルドすると警告が表示されます。[すべてのリモートソース](/ja/docs/content/sources#caching-and-offline-builds)と同様に `.blume/cache/<source>/` にキャッシュされ、API に到達できない場合はオフラインでキャッシュから提供されます。変更履歴は補助的なコンテンツであるため、キャッシュがない状態で取得に失敗した場合（たとえばトークンのない CI ビルドなど）でも、ビルドを失敗させることはなく、警告を出したうえで空の変更履歴になります。変更履歴を表示するには、CI 環境とデプロイ環境で `GITHUB_TOKEN` を設定してください。
