第52回: CI/CD入門(GitHub Actions) — コードの変更を「自動で検証」してデプロイを安全にする

章: 第6章: パフォーマンスとインフラ

プルリクエストのたびに手動でテストを実行していませんか?

テストの実行忘れ・PHPStanのチェック漏れ——手作業での確認は必ずミスが生まれます。GitHub Actionsを使えば、コードのpushや Pull Requestをトリガーにテスト・解析を自動実行できます。

CI/CDなしで運用を続けると何が起きるか

人手によるデプロイは手順書の追い忘れ・環境の不一致・ロールバック失敗のリスクが伴います。自動化されたパイプラインで「マージ前に必ず検証が通る」状態を作ることで、ミスと工数を同時に削減できます。

CI/CDの導入効果の比較

観点 手動運用 GitHub Actions導入
テスト実行 忘れることがある Push/PRで自動実行
コードレビュー 静的解析は任意 PHPStanが自動でブロック
デプロイ 手順書を見ながら手動 mainブランチへのマージで自動デプロイ
環境差異 ローカルと本番が違うことがある CIの実行環境で再現性を担保

チェックポイント: GitHub Actionsのワークフローファイルは .github/workflows/ に配置します。シークレット(APIキー・DBパスワード)はリポジトリの「Settings > Secrets」に登録し、${{ secrets.SECRET_NAME }} で参照しましょう。ワークフローファイルには機密情報を直書きしないでください。

コードサンプル


# .github/workflows/ci.yml
name: CI
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: shivammathur/setup-php@v2
        with:
          php-version: '8.3'
      - run: composer install --no-progress
      - run: cp .env.example .env && php artisan key:generate
      - run: php artisan test
      - run: ./vendor/bin/phpstan analyse --level=5 src

まとめ & 次のステップ

  • GitHub Actionsでテスト・静的解析を自動化し、マージ前に品質を保証できます
  • ワークフローファイルをバージョン管理に含め、チームで共有しましょう
  • シークレットはリポジトリのSecretsに登録し、ワークフロー内で参照しましょう
  • CIが通らない限りマージできないブランチ保護ルールを設定することを推奨します
  • デプロイの自動化(CD)はCIが安定してから段階的に導入しましょう

次回は XSS対策実践 を学びます。悪意あるスクリプトを埋め込まれないための出力エスケープを整理しましょう。

Related Articles