Skip to content

GitHub releases の使用を検討 - ブランチアーカイブからの移行 #19

Description

@toshi0806

概要

現在、aldc は latex-environment をダウンロードする際に以下の形式でブランチアーカイブを使用しています:

${REPOSITORY_URL}/archive/refs/heads/${BRANCH}.zip

この方法について、GitHub releases の使用を検討することを提案します。

現在の実装の課題

ブランチアーカイブ方式の問題点

  1. バージョン管理の不安定性

    • ブランチの内容が予告なく変更される可能性
    • 特定の時点での状態を保証できない
    • 再現可能性の問題
  2. 依存関係管理の困難さ

    • 明確なバージョン番号がない
    • 互換性の確認が困難
    • 破壊的変更の通知が困難
  3. ユーザーエクスペリエンスの問題

    • どのバージョンを使用しているか不明
    • 安定版と開発版の区別ができない
    • 問題発生時のトラブルシューティングが困難

GitHub Releases を使用する利点

1. バージョン管理の改善

  • セマンティックバージョニング: v1.0.0, v1.1.0 などの明確なバージョン番号
  • 安定性: リリース後の内容は変更されない
  • タグベース: 特定のコミットに対応する確実な参照

2. 依存関係管理の向上

  • 互換性マトリクス: どのバージョンが互換性があるか明確
  • 破壊的変更の通知: メジャーバージョンアップで明示
  • 段階的アップグレード: マイナーバージョンでの安全な更新

3. ユーザーエクスペリエンスの改善

  • 明確な選択肢: 安定版、プレリリース版の区別
  • リリースノート: 変更内容の詳細な説明
  • ダウンロード統計: 利用状況の把握

技術的実装方法

GitHub Releases API の活用

# 最新リリースの取得
curl -s https://api.github.com/repos/smkwlab/latex-environment/releases/latest

# 特定バージョンの取得
curl -s https://api.github.com/repos/smkwlab/latex-environment/releases/tags/v1.0.0

ダウンロード URL の変更

# 現在の方式
${REPOSITORY_URL}/archive/refs/heads/${BRANCH}.zip

# 提案する方式
${REPOSITORY_URL}/archive/refs/tags/${VERSION}.zip
# または
${REPOSITORY_URL}/releases/download/${VERSION}/latex-environment-${VERSION}.zip

実装上の検討事項

1. バージョン指定方法

  • デフォルト動作: 最新安定版を使用
  • 明示的指定: --version v1.2.0 のようなオプション
  • プレリリース: --pre-release フラグでベータ版を使用

2. 下位互換性

  • 既存のブランチ指定方式も維持
  • 段階的な移行をサポート
  • 移行期間中の警告メッセージ

3. エラーハンドリング

  • 指定されたバージョンが存在しない場合の処理
  • ネットワークエラー時のフォールバック
  • 不正なバージョン形式の検証

影響範囲

latex-environment リポジトリ

  • GitHub Actions でのリリース自動化
  • バージョンタグの適切な付与
  • リリースノートの作成

aldc の変更点

  • バージョン解決ロジックの実装
  • CLI オプションの追加
  • エラーメッセージの改善

エコシステム全体

  • 他のコンポーネントとの整合性確保
  • ドキュメントの更新
  • ユーザー向けの移行ガイド

提案する実装手順

  1. Phase 1: GitHub Releases API 対応の実装
  2. Phase 2: CLI オプションの追加とテスト
  3. Phase 3: デフォルト動作の変更
  4. Phase 4: 旧方式の廃止予定告知

関連Issue・PR

  • latex-environment リポジトリでのリリース自動化
  • ecosystem-manager.sh での対応
  • ドキュメントの更新

この変更により、より安定で管理しやすいバージョン管理システムを構築できると考えています。ご検討をお願いします。

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions