GitHub - Releases

2026年3月24日 (火) 05:27時点におけるWiki (トーク | 投稿記録)による版 (ページの作成:「== 概要 == GitHub Releasesは、ソフトウェアの特定バージョンをパッケージ化して配布するための機能である。<br> <br> ReleaseはGitのタグをベースに構築され、リリースノート、バイナリファイル、ドキュメントなどをまとめて公開できる。<br> <br> 下表に、Releasesが提供する主な機能を示す。<br> <br> <center> {| class="wikitable" |+ GitHub Releasesの主な機能 |- ! 機能 !!…」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)

概要

GitHub Releasesは、ソフトウェアの特定バージョンをパッケージ化して配布するための機能である。

ReleaseはGitのタグをベースに構築され、リリースノート、バイナリファイル、ドキュメントなどをまとめて公開できる。

下表に、Releasesが提供する主な機能を示す。

GitHub Releasesの主な機能
機能 説明
バイナリ配布 コンパイル済みの実行ファイルやライブラリをアセットとして添付して、ユーザに直接提供できる。
リリースノート 変更内容、バグ修正、新機能をまとめたノートを自動生成または手動で記述できる。
バージョン管理 セマンティックバージョニングに従ったタグと紐付けることにより、バージョン履歴を明確に管理できる。
ドラフト・プレリリース 公開前のドラフト状態での準備や安定版に先立つプレリリース版の公開に対応している。


Releaseはタグと区別して管理されており、タグのみが存在する状態と、タグにReleaseを付与した状態は異なる扱いとなる。


Gitタグ

タグとは

Gitタグは、リポジトリ履歴の特定コミットを指し示すための参照である。

タグはバージョンのマーキングに使用され、後から特定のバージョンに容易にアクセスできるようにする。

タグの一覧を確認するコマンドを以下に示す。

# 全タグの一覧表示
git tag

# パターンに一致するタグの一覧表示
git tag -l "v1.*"


特定タグの詳細情報を確認するコマンドを以下に示す。

git show v1.4


軽量タグとアノテーションタグ

Gitタグには軽量タグとアノテーションタグの2種類が存在する。

下表に、2種類のタグの違いを示す。

軽量タグとアノテーションタグの比較
項目 軽量タグ アノテーションタグ
データ構造 コミットへのポインタのみ 完全なGitオブジェクト
メタデータ なし タッガー名、メールアドレス、日時、メッセージ
GPG 署名 不可 可能
リモートへの転送 されない される
主な用途 一時的・内部的な目的 公開リリース


公開リリースにはアノテーションタグを使用することが推奨される。

タグの作成

アノテーションタグを作成するコマンドを以下に示す。

git tag -a v1.4 -m "バージョン 1.4 リリース"


軽量タグを作成するコマンドを以下に示す。

git tag v1.4-lw


過去のコミットにタグを付ける場合は、コミットのチェックサム (または一部) を指定する。

# コミット履歴を確認してチェックサムを取得する
git log --oneline

# 過去コミットへのタグ付け
git tag -a v1.2 9fceb02 -m "バージョン 1.2 リリース"


タグのプッシュ

git push コマンドは、デフォルトではタグをリモートリポジトリに転送しない。

タグを明示的にプッシュする必要がある。

  • 特定のタグをプッシュするコマンド
    git push origin v1.4

  • 全てのタグを一括でプッシュするコマンド
    git push --tags


--tags オプションは軽量タグとアノテーションタグの両方を転送する。

アノテーションタグのみを転送する場合は --follow-tags オプションを使用する。

タグの削除

ローカルのタグを削除するコマンドを以下に示す。

git tag -d v1.2.0


リモートリポジトリのタグを削除するコマンドを以下に示す。

git push origin --delete tag v1.2.0


リモートタグを削除しても、ローカルのタグは残るため、ローカルとリモートの両方で削除操作が必要である。


Releaseの作成

Web UIでの作成

GitHubのWebインターフェースからReleaseを作成する手順を以下に示す。

  1. リポジトリのトップページで[Releases]を選択する。
  2. [Draft a new release]ボタンを押下する。
  3. [Choose a tag]ドロップダウンから既存のタグを選択するか、新しいタグ名を入力して[Create new tag]を選択する。
  4. [Target]ドロップダウンから、タグを付けるブランチまたはコミットを選択する。
  5. [Release title]フィールドにリリースのタイトルを入力する。
  6. 説明欄にリリースノートを入力する。
  7. 必要に応じてバイナリファイルをドラッグ&ドロップでアセットとして添付する。
  8. プレリリースの場合は、[Set as a pre-release]チェックボックスにチェックを入力する。
  9. [Publish release]ボタンを押下してリリースを公開する。


GitHub CLIでの作成

GitHub CLIを使用すると、コマンドからReleaseを作成できる。

基本的な作成コマンドを以下に示す。

gh release create v1.0.0 --title "v1.0.0" --notes "リリースノートの内容"


ファイルをアセットとして添付する場合のコマンドを以下に示す。

gh release create v1.0.0 ./dist/app-linux ./dist/app-windows.exe \
   --title "v1.0.0" \
   --notes "リリースノートの内容"


下表に、主要なオプションを示す。

gh release createオプション一覧
オプション 説明
--title Releaseのタイトルを指定する。
--notes リリースノートのテキストを指定する。
--notes-file リリースノートをファイルから読み込む。
--generate-notes リリースノートを自動生成する。
--target タグを付けるブランチまたはコミットを指定する。
-d ドラフト状態で作成する。
-p プレリリースとしてマークする。
--latest 最新リリースとしてマークする。


プレリリース

プレリリースは、安定版の前に公開するテスト段階のリリースである。

Web UIでは[Set as a pre-release]チェックボックスにチェックを入力することにより、プレリリースとして設定できる。

GitHub CLI でプレリリースを作成するコマンドを以下に示す。

gh release create v1.0.0-beta.1 -p --title "v1.0.0-beta.1" --notes "ベータ版リリース"


プレリリースは "Latest release" としては表示されず、Releasesページ上で "Pre-release" ラベルが付与される。

ドラフトリリース

ドラフトリリースは、公開前の準備段階として保存するリリースである。

ドラフト状態ではReleaseは一般ユーザには見えず、リポジトリの管理者のみが参照できる。

GitHub CLIでドラフトリリースを作成するコマンドを以下に示す。

gh release create v1.0.0 -d --title "v1.0.0" --notes "リリースノートの内容"


ドラフトは後から編集して公開 (Publish) することができる。


リリースノート

リリースノートの自動生成

GitHubには、マージ済みのプルリクエストとコントリビュータを自動的にまとめてリリースノートを生成する機能がある。

Web UIで自動生成するには、Release作成画面の説明欄上部にある[Generate release notes]ボタンを押下する。
前回のReleaseタグ以降のマージ済みPRと新しいコントリビュータが自動的にまとめられる。

GitHub CLIで自動生成するコマンドを以下に示す。

gh release create v1.0.0 --generate-notes


release.ymlの設定

.github/release.yml ファイルを作成することにより、自動生成されるリリースノートの内容をカスタマイズできる。

設定ファイルの基本的な構成例を以下に示す。

 changelog:
    exclude:
       labels:
          - ignore-for-release
          - dependencies
       authors:
          - dependabot
    categories:
       - title: 破壊的変更
         labels:
            - breaking-change
       - title: 新機能
         labels:
            - feature
            - enhancement
       - title: バグ修正
         labels:
            - bug
            - fix
       - title: その他の変更
         labels:
            - '*'


下表に、release.ymlファイルの主要な設定項目を示す。

release.ymlファイルの主な設定項目一覧
設定項目 説明
changelog.exclude.labels 指定したラベルが付いたPRをリリースノートから除外する。
changelog.exclude.authors 指定した作成者のPRを除外する。
dependabot 等の自動化ツールを除外する時に使用する。
changelog.categories PRをカテゴリに分類して表示する。
title にカテゴリ名、labels に対象ラベルを指定する。
ワイルドカード '*' いずれのカテゴリにも該当しないPRを全てキャッチするために使用する。


コントリビュータの自動表示

リリースノートの自動生成では、対象期間内に初めてコントリビュートしたユーザが New Contributors として自動的にリストアップされる。

この機能により、コントリビュータへの感謝を示すセクションが自動的に追加される。


Releaseの管理

Releaseの編集

公開済みのReleaseは後から編集できる。

Web UIでの編集手順を以下に示す。

  1. [Releases]ページで編集するReleaseの鉛筆アイコンを選択する。
  2. タイトル、説明、アセット、プレリリース設定等を変更する。
  3. [Update release]ボタンを押下して、保存する。


GitHub CLIでReleaseを編集するコマンドを以下に示す。

gh release edit v1.0.0 --title "新しいタイトル" --notes "更新されたリリースノート"


Releaseの削除

Web UIでの削除手順を以下に示す。

  1. [Releases]ページで削除するReleaseのゴミ箱アイコンを選択する。
  2. 確認ダイアログにおいて、[Delete]を選択する。


GitHub CLIでReleaseを削除するコマンドを以下に示す。

# Releaseのみを削除する (タグは残る)
gh release delete v1.0.0

# Releaseと関連するタグを同時に削除する
gh release delete v1.0.0 --cleanup-tag


Releaseを削除しても、デフォルトでは関連するGitタグは削除されない。
タグも合わせて削除する場合は --cleanup-tag オプションを使用する。

ドラフトの公開

ドラフト状態のReleaseを公開するには、Web UI または GitHub CLI を使用する。

GitHub CLIでドラフトを公開するコマンドを以下に示す。

gh release edit v1.0.0 -d=false



アセット管理

バイナリファイルの添付

Releaseにはコンパイル済みバイナリ等の任意のファイルをアセットとして添付できる。

Web UIでアセットを添付する手順を以下に示す。

  1. Releaseの作成画面または編集画面を開く。
  2. [Attach binaries by dropping them here or selecting them.]のエリアにファイルをドラッグ&ドロップ、または、クリックしてファイルを選択する。


GitHub CLIでアセットを添付する場合は、gh release create コマンドの引数にファイルパスを指定する。

gh release create v1.0.0 \
   ./dist/app-linux-amd64 \
   ./dist/app-windows-amd64.exe \
   ./dist/app-darwin-amd64


ソースコードアーカイブ

GitHubは全てのReleaseに対して、ソースコードのZIPアーカイブとtar.gzアーカイブを自動的に生成して添付する。
これらのアーカイブは手動での操作なしに提供され、ReleaseページのAssetsセクションに表示される。

  • Source code (zip)
    ソースコードのZIP形式アーカイブ
  • Source code (tar.gz)
    ソースコードのtar.gz形式アーカイブ


アセットの制限

Releaseに添付できるアセットには以下に示す制限がある。

アセットの制限
項目 制限値
1 リリースあたりの最大アセット数 1000ファイル
1 ファイルあたりの最大サイズ 2[GiB]
総サイズ 無制限
帯域幅 無制限


アセットの表示ラベル

アセットに任意の表示名 (ラベル) を付加することができる。

GitHub CLIでラベルを付けてアセットを添付するコマンドを以下に示す。
# 以降の文字列がラベルとして表示される。

gh release create v1.2.3 \
   '/path/to/app.exe#App for Windows' \
   '/path/to/app-linux#App for Linux'



セマンティックバージョニング

バージョン番号の形式

セマンティックバージョニングは、バージョン番号に意味を持たせるための標準的な規則である。
バージョン番号は X.Y.Z の形式で表記する。

下表に、それぞれの要素の意味を示す。

バージョン番号の要素
要素 名称 増加するタイミング
X Major (メジャー) 後方互換性のない破壊的変更を行った場合
Y Minor (マイナー) 後方互換性を保ちながら機能を追加した場合
Z Patch (パッチ) 後方互換性を保ちながらバグ修正を行った場合


各要素の先頭にゼロを付けてはならない。
例えば、1.01.0 は無効な表記である。

タグの命名規則

GitHubでの一般的なタグの命名規則を以下に示す。

  • v1.0.0
    最も一般的な形式
    先頭の v はオプションだが慣習として広く使われている。
  • v1.0.0-alpha
    アルファ版
    機能が未完成の段階のプレリリース
  • v1.0.0-beta
    ベータ版
    機能は完成しているが、テスト段階のプレリリース
  • v1.0.0-rc.1
    リリース候補 (Release Candidate)
    最終リリース前の最終テスト段階


プレリリースバージョンはハイフン区切りで識別子を付与する。
先頭の v はオプションであるが、プロジェクト内で統一することが推奨される。


GitHub CLIでのRelease操作

gh release list

リポジトリのRelease一覧を表示するコマンドを以下に示す。

# Releaseの一覧を表示する
gh release list

# ドラフトを除外して表示する
gh release list --exclude-drafts

# プレリリースを除外して表示する
gh release list --exclude-pre-releases

# 表示件数を指定する (デフォルト: 30)
gh release list -L 10

# JSON形式で出力する
gh release list --json tagName,name,isDraft,isPrerelease,publishedAt


gh release view

特定のReleaseの詳細情報を表示するコマンドを以下に示す。

# 特定タグのReleaseを表示する
gh release view v1.0.0

# 最新のReleaseを表示する
gh release view

# Webブラウザで開く
gh release view v1.0.0 -w

# JSON 形式で出力する
gh release view v1.0.0 --json tagName,name,body,assets


gh release download

Releaseのアセットをダウンロードするコマンドを以下に示す。

# 特定タグの全アセットをダウンロードする
gh release download v1.0.0

# パターンに一致するアセットのみをダウンロードする
gh release download v1.0.0 --pattern "*.zip"

# ソースコードアーカイブをダウンロードする
gh release download v1.0.0 --archive=zip
gh release download v1.0.0 --archive=tar.gz

# ダウンロード先ディレクトリを指定する
gh release download v1.0.0 -D ./downloads

# 既存ファイルを上書きする
gh release download v1.0.0 --clobber

# 既存ファイルをスキップする
gh release download v1.0.0 --skip-existing


gh release edit

既存のReleaseを編集するコマンドを以下に示す。

# タイトルを変更する
gh release edit v1.0.0 --title "新しいタイトル"

# リリースノートを変更する
gh release edit v1.0.0 --notes "更新されたリリースノート"

# プレリリースとしてマークする
gh release edit v1.0.0 -p

# ドラフト状態を解除して公開する
gh release edit v1.0.0 -d=false


gh release delete

Releaseを削除するコマンドを以下に示す。

# Releaseを削除する (タグは残る)
gh release delete v1.0.0

# Releaseと関連するタグを同時に削除する
gh release delete v1.0.0 --cleanup-tag

# 確認プロンプトをスキップして削除する
gh release delete v1.0.0 -y



Releaseの通知

ウォッチ設定

リポジトリの新しいReleaseが公開された際に通知を受け取るには、リポジトリのウォッチ設定を変更する。

設定手順を以下に示す。

  1. リポジトリのページ上部にある[Watch]ボタンを押下する。
  2. ドロップダウンメニューから[Custom]を選択する。
  3. [Releases]チェックボックスをオンにする。
  4. [Apply]ボタンを押下して、設定を保存する。


この設定により、新しいReleaseが公開された時に、GitHubの通知センターおよびメールで通知を受け取ることができる。

RSS / Atomフィード

GitHub ReleasesはRSS / Atomフィードを提供しており、RSSリーダー等を使用して新しいReleaseを購読できる。


<owner> にはリポジトリオーナーのユーザ名または組織名、<repo> にはリポジトリ名を指定する。

フィードの具体的な使用例を以下に示す。

# 例: curlでReleasesフィードを取得する
curl https://github.com/octocat/Hello-World/releases.atom