こんにちは、こんばんは、おはようございます。kubotakです。
最近はImpalaとKuduしか触っていなかったんですが、GitHubActionsが使えるようになっていた(2019/10/04現在はまだベータ)のでPHP7.4を対象にしたLaravelアプリケーションのユニットテストをGitHubActionsでCIしたいと思います。
GitHubActionsとは
GitHubリポジトリでのイベントを検知してワークフローを実行できる仕組み、いわゆるCIツール・サービスです。
GitHubActionsの使い方としては以下のブログが参考になりました。
GitHub Actionsの使い方
まずはリポジトリのタブにActionsがあることが大前提です。
出てない場合はベータの申し込みが必要です。
そして、GitHub Actionsのワークフロー定義は
.github/workflow/{name}.yml
このようにリポジトリ直下にディレクトリを掘ってワークフロー毎にYAMLファイルを用意することで実行してくれます。
基本的な使い方は先ほど紹介したブログをご参照いただければと思います。
今回はPHP7.4環境で実行したいわけですが、現在デフォルトで対応してるのは7.3までのようです(そもそもPHP7.4がまだベータなので)
ですので、以下のPHP環境を利用します。
それでは使ってみましょう
name: PHP Unit
on: [ push, pull_request ]
jobs:
build:
name: Testing
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@master
- name: Installing PHP
uses: shivammathur/setup-php@master
with:
php-version: 7.4
extension-csv: mbstring, xdebug
- name: Executio PHP Unit
run: composer install && composer run test
しかしこれでは動きませんでした!
ext-domがない
composer install時にいくつかのライブラリで
requires ext-dom * -> the requested PHP extension dom is missing from your system.
というエラーが発生しました。
ext-domということはPHPのxmlエクステンションを入れれば良いはず。
with:
php-version: 7.4
extension-csv: mbstring, xdebug, xml
ここにxmlも追加してみました、が
Extension xml was already enabled
すでに入ってると言われてしまいました。
仕方ないのでaptで入れて対処
- name: Add Plugin
run: sudo apt install -y php7.4-xml
これで無事先ほどのエラーは回避されました。
追記: 2019/10/16
In setup-php github action, to install dom extension you can specify dom in extension-csv and it will install it.
— Shivam Mathur (@meShivamMathur) October 14, 2019
Twitterでご指摘いただきました。
extension-csv: mbstring, xdebug, dom
extension-csvにdomを追加することでext-domが追加されるようです。
Memcachedクラスがない
これはPHP7.4とは関係なく、Laravelの.env.exampleでCACHE_DRIVERをmemcachedとしていたことに起因していました。
テストなのでfileに変更しことなきを得ました。
CACHE_DRIVER=file
YAMLファイルサンプル
name: PHP Unit
on: [ push, pull_request ]
jobs:
build:
name: Testing
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@master
- name: Installing PHP
uses: shivammathur/setup-php@master
with:
php-version: 7.4
extension-csv: mbstring, xdebug
- name: Add Plugin
run: sudo apt install -y php7.4-xml
- name: Check PHP Version
run: php -v
- name: Check Composer Version
run: composer -V
- name: Check PHP Extensions
run: php -m
- name: Execution PHP Unit
run: cp .env.test .env && composer install && php artisan key:generate && composer run test
YAMLファイルはこんな感じになりました。
無事PHP7.4環境でPHPUnitが実行できました。
PHP7.4は2019年11月28日リリース予定です。
先立って利用したい方は今回の使い方でGItHubActionsでPHPUnitを実行できます。
みなさんでPHP7.4に備えましょう!