Laravelは強力で柔軟なPHPフレームワークであり、多くの開発者に利用されています。
開発プロセスを効率化し品質を向上させるためには、CI/CD(継続的インテグレーションおよび継続的デプロイメント)を取り入れることが重要です。
GitHub Actionsはそのための強力なツールです。
本記事ではLaravel開発においてよく使用されるGitHub Actionsを提案し、具体的な活用方法を詳しく解説します。
目次
GitHub Actionsとは?
GitHub ActionsはGitHubリポジトリ内で自動化されたワークフローを作成できるツールです。
これにより、コードのビルド、テスト、デプロイなどのプロセスを自動化できます。
特にLaravel開発においては、以下のようなタスクを自動化するのに役立ちます。
- コードの静的解析
- 単体テストおよび統合テストの実行
- ビルドとデプロイ
- データベースのマイグレーション
Laravel開発でよく使われるGitHub Actions
1. actions/checkout
概要
このアクションはリポジトリの内容をチェックアウトし、ワークフロー内で利用可能にします。
ほとんどのワークフローの最初に必要となる基本的なアクションです。
設定例
name: Laravel CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Check out the repository
uses: actions/checkout@v2
2. actions/setup-php
概要
このアクションは指定されたPHPバージョンをインストールし、設定します。
Laravelアプリケーションをテストするための環境を整えるのに必要です。
設定例
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '7.4'
extensions: mbstring, intl, dom
3. actions/cache
概要
依存関係のキャッシュを利用することでワークフローの実行時間を短縮できます。
Composerのキャッシュを使用して、依存関係の再インストールを防ぎます。
設定例
- name: Cache dependencies
uses: actions/cache@v2
with:
path: vendor
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-composer-
4. composer/install
概要
Composerを使ってLaravelプロジェクトの依存関係をインストールします。
設定例
- name: Install dependencies
run: composer install --prefer-dist --no-progress --no-suggest
5. laravel/test-runner
概要
Laravelのテストを実行するためのアクションです。
PHPUnitを使って単体テストおよび統合テストを実行します。
設定例
- name: Run tests
run: php artisan test
6. deploy-to-server
概要
デプロイメントを自動化するためのアクションです。
特定のサーバーやホスティングサービスにデプロイできます。
設定例
- name: Deploy to server
run: |
rsync -avz --delete-after ./ user@server:/path/to/deploy
Laravelプロジェクト向けの完全なGitHub Actionsワークフロー例
以下はLaravelプロジェクトに最適化された完全なGitHub Actionsワークフローの例です。
name: Laravel CI/CD Pipeline
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
services:
mysql:
image: mysql:5.7
env:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: laravel
options: --health-cmd="mysqladmin ping --silent" --health-interval=10s --health-timeout=5s --health-retries=3
ports:
- 3306:3306
volumes:
- /var/lib/mysql
steps:
- name: Check out the repository
uses: actions/checkout@v2
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '7.4'
extensions: mbstring, intl, dom, pdo_mysql
- name: Cache dependencies
uses: actions/cache@v2
with:
path: vendor
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-composer-
- name: Install dependencies
run: composer install --prefer-dist --no-progress --no-suggest
- name: Create .env file
run: cp .env.example .env
- name: Generate application key
run: php artisan key:generate
- name: Run migrations
run: php artisan migrate
- name: Run tests
run: php artisan test
deploy:
needs: build
runs-on: ubuntu-latest
steps:
- name: Check out the repository
uses: actions/checkout@v2
- name: Deploy to server
run: |
rsync -avz --delete-after ./ user@server:/path/to/deploy
GitHub Actionsのメリット
自動化による効率化
GitHub Actionsを使うことで、手動で行っていたビルドやデプロイのプロセスを自動化できます。
継続的インテグレーションの実現
コードの変更が行われるたびに自動でテストを実行し、問題がないことを確認します。
簡単な設定と使いやすさ
GitHub ActionsはYAML形式の設定ファイルを使用するため、シンプルで直感的に設定できます。
また、GitHubリポジトリ内で直接設定できるため、他のCI/CDツールよりも統合がスムーズです。
まとめ
GitHub ActionsはLaravel開発において非常に強力なツールです。
本記事で紹介したおすすめのアクションを活用することで開発プロセスを効率化し、コードの品質を向上させることができます。
定期的なテストやデプロイの自動化により、開発者は本来の業務に集中できるようになります。
これからのLaravel開発において、GitHub Actionsを最大限に活用して、より効率的で高品質な開発を目指しましょう。
フリーランスやフルリモート環境に興味がある方は、下記の記事をご参考ください。