Milestone Shell - BoxPistols/nuxt3-boilerplate GitHub Wiki


title: "GitHubマイルストーン自動生成ツール - クロスプラットフォーム対応" emoji: "📅" type: "tech" topics: ["github", "bash", "cli", "milestone", "スクラム"] published: true

GitHubマイルストーン自動生成ツール

GitHubのマイルストーンを簡単に一括生成・管理するためのBashスクリプトです。MacとLinux(WSL含む)の両方で動作するクロスプラットフォーム対応スクリプトで、スプリント計画などのアジャイル開発に最適です。

マイルストーンのイメージ

機能概要

  • 指定した期間内の特定曜日に終了するマイルストーンを自動生成
  • マイルストーン一覧の表示
  • マイルストーンの選択削除
  • マイルストーンの一括削除
  • Mac・Linux(WSL含む)のクロスプラットフォーム対応

環境要件

  • GitHub CLI (gh)
  • jq(JSONパーサー)
  • Bash 4.0以上

インストール方法

1. 依存ツールのインストール

GitHub CLI

# MacOS
brew install gh

Ubuntu/Debian

curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null sudo apt update sudo apt install gh

jq

# MacOS
brew install jq

Ubuntu/Debian

sudo apt install jq

2. GitHub CLIの認証設定

gh auth login

画面の指示に従ってGitHubアカウントの認証を完了させてください。

3. スクリプトのダウンロードと設定

# リポジトリのクローン(または単一ファイルのダウンロード)
git clone https://github.com/your-username/milestone-generator.git
cd milestone-generator

実行権限の付与

chmod +x milestone.sh

使い方

基本的な使い方

./milestone.sh

スクリプトを実行すると、以下のメニューが表示されます:

操作を選択してください:
1) マイルストーン生成
2) マイルストーン一覧表示
3) マイルストーン選択削除
4) 全マイルストーン削除
q) 終了

1. マイルストーン生成

このオプションを選択すると、以下の情報を順に入力するよう求められます:

開始日 (YYYY-MM-DD):
2025-01-01
終了日 (YYYY-MM-DD):
2025-03-31
スプリントの終了曜日を選択してください (月=1, 火=2, 水=3, 木=4, 金=5, 土=6, 日=7):
5
スプリントサイクルを週単位で入力してください (例: 1 または 2):
2
開始日が指定曜日と同じ場合、その日を含めますか? (y/n, デフォルトはy):
y
マイルストーンの時間を入力してください (HH:MM 形式, デフォルトは17:00):
17:00

入力が完了すると、指定した期間内の指定曜日(この例では金曜日)ごとにマイルストーンが自動生成されます。

入力項目の説明:

項目 説明
開始日 マイルストーン生成の開始日(例:2025-01-01)
終了日 マイルストーン生成の終了日(例:2025-03-31)
スプリント終了曜日 曜日を数字で指定(月=1, 火=2, 水=3, 木=4, 金=5, 土=6, 日=7)
スプリントサイクル 1週間、2週間などスプリントの期間(週単位)
開始日を含めるか 開始日が指定曜日と同じ場合、その日をマイルストーンに含めるか
マイルストーンの時間 マイルストーンの終了時刻(HH:MM形式)

生成される各マイルストーンには以下の情報が含まれます:

  • タイトル: YY-MM-DD W週番号(例:25-01-03 W01)
  • 説明: 期間: YYYY-MM-DD から YYYY-MM-DD (X曜日)
  • 期限: 指定した日付と時間

2. マイルストーン一覧表示

現在のリポジトリに設定されているマイルストーンの一覧を表示します:

マイルストーン一覧:
番号  | リリース日 週番号
----------------------------------------
001   | 25-01-03 W01 (2025-01-03)
002   | 25-01-17 W03 (2025-01-17)
003   | 25-01-31 W05 (2025-01-31)
...

連番、タイトル、日付の形式で表示されます。

3. マイルストーン選択削除

特定のマイルストーンを選択して削除します:

削除するマイルストーンを選択してください(複数選択可、スペース区切り):
161: 25-01-03 W01
162: 25-01-17 W03
163: 25-01-31 W05
...

削除したいマイルストーンの番号をスペース区切りで入力すると、選択したマイルストーンが削除されます。

4. 全マイルストーン削除

リポジトリ内のすべてのマイルストーンを削除します。確認プロンプトが表示されるので、yで確定します。

よくある質問

Q: マイルストーンのタイトル形式を変更できますか?

A: 現在のバージョンでは直接UIからは変更できません。カスタマイズが必要な場合はスクリプト内の create_or_update_milestone 関数内の以下の部分を編集してください:

title="$formatted_date W$week_number"

Q: GitHub Enterpriseでも使えますか?

A: はい。GitHub CLIがGitHub Enterpriseに接続できるよう設定されていれば利用可能です。

Q: 特定のマイルストーンだけを更新するには?

A: マイルストーン生成時に上書きの確認が表示されます。既存マイルストーンの更新のみを行いたい場合は、期間を限定して実行し、上書き確認で「y」を選択してください。

Q: エラーが発生した場合はどうすればいいですか?

A: 以下の点を確認してください:

  • GitHub CLIが正しく認証されているか
  • jqがインストールされているか
  • 現在のディレクトリがGitHubリポジトリであるか

技術的な詳細

このスクリプトはOS検出機能を持ち、MacとLinuxの日付コマンドの違いを自動的に吸収します。uname -sコマンドを使用してOS種別を判定し、適切な日付処理コマンドを選択します。

GitHub APIへのアクセスにはghコマンドを使用し、JSONの処理にはjqを使用しています。

ライセンス

MITライセンスの下で公開されています。詳細はLICENSEファイルをご覧ください。

貢献

バグ報告や機能追加のリクエストは、GitHubのIssuesまたはPull Requestsでお待ちしております。

⚠️ **GitHub.com Fallback** ⚠️