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/phpunitSSHデプロイステップ
テストに合格した後、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-fpmGitHub 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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- NginxとPHP-FPMの設定
- 環境変数と.envファイル
- GitHub Actionsでデプロイする
- PHPアプリケーションをDocker化する