Skip to content

macOSでのE2Eテストを週一回実行するGitHub Actionsの追加 #46

@yellow-seed

Description

@yellow-seed

背景

現在、このリポジトリでは以下のテストが実装されています:

  • 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を未インストール状態から)

テストシナリオ

  1. 環境の初期化

    • クリーンなmacOS環境を確保
    • 必要な前提条件の確認
  2. セットアップスクリプトの実行

    sh setup.sh

    または

    sh -c "$(curl -fsLS get.chezmoi.io)" -- init --apply yellow-seed
  3. Homebrewのインストール検証

    • install/macos/common/brew.shの実行
    • Homebrewが正常にインストールされたことを確認
  4. Brewfileの適用検証

    • install/macos/common/brewfile.shの実行
    • 主要なパッケージがインストールされたことを確認
    • 例: git, gh, chezmoiなど
  5. miseのインストールと設定検証

    • miseがインストールされたことを確認
    • ~/.config/mise/config.tomlが適用されたことを確認
    • mise installが正常に実行されることを確認
  6. dotfilesの適用検証

    • chezmoiで設定ファイルが適用されたことを確認
    • 主要な設定ファイルの存在確認:
      • ~/.zshrc
      • ~/.gitconfig
      • ~/.config/mise/config.toml
  7. 動作確認

    • インストールされたツールが実行可能であることを確認
    • 例: 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自動適用

参考リンク

実装の優先順位

  1. Phase 1: 基本的なE2Eワークフローの作成とテスト
  2. Phase 2: キャッシュ戦略の実装と最適化
  3. Phase 3: エラー通知機能の追加(オプション)
  4. Phase 4: ドキュメント更新と運用確立

ラベル

  • enhancement: 新機能追加
  • ci/cd: CI/CD関連
  • testing: テスト関連
  • priority-medium: 中優先度

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions