スキルアップ

Laravel開発者必見!GitHub Actionsで効率化する定番ワークフローとツール完全ガイド

Laravelは強力で柔軟なPHPフレームワークであり、多くの開発者に利用されています。

開発プロセスを効率化し品質を向上させるためには、CI/CD(継続的インテグレーションおよび継続的デプロイメント)を取り入れることが重要です。

GitHub Actionsはそのための強力なツールです。

本記事ではLaravel開発においてよく使用されるGitHub Actionsを提案し、具体的な活用方法を詳しく解説します。

GitHub Actionsとは?

GitHub ActionsはGitHubリポジトリ内で自動化されたワークフローを作成できるツールです。

これにより、コードのビルド、テスト、デプロイなどのプロセスを自動化できます。

特にLaravel開発においては、以下のようなタスクを自動化するのに役立ちます。

  1. コードの静的解析
  2. 単体テストおよび統合テストの実行
  3. ビルドとデプロイ
  4. データベースのマイグレーション

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を最大限に活用して、より効率的で高品質な開発を目指しましょう。

フリーランスフルリモート環境に興味がある方は、下記の記事をご参考ください。

  • この記事を書いた人

zuu

現役フリーランスlaravelエンジニアのスキルスタックブログです。 日々の技術的発見やフリーランスエンジニア業界についてのあれこれをご紹介します。エージェントは PE-BANK を利用しています。

-スキルアップ