0Pricing
PHP Academy · レッスン

GitHub Actionsでデプロイする

GitHub Actionsのワークフローでビルド、テスト、SSHデプロイの手順を自動化します

「GitHub Actionsでデプロイする」はCoddyKit上の無料PHP Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPHP Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 PHP Academyコースには全4レッスンが含まれています。

GitHub Actionsとは

GitHub Actionsは、GitHubに組み込まれたCI/CDプラットフォームです。.github/workflows/*.ymlで定義したワークフローは、プッシュ、プルリクエスト、またはスケジュールイベントをきっかけに自動実行されます。

基本的なワークフローの構造

ワークフローは1つ以上のジョブで構成され、各ジョブにはステップがあります。

# .github/workflows/deploy.yml
name: Deploy

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Set up PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: "8.3"
      - name: Install dependencies
        run: composer install --no-dev --optimize-autoloader
      - name: Run tests
        run: vendor/bin/phpunit

SSHデプロイステップ

テストに合格した後、SSH経由でサーバーにデプロイします。

      - name: Deploy to server
        uses: appleboy/ssh-action@v1
        with:
          host: ${{ secrets.SERVER_HOST }}
          username: ${{ secrets.SERVER_USER }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          script: |
            cd /srv/myapp
            git pull origin main
            composer install --no-dev --optimize-autoloader
            php artisan migrate --force
            php artisan config:cache
            php artisan route:cache
            sudo systemctl reload php8.3-fpm

GitHub Secrets

機密性の高い値(SSHキー、APIトークン、データベースパスワード)は、Settings → Secrets and Variablesにある暗号化されたリポジトリシークレットとして保存します。

依存関係のキャッシュ

実行間でComposerパッケージをキャッシュし、ワークフローを高速化します。

      - name: Cache Composer packages
        uses: actions/cache@v4
        with:
          path: vendor
          key: ${{ runner.os }}-composer-${{ hashFiles("composer.lock") }}

テストの実行

統合テスト用に、MySQLまたはPostgreSQLのサービスコンテナを含めます。

services:
  mysql:
    image: mysql:8
    env:
      MYSQL_DATABASE: test
      MYSQL_ROOT_PASSWORD: secret
    ports: [3306:3306]

Actionsでの環境変数

シークレットを環境変数としてワークフローのステップに渡します。

      - name: Run tests
        env:
          DB_HOST: 127.0.0.1
          DB_DATABASE: test
          DB_PASSWORD: ${{ secrets.DB_PASSWORD }}
        run: vendor/bin/phpunit

コード品質ゲート

コード品質チェックに失敗した場合は、デプロイをブロックします。

      - name: PHPStan static analysis
        run: vendor/bin/phpstan analyse src --level=6
      - name: PHP_CodeSniffer
        run: vendor/bin/phpcs src --standard=PSR12

マトリックステスト

複数のPHPバージョンを同時に対象としてテストします。

jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        php: ["8.2", "8.3"]
    steps:
      - uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php }}

デプロイ戦略

一般的な方法には、直接git pull(単純)、rsync(高速なファイル同期)、ブルーグリーンデプロイ(ダウンタイムゼロ)、Deployer PHP(自動化されたダウンタイムゼロ)があります。許容できるダウンタイムに基づいて選択します。

まとめ

.github/workflows/*.ymlでワークフローを定義します。すべてのプッシュでテストを実行し、mainブランチへのマージ時にデプロイします。依存関係をキャッシュし、シークレットをGitHub Secretsに保存し、デプロイ前に品質ゲートを追加します。

確認問題

GitHub ActionsでSSHキーなどの機密性の高い値はどこに保存しますか?

よくある質問

「GitHub Actionsでデプロイする」レッスンは無料ですか?

はい。「GitHub Actionsでデプロイする」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、PHP Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 PHP Academyコースには全4レッスンが含まれています。

「GitHub Actionsでデプロイする」で何を学びますか?

GitHub Actionsのワークフローでビルド、テスト、SSHデプロイの手順を自動化します ブラウザで直接実行するハンズオンコードでPHP Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

PHP Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのPHP Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「GitHub Actionsでデプロイする」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このPHP Academyレッスンでコードを書いて実行できますか?

はい。すべてのPHP Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. NginxとPHP-FPMの設定
  2. 環境変数と.envファイル
  3. GitHub Actionsでデプロイする
  4. PHPアプリケーションをDocker化する
← PHP Academyに戻る