GitHub Actionsとは
GitHub Actionsを使用すると、ワールドクラスのCI / CDですべてのソフトウェアワークフローを簡単に自動化できます。 GitHubから直接コードをビルド、テスト、デプロイでき、コードレビュー、ブランチ管理、問題のトリアージを希望どおりに機能させます。
事前準備
まずはcomposerでPHPUnitをインストールし、テストを実装しておく。
そしてcomposer.jsonにscriptsを追加しておく。
"scripts": {
"test": "vendor/bin/phpunit"
}
ワークフローを作成する
ワークフローはリポジトリにYAMLファイルで作成する。
.github/workflows/{name}.yml
GitHubで作成するなら、リポジトリのActionsタブを開く。
テンプレートから選んでもいいし、「Set up a workflow yourself」から自分で作成してもいい。
ここではPHPのテンプレートをベースに作成していく。
.github/workflows/test.yml
name: Test
on: [push]
jobs:
test:
name: Test
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Validate composer.json and composer.lock
run: composer validate
- name: Install dependencies
run: composer install --prefer-dist --no-progress --no-suggest
- name: Run test suite
run: composer run-script test
リポジトリにPushするとワークフローが実行される。
複数のPHPバージョンでテストする
PHPのセットアップ
PHPのバージョンを切り替える必要があるのだが、残念ながら公式のPHP Setup Actionが無いので他を探すことになる。
steps:
- name: Setup PHP 7.2
uses: shivammathur/setup-php@v2
with:
php-version: '7.2'
PHP7.2と7.3でテストを実行する
strategyで実行環境のバリエーションを定義する。
GitHub Actionsのワークフロー構文 - GitHub ヘルプ
strategy:
matrix:
php-version: ['7.2', '7.3']
steps:
- name: Setup PHP ${{ matrix.php-version }}
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-version }}
最終的なワークフロー
name: Test
on: [push]
jobs:
test:
name: Test
runs-on: ubuntu-latest
strategy:
matrix:
php-version: ['7.2', '7.3']
steps:
- name: Setup PHP ${{ matrix.php-version }}
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-version }}
- name: Checkout
uses: actions/checkout@v2
- name: Validate composer.json and composer.lock
run: composer validate
- name: Install dependencies
run: composer install --prefer-dist --no-progress --no-suggest
- name: Run test suite
run: composer run-script test