-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
Description
背景
現在、このリポジトリでは以下のテストが実装されています:
- BATSによる単体テスト(
test_bats.yml) - chezmoiの適用テスト(
test_chezmoi_apply.yml) - ShellCheckによる静的解析(
shellcheck.yml)
しかし、実際のmacOS環境で一連のインストールプロセスが正常に動作するかを検証するE2Eテストがありません。このため、本番環境(実際のMac)でインストールに失敗するリスクがあります。
目的
週一回、macOS環境で実際にdotfilesのインストールが成功するかを検証するE2Eテストを自動実行し、継続的に動作を保証する。
実装内容
1. E2E GitHub Actionsワークフローの作成
.github/workflows/e2e_macos.ymlを作成し、以下の内容を実装:
トリガー
- スケジュール実行: 毎週月曜日 0:00 UTC(日本時間 月曜日 9:00)
- 手動実行:
workflow_dispatchで任意のタイミングで実行可能 - オプション: Pull Request時にラベル
e2e-testが付いた場合も実行
テスト環境
- OS:
macos-latest(現在は macOS 14) - クリーンな環境で実行(Homebrew、mise、chezmoiを未インストール状態から)
テストシナリオ
-
環境の初期化
- クリーンなmacOS環境を確保
- 必要な前提条件の確認
-
セットアップスクリプトの実行
sh setup.sh
または
sh -c "$(curl -fsLS get.chezmoi.io)" -- init --apply yellow-seed -
Homebrewのインストール検証
install/macos/common/brew.shの実行- Homebrewが正常にインストールされたことを確認
-
Brewfileの適用検証
install/macos/common/brewfile.shの実行- 主要なパッケージがインストールされたことを確認
- 例:
git,gh,chezmoiなど
-
miseのインストールと設定検証
- miseがインストールされたことを確認
~/.config/mise/config.tomlが適用されたことを確認mise installが正常に実行されることを確認
-
dotfilesの適用検証
- chezmoiで設定ファイルが適用されたことを確認
- 主要な設定ファイルの存在確認:
~/.zshrc~/.gitconfig~/.config/mise/config.toml
-
動作確認
- インストールされたツールが実行可能であることを確認
- 例:
git --version,gh --version,mise --version
エラーハンドリング
- 各ステップで失敗した場合は、詳細なエラーログを出力
- GitHub Issue通知機能を検討(オプション)
2. ドキュメントの更新
AGENTS.md
- E2Eテストの実行方法を追加
- トラブルシューティングセクションに関連情報を追加
README.md
- CI/CDバッジの追加(E2Eテストのステータス)
- E2Eテストに関する説明を追加
3. 既存ワークフローとの統合
- E2Eテストの結果をCodecovと連携(可能であれば)
- 他のテストワークフローとの重複を避ける設計
成功基準
-
.github/workflows/e2e_macos.ymlが作成され、正常に動作する - 週一回(毎週月曜日)自動実行される
- 手動実行(workflow_dispatch)が可能
- すべてのテストシナリオが実装され、パスする
- エラー時に適切なログが出力される
- ドキュメント(AGENTS.md、README.md)が更新される
- 初回実行が成功し、問題がないことを確認
技術的考慮事項
GitHub Actionsの制限
- macOSランナーは課金対象(Linux/Windowsの10倍)
- 実行時間を最適化する必要がある
- 週一回の実行頻度が適切かどうか検討
キャッシュ戦略
- Homebrewのキャッシュを活用してテスト時間を短縮
- miseのツールキャッシュを検討
タイムアウト設定
- 各ステップとワークフロー全体にタイムアウトを設定
- 推奨: 全体で30分以内に完了するよう最適化
参考情報
既存のワークフロー
.github/workflows/test_bats.yml- 単体テスト.github/workflows/test_chezmoi_apply.yml- chezmoi適用テスト.github/workflows/copilot-setup-steps.yml- Copilot検証環境構築
関連スクリプト
setup.sh- クイックセットアップスクリプトinstall/macos/common/brew.sh- Homebrew自動インストールinstall/macos/common/brewfile.sh- Brewfile自動適用
参考リンク
実装の優先順位
- Phase 1: 基本的なE2Eワークフローの作成とテスト
- Phase 2: キャッシュ戦略の実装と最適化
- Phase 3: エラー通知機能の追加(オプション)
- Phase 4: ドキュメント更新と運用確立
ラベル
enhancement: 新機能追加ci/cd: CI/CD関連testing: テスト関連priority-medium: 中優先度