PickSkill
← Back

premerge-check

プレマージワークフローをローカルで実行してCI/CDチェックを行います。ローカル環境でCI/CDと同等の検証を実施したい場合に使用してください。

SKILL.md
Rendered from GitHub raw
View raw ↗

name: premerge-check description: プレマージワークフローをローカルで実行してCI/CDチェックを行います。ローカル環境でCI/CDと同等の検証を実施したい場合に使用してください。

プレマージチェックスキル

このスキルは、GitHub ActionsのPremergeワークフローをローカル環境で再現し、CI/CDと同等の検証を実施します。

利用可能なツール

  • bash: コマンド実行、依存関係インストール、検証コマンド実行
  • view: ファイル内容の確認
  • grep: コード検索

使用すべきタイミング

以下の場合にこのスキルを使用してください:

  • PRを作成する前にローカルでCI/CDチェックを実行したい場合
  • CI/CDで発生するエラーをローカルで再現・修正したい場合
  • すべてのワークスペースの変更を包括的にテストしたい場合

必須検証項目

1. プロジェクトルートへの移動

cd /home/runner/work/attendance-kit/attendance-kit

すべてのコマンドはプロジェクトルートから実行してください。

: このパスはGitHub Actions環境用です。ローカル開発では、自身のプロジェクトルートディレクトリに置き換えてください。

2. 依存関係のインストール

npm run setup

変更前に依存関係が正しくインストールされていることを確認します。

3. Lint実行

npm run lint

必須: コード変更後、必ず実行してください。

  • シークレット検出(secretlint)
  • Markdownリント(markdownlint)
  • シェルスクリプトチェック(shellcheck)
  • GitHub Actionsリント(actionlint)
  • ESLint(TypeScript/JavaScript)

4. フォーマットチェック

npm run format:check

必須: コードスタイルの確認を行ってください。

  • Prettierによるコードフォーマットチェック

5. ビルド実行

npm run build

必須: コード変更後、必ず実行してください。

  • Backend、Frontend、Infrastructureのビルド
  • TypeScriptのコンパイル確認

6. ユニットテスト実行

npm run test:unit

必須: コード変更後、必ず実行してください。

  • すべてのワークスペースのユニットテスト
  • スナップショットの更新(必要に応じて)

7. Backend統合テスト実行

npm run test:integration --workspace=@attendance-kit/backend

必須: Backend変更時は実行してください。

  • aws-sdk-client-mockを使用した統合テスト
  • エンドポイントの動作確認

8. Frontend E2Eテスト実行

npm run test:integration --workspace=@attendance-kit/frontend

必須: Frontend変更時は実行してください。

  • Playwrightによるブラウザテスト
  • 画面遷移の動作確認

9. Infrastructure統合テスト実行

npm run test:integration --workspace=@attendance-kit/deploy

必須: Infrastructure変更時は実行してください。

  • LocalStackを使用した統合テスト
  • CDKデプロイのシミュレーション

10. OpenAPI仕様の生成

npm run generate

必須: APIエンドポイントやDTOを変更した場合は実行してください。

  • OpenAPI仕様(apps/backend/api/openapi.json)の自動生成

11. E2Eテスト実行(オプション)

npm run test:e2e:local

推奨: フロントエンドとバックエンドの統合動作を完全にテストする場合に実行してください。

  • Cucumber + Playwrightによる統合テスト
  • LocalStack、Backend、Frontendサーバーの起動が必要

: E2Eテストは実行に時間がかかるため、必要な場合のみ実行してください。

実行順序

推奨される実行順序:

  1. npm run setup - 依存関係インストール
  2. npm run lint - Lintチェック
  3. npm run format:check - フォーマットチェック
  4. npm run build - ビルド確認
  5. npm run test:unit - ユニットテスト
  6. npm run test:integration --workspace=@attendance-kit/backend - Backend統合テスト
  7. npm run test:integration --workspace=@attendance-kit/frontend - Frontend E2Eテスト
  8. npm run test:integration --workspace=@attendance-kit/deploy - Infrastructure統合テスト
  9. npm run generate - OpenAPI仕様生成
  10. npm run test:e2e:local - E2Eテスト(オプション)

エラー対応

Lintエラーが発生した場合

# エラー詳細を確認
npm run lint
 
# 個別にLintを実行
npm run lint:secrets
npm run lint:markdown
npm run lint:shellcheck
npm run lint:actionlint
  • 未使用変数・インポートを削除
  • 型定義を追加
  • コードスタイルを修正
  • シークレットが含まれていないか確認

フォーマットエラーが発生した場合

# 自動修正
npm run format
 
# 再度チェック
npm run format:check
  • Prettierによる自動フォーマットを実行
  • コミット前に必ずフォーマットを適用

ビルドエラーが発生した場合

# エラー詳細を確認
npm run build
 
# 個別にビルド
npm run build --workspace=@attendance-kit/backend
npm run build --workspace=@attendance-kit/frontend
npm run build --workspace=@attendance-kit/deploy
  • TypeScriptの型エラーを修正
  • インポートパスを確認
  • tsconfig.jsonの設定を確認

テストエラーが発生した場合

# 失敗したテストの詳細を確認
npm test
 
# 個別にテスト実行
npm test --workspace=@attendance-kit/backend
npm test --workspace=@attendance-kit/frontend
npm test --workspace=@attendance-kit/deploy
  • テストロジックを確認
  • モックの設定を確認
  • スナップショットを更新

ベストプラクティス

コード変更時の原則

  1. 変更前に既存のテストを実行: 既存の問題を把握
  2. 小さな変更を頻繁にテスト: エラーの早期発見
  3. すべての検証を通過させる: Premergeワークフローと同じ基準
  4. 自動生成ファイルをコミット: OpenAPI仕様やスナップショット

検証のスキップ条件

以下の場合のみ一部の検証をスキップ可能:

  • ドキュメントのみの変更: テスト不要(Lint、フォーマットは実行)
  • 特定ワークスペースのみの変更: 他のワークスペースの統合テストは不要
  • コメントのみの変更: ビルド確認のみ

それ以外の場合は、必ずすべての検証を実行してください。

Premergeワークフローとの対応

このスキルの検証項目は、GitHub ActionsのPremergeワークフローと完全に対応しています:

Premergeステップ ローカル検証コマンド
npm run setup npm run setup
npm run lint npm run lint
npm run format:check npm run format:check
npm run build npm run build
npm run test:unit npm run test:unit
Backend統合テスト npm run test:integration --workspace=@attendance-kit/backend
Frontend E2Eテスト npm run test:integration --workspace=@attendance-kit/frontend
Infrastructure統合テスト npm run test:integration --workspace=@attendance-kit/deploy
npm run generate npm run generate
E2Eテスト npm run test:e2e:local

参考資料