0
0

GitHub Actions で php artisan test を実行して Laravel テスト自動化

Posted at

はじめに

今回は下記の条件を満たした時に、対象のブランチに対してphp artisan testを実行する方法をご紹介しようと思います。

  • GitHubでプルリクエストが作成
  • 特定のファイルを変更したブランチがプッシュ

実装

手順1: リポジトリのルートディレクトリに.github/workflowsディレクトリを作成

いきなりディレクトリを作成してください。
リポジトリ画面 => Settings => Actions => General => Actions permissionsなど設定しなくても大丈夫です。

手順2: .github/workflows/配下にymlファイルを作成

GitHub上で直接ファイルを作成・編集しても、ローカルのエディタを利用して編集したものをリポジトリのデフォルトブランチにマージしても、どちらでも構いません。

スクリーンショット 2024-09-14 23.10.53.png

手順3: ymlファイルにワークフローの内容を記述

細かく説明するより、すでに動作可能なワークフローを記載しておきますので、内容はコメント文などを見て理解していただけると幸いです。

sampleTest.yml

# ワークフローの名前
name: Laravel Test By php artisan test

# [GitHub Actions on](https://docs.github.com/ja/actions/writing-workflows/workflow-syntax-for-github-actions#on)参照
# ワークフローのトリガーを定義
on:

 # マスターブランチに対してプルリクエスト作成時(ワークフローのトリガー)
 pull_request:
  # デフォルトは[opened, reopened, synchronize]、ここではopenedのみを設定
  types:
   - opened
  branches:
   - master

 # 特定のパスのファイルで変更が行われたブランチがプッシュされた時(ワークフローのトリガー)
 push:
  paths:
   - 'htdocs/app/Helper/ResultHelper.php'

# [Github Actions jobs](https://docs.github.com/ja/actions/writing-workflows/workflow-syntax-for-github-actions#jobs)参照
# トリガーによって実行されるワークフロー(複数のジョブ可)を定義
jobs: 

 # "laravel_test"というジョブIDでジョブを定義
 laravel_test:
  # "laravel_test"ジョブを実行するOS(ubuntuの最新版)を指定
  runs-on: ubuntu-latest
  # 基本はhtdocsディレクトリで各タスクを実行
  defaults:
   run:
    working-directory: htdocs

  # "laravel_test"ジョブで実行されるタスク(複数)を定義
  steps: 
   # プルリクを作成したソースブランチ || プッシュされたブランチ にチェックアウト
   - name: Fetch and checkout source branch of remote repository
     uses: actions/checkout@v4
     with:
      ref: ${{ github.head_ref }}
      
   # 以下 php artisan test を実行するための環境構築

   # ジョブ内でphp環境をバージョン指定しセットアップ(バージョンはプロジェクトによって各自設定)
   - name: Setup php
     uses: shivammathur/setup-php@v2
     with:
      php-version: "7.4"
      tools: composer:v2

   # 日本語版サイトのテスト用
   # ここで一度.envをコピーしなければcomposer installに失敗する
   - name: Copy .env in Japanese locale
     run: cp .env.example.ja .env

   # composerからライブラリをインストール
   - name: Install dependencies by composer
     run: composer install --no-progress --prefer-dist --optimize-autoloader

   # Laravelのアプリケーションキーを作成
   - name: Generate laravel app key
     run: php artisan key:generate

   # テスト実行
   - name: Run test in Japanese locale
     run: php artisan test

   # 英語版サイトのテスト用
   - name: Copy .env in English locale
     run: cp .env.example.en .env

   # テスト実行
   - name: Run test in English locale
     run: php artisan test

英語版サイトなどがない場合には、下記の部分を削除していただいて大丈夫です。

sampleTest.yml
   # 英語版サイトのテスト用
   - name: Copy .env in English locale
     run: cp .env.example.en .env

   # テスト実行
   - name: Run test in English locale
     run: php artisan test

まとめ

以上、GitHub Actions で php artisan test を実行して Laravel テスト自動化する方法をご紹介しました。GitHub Actionsの利用自体はとても簡単ですね。
あとは各々の目的によってジョブやタスクを定義することで、よりフィジカルで、よりプリミティブで、よりフェティッシュなプロジェクトを進めることができそうですね。

カンボジアの方でも誰でもいいので、この記事が誰かのお役に立つことを心より願っています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0