mcpField
R
release-manager

release-manager

github.com/alirezarezvaniクラウド・DevOps28.9k528 回インストール2 日前に更新
リポジトリ

release-manager について

release-managerは、コミット分析からデプロイ計画までを扱うソフトウェアチーム向けのリリース管理スキルです。変更履歴、セマンティックバージョン、準備状況を扱うスクリプトに加え、ホットフィックスやロールバックの指針を含みます。

主な機能

  1. 01Conventional Commitsから変更履歴を生成
  2. 02セマンティックバージョンの更新分析
  3. 03リリース準備状況の評価
  4. 04リリース計画と調整
  5. 05ホットフィックスとロールバックの指針

活用シーン

  1. 01git履歴から変更履歴を作成
  2. 02リリースのバージョン更新を決定
  3. 03準備状況を確認して関係者と調整
  4. 04緊急修正とロールバックを計画

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/alirezarezvani/claude-skills --skill release-manager

インストール後、Claude Code で/release-managerを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

changelog_generator.py
README.md
release_planner.py
version_bumper.py
assets/
sample_commits.json
sample_git_log_full.txt
sample_git_log.txt
sample_release_plan.json
expected_outputs/
changelog_example.md
release_readiness_example.txt
version_bump_example.txt
references/
conventional-commits-guide.md
hotfix-procedures.md
release-workflow-comparison.md

詳細

リリースマネージャー

ティア: 強力
カテゴリー: エンジニアリング
ドメイン: ソフトウェアリリース管理と DevOps

概要

リリースマネージャーのスキルは、ソフトウェアリリースをエンドツーエンドで管理するための包括的なツールと知識を提供します。Conventional Commits の解析から、変更履歴の生成、バージョン更新の判定、リリースプロセスの調整まで、このスキルによって、信頼性が高く、予測可能で、十分に文書化されたソフトウェアリリースを実現できます。

主な機能

  • git の履歴から Conventional Commits を使用した変更履歴の自動生成
  • コミットの分析と破壊的変更に基づくセマンティックバージョンの更新
  • 包括的なチェックリストと検証によるリリース準備状況の評価
  • ステークホルダー向けのコミュニケーションテンプレートを含むリリース計画と調整
  • 自動復旧手順を含むロールバック計画
  • 緊急リリースのためのホットフィックス管理
  • 段階的なロールアウトのためのフィーチャーフラグ統合

主なコンポーネント

スクリプト
  1. changelog_generator.py - git のログを解析し、構造化された変更履歴を生成します
  2. version_bumper.py - Conventional Commits から適切なバージョン更新を判定します
  3. release_planner.py - リリース準備状況を評価し、調整計画を生成します
ドキュメント
  • 包括的なリリース管理の方法論
  • Conventional Commits の仕様と例
  • リリースワークフローの比較(Git Flow、Trunk-based、GitHub Flow)
  • ホットフィックスの手順と緊急対応プロトコル

リリース管理の方法論

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

セマンティックバージョニングは、次の MAJOR.MINOR.PATCH 形式に従います。

  • 互換性のない API 変更を行った場合はMAJORバージョン
  • 下位互換性を保ちながら機能を追加した場合はMINORバージョン
  • 下位互換性のあるバグ修正を行った場合はPATCHバージョン
プレリリースバージョン

プレリリースバージョンは、ハイフンと識別子を付けて表します。

  • 1.0.0-alpha.1 - 初期テスト用のアルファリリース
  • 1.0.0-beta.2 - より広範なテスト用のベータリリース
  • 1.0.0-rc.1 - 最終検証用のリリース候補
バージョンの優先順位

バージョンの優先順位は、各識別子を比較して決定します。

  1. 1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-alpha.beta < 1.0.0-beta
  2. 1.0.0-beta < 1.0.0-beta.2 < 1.0.0-beta.11 < 1.0.0-rc.1
  3. 1.0.0-rc.1 < 1.0.0
Conventional Commits

Conventional Commits は、自動化ツールを利用できるように、コミットメッセージに構造化された形式を提供します。

形式
<type>[optional scope]: <description>

[optional body]

[optional footer(s)]
種類
  • feat:新機能(MINOR バージョンの更新に対応)
  • fix:バグ修正(PATCH バージョンの更新に対応)
  • docs:ドキュメントのみの変更
  • style:コードの意味に影響しない変更
  • refactor:バグ修正や機能追加を伴わないコード変更
  • perf:パフォーマンスを改善するコード変更
  • test:不足しているテストの追加、または既存のテストの修正
  • chore:ビルドプロセスまたは補助ツールの変更
  • ci:CI 設定ファイルとスクリプトの変更
  • build:ビルドシステムまたは外部依存関係に影響する変更
  • breaking:破壊的変更の導入(MAJOR バージョンの更新に対応)
例
feat(user-auth): add OAuth2 integration

fix(api): resolve race condition in user creation

docs(readme): update installation instructions

feat!: remove deprecated payment API
BREAKING CHANGE: The legacy payment API has been removed
変更履歴の自動生成

変更履歴は Conventional Commits から自動生成され、次のように整理されます。

構造
# Changelog

## [Unreleased]
### Added
### Changed  
### Deprecated
### Removed
### Fixed
### Security

## [1.2.0] - 2024-01-15
### Added
- OAuth2 authentication support (#123)
- User preference dashboard (#145)

### Fixed
- Race condition in user creation (#134)
- Memory leak in image processing (#156)

### Breaking Changes
- Removed legacy payment API
グループ化のルール
  • 新機能には Added(feat)
  • バグ修正には Fixed(fix)
  • 既存機能の変更には Changed
  • まもなく削除される機能には Deprecated
  • 削除された機能には Removed
  • 脆弱性の修正には Security
メタデータの抽出
  • プルリクエストとイシューへのリンク:(#123)
  • 破壊的変更を目立つように強調
  • スコープ別のグループ化:auth:、api:、ui:
  • 貢献者を認識するための Co-authored-by
バージョン更新の戦略

バージョンの更新は、前回のリリース以降のコミットを分析して決定します。

自動検出ルール
  1. MAJOR:BREAKING CHANGE を含むコミット、またはタイプの後に ! が付いたコミット
  2. MINOR:破壊的変更を含まない feat タイプのコミット
  3. PATCH:fix、perf、security タイプのコミット
  4. バージョン更新なし:docs、style、test、chore、ci、build のみ
プレリリースの扱い
# Alpha: 1.0.0-alpha.1 → 1.0.0-alpha.2
# Beta: 1.0.0-alpha.5 → 1.0.0-beta.1  
# RC: 1.0.0-beta.3 → 1.0.0-rc.1
# Release: 1.0.0-rc.2 → 1.0.0
複数パッケージに関する考慮事項

複数のパッケージを含むモノレポの場合:

  • 各パッケージに影響するコミットを個別に分析します
  • スコープ付きのバージョン更新に対応します:@scope/[email protected]
  • パッケージ間で連携したリリース計画を生成します
リリースブランチのワークフロー
Git Flow
main (production) ← release/1.2.0 ← develop ← feature/login
                                           ← hotfix/critical-fix

利点:

  • 関心事を明確に分離できます
  • main ブランチを安定した状態に保てます
  • 機能開発を並行して進められます
  • リリースプロセスを構造化できます

手順:

  1. develop からリリースブランチを作成します:git checkout -b release/1.2.0 develop
  2. リリースを確定します(バージョン更新、変更履歴)
  3. main と develop にマージします
  4. リリースにタグを付けます:git tag v1.2.0
  5. main からデプロイします
トランクベース開発
main ← feature/login (short-lived)
    ← feature/payment (short-lived)  
    ← hotfix/critical-fix

利点:

  • ワークフローを簡素化できます
  • 統合を迅速化できます
  • マージの競合を減らせます
  • 継続的インテグレーションに適しています

手順:

  1. 短期間で終了する機能ブランチを作成します(1~3日)
  2. main に頻繁にコミットします
  3. 未完成の機能にはフィーチャーフラグを使用します
  4. 自動テストのゲートを設けます
  5. フィーチャートグルを使用して main からデプロイします
GitHub Flow
main ← feature/login
    ← hotfix/critical-fix

利点:

  • シンプルで軽量です
  • デプロイサイクルが速くなります
  • Web アプリケーションに適しています
  • オーバーヘッドを最小限に抑えられます

手順:

  1. main から機能ブランチを作成します
  2. 定期的にコミットしてプッシュします
  3. 準備ができたらプルリクエストを作成します
  4. テストのために機能ブランチからデプロイします
  5. main にマージしてデプロイします
フィーチャーフラグの統合

フィーチャーフラグを使うと、安全かつ段階的にロールアウトできます。

フィーチャーフラグの種類
  • リリースフラグ:本番環境での機能の表示を制御します
  • 実験フラグ:A/B テストや段階的なロールアウトに使用します
  • 運用フラグ:サーキットブレーカーやパフォーマンスの切り替えに使用します
  • 権限フラグ:ロールベースで機能へのアクセスを制御します
実装戦略
# Progressive rollout example
if feature_flag("new_payment_flow", user_id):
    return new_payment_processor.process(payment)
else:
    return legacy_payment_processor.process(payment)
リリースの調整
  1. フラグを無効にした状態で、機能をフラグの背後に置いてコードをデプロイします
  2. ユーザーの一部に対して段階的に有効化します
  3. メトリクスとエラー率を監視します
  4. データに基づいて全面展開するか、迅速にロールバックします
  5. 次回以降のリリースでフラグを削除します
リリース準備チェックリスト
リリース前の検証
  • 予定されている機能がすべて実装され、テスト済みである
  • 破壊的変更が移行ガイドとともに文書化されている
  • API ドキュメントが更新されている
  • データベースのマイグレーションがテストされている
  • 機密性の高い変更に対するセキュリティレビューが完了している
  • パフォーマンステストが基準を満たしている
  • 国際化文字列が更新されている
  • サードパーティとの連携が検証されている
品質ゲート
  • ユニットテストのカバレッジが 85% 以上である
  • 統合テストに合格している
  • エンドツーエンドテストに合格している
  • 静的解析で問題がない
  • セキュリティスキャンに合格している
  • 依存関係の監査で問題がない
  • 負荷テストが完了している
ドキュメントの要件
  • CHANGELOG.md が更新されている
  • README.md に新機能が反映されている
  • API ドキュメントが生成されている
  • 破壊的変更の移行ガイドが作成されている
  • デプロイに関する注意事項が準備されている
  • ロールバック手順が文書化されている
関係者の承認
  • プロダクトマネージャーの承認
  • エンジニアリングリードの承認
  • QA による検証の完了
  • セキュリティチームの承認
  • 法務レビュー(該当する場合)
  • コンプライアンスチェック(規制対象の場合)
デプロイの調整
コミュニケーション計画

社内の関係者:

  • エンジニアリングチーム:技術的な変更とロールバック手順
  • プロダクトチーム:機能の説明とユーザーへの影響
  • サポートチーム:既知の問題とトラブルシューティングガイド
  • 営業チーム:顧客向けの変更点と説明用の要点

社外へのコミュニケーション:

  • ユーザー向けのリリースノート
  • 開発者向けの API 変更履歴
  • 破壊的変更の移行ガイド
  • 該当する場合はダウンタイムの通知
デプロイシーケンス
  1. デプロイ前(T-24h):最終検証、コードを凍結
  2. データベースのマイグレーション(T-2h):スキーマ変更を実行して検証
  3. ブルーグリーンデプロイ(T-0):トラフィックを段階的に切り替え
  4. デプロイ後(T+1h):メトリクスとログを監視
  5. ロールバック可能期間(T+4h):ロールバックを判断する時点
監視と検証
  • アプリケーションのヘルスチェック
  • エラー率の監視
  • パフォーマンスメトリクスの追跡
  • ユーザーエクスペリエンスの監視
  • ビジネスメトリクスの検証
  • サードパーティサービス連携の稼働状況
ホットフィックス手順

ホットフィックスは、即時のデプロイが必要な重大な本番環境の問題に対処します。

重大度の分類

P0 - 重大:システム全体の停止、データ損失、セキュリティ侵害

  • SLA:2時間以内に修正
  • プロセス:緊急デプロイ、全員で対応
  • 承認:エンジニアリングリード + オンコールマネージャー

P1 - 高:主要機能の障害、ユーザーへの重大な影響

  • SLA:24時間以内に修正
  • プロセス:優先的なレビューとデプロイ
  • 承認:エンジニアリングリード + プロダクトマネージャー

P2 - 中:軽微な機能の問題、ユーザーへの影響は限定的

  • SLA:次のリリースサイクルで修正
  • プロセス:通常のレビュープロセス
  • 承認:通常の PR レビュー
緊急対応プロセス
  1. インシデントの宣言:オンコールチームにページを送信
  2. 評価:重大度と影響を判断
  3. ホットフィックスブランチ:最後の安定版リリースから作成
  4. 最小限の修正:根本原因のみに対処
  5. 優先的なテスト:自動テスト + 手動検証
  6. 緊急デプロイ:本番環境にデプロイ
  7. インシデント後の対応:根本原因の分析と再発防止
ロールバック計画

すべてのリリースには、テスト済みのロールバック計画が必要です。

ロールバックのトリガー
  • エラー率の急増:30分以内にベースラインの2倍を超過
  • パフォーマンスの低下:レイテンシが50%以上増加
  • 機能障害:コア機能が動作しない
  • セキュリティインシデント:脆弱性が悪用された
  • データ破損:データベースの整合性が損なわれた
ロールバックの種類

コードのロールバック:

  • 以前の Docker イメージに戻す
  • データベースと互換性のあるコード変更のみを行う
  • コードをロールバックするより、機能フラグを無効にする方法を優先

データベースのロールバック:

  • 非破壊的なマイグレーションに限る
  • マイグレーション前にデータをバックアップする
  • 前進のみのマイグレーションを優先(列の追加は行い、削除は行わない)

インフラストラクチャのロールバック:

  • ブルーグリーンデプロイの切り替え
  • ロードバランサーの設定を元に戻す
  • DNS の変更(伝播に時間がかかる)
自動ロールバック
# Example rollback automation
def monitor_deployment():
    if error_rate() > THRESHOLD:
        alert_oncall("Error rate spike detected")
        if auto_rollback_enabled():
            execute_rollback()
リリースメトリクスと分析
主要業績評価指標
  • リードタイム:コミットから本番環境への反映までの時間
  • デプロイ頻度:週または月あたりのリリース数
  • 平均復旧時間:インシデント発生から解決までの時間
  • 変更失敗率:インシデントの原因となったリリースの割合
品質メトリクス
  • ロールバック率:ロールバックされたリリースの割合
  • ホットフィックス率:通常のリリースあたりのホットフィックス数
  • バグ流出率:リリースあたりの本番環境のバグ数
  • 検出時間:問題の特定にかかる時間
プロセスメトリクス
  • レビュー時間:コードレビューにかかる時間
  • テスト時間:自動テストと手動テストにかかる時間
  • 承認サイクル:PR からマージまでの時間
  • リリース準備:リリース作業にかかる時間
ツール連携
バージョン管理システム
  • Git:コミットメッセージ規約の解析に対応した主要な VCS
  • GitHub/GitLab:プルリクエストの自動化と CI/CD
  • Bitbucket:パイプライン連携とデプロイゲート
CI/CD プラットフォーム
  • Jenkins:パイプラインのオーケストレーションとデプロイの自動化
  • GitHub Actions:ワークフローの自動化とリリースの公開
  • GitLab CI:環境管理機能を備えた統合パイプライン
  • CircleCI:コンテナベースのビルドとデプロイ
監視とアラート
  • DataDog:アプリケーションパフォーマンスの監視
  • New Relic:エラー追跡とパフォーマンス分析
  • Sentry:エラーの集約とリリースの追跡
  • PagerDuty:インシデント対応とエスカレーション
コミュニケーションプラットフォーム
  • Slack:リリース通知と調整
  • Microsoft Teams:ステークホルダーとのコミュニケーション
  • Email:外部顧客への通知
  • Status Pages:公開インシデントに関するコミュニケーション

ベストプラクティス

リリース計画
  1. 定期的なリリースサイクル:予測可能なリリーススケジュールを確立する
  2. 機能の凍結:リリースの48時間前に変更を凍結する
  3. リスク評価:変更がもたらす潜在的な影響を評価する
  4. ステークホルダーとの連携:すべてのチームが準備できていることを確認する
品質保証
  1. 自動テスト:包括的なテストカバレッジを確保する
  2. ステージング環境:本番環境に近いテスト環境を用意する
  3. カナリアリリース:ユーザーの一部に段階的に展開する
  4. モニタリング:問題を事前に検出する
コミュニケーション
  1. 明確なスケジュール:スケジュールを早めに伝える
  2. 定期的な更新:リリースプロセス中に状況を報告する
  3. 問題の透明性:問題について率直に伝える
  4. 事後検証:インシデントから学び、改善する
自動化
  1. 手動作業の削減:繰り返し作業を自動化する
  2. 一貫したプロセス:毎回同じ手順を実行する
  3. 監査証跡:すべてのリリース活動を記録する
  4. セルフサービス:チームが安全にデプロイできるようにする

よくあるアンチパターン

プロセスのアンチパターン
  • 手動デプロイ:エラーが発生しやすく、一貫性に欠ける
  • 直前の変更:適切なテストなしにリスクを持ち込む
  • テストの省略:検証せずにデプロイする
  • 不十分なコミュニケーション:ステークホルダーが変更を把握していない
技術的なアンチパターン
  • モノリシックなリリース:規模が大きく頻度の低い、リスクの高いリリース
  • 結合したデプロイ:一緒にデプロイする必要があるサービス
  • ロールバック計画がない:問題から迅速に復旧できない
  • 環境の乖離:本番環境とステージング環境が異なる
文化的なアンチパターン
  • 非難する文化:変更や問題の報告を恐れる
  • ヒーロー文化:プロセスではなく個人に依存する
  • 完璧主義:小さな改善のためにリリースを遅らせる
  • リスク回避:恐れから必要な変更を避ける

はじめに

  1. 評価:現在のリリースプロセスと課題を評価する
  2. ツールの設定:リポジトリ用のスクリプトを設定する
  3. プロセスの定義:チームに適したワークフローを選ぶ
  4. 自動化:CI/CD パイプラインと品質ゲートを導入する
  5. トレーニング:新しいプロセスとツールについてチームに説明する
  6. モニタリング:リリースのメトリクスとアラートを設定する
  7. 反復的な改善:フィードバックとメトリクスに基づいて継続的に改善する

Release Manager スキルは、混乱したデプロイを予測可能で信頼性の高いリリースへと変え、組織全体の信頼を築きます。

コメント