継続的インテグレーション
これまで、ローカルマシン上のコマンドラインからテストを実行する方法のみを説明してきました。しかし、お好みのCIプラットフォームからテストを実行することもできます。pestphp/pest
はComposerの開発依存関係に含まれているため、CIプラットフォームのデプロイパイプライン内でvendor/bin/pest --ci
コマンドを簡単に実行できます。
GitHub Actionsでの例
アプリケーションがCIプラットフォームとしてGitHub Actionsを使用している場合、Pestを設定して、誰かがGitHubリポジトリにコミットをプッシュしたときにアプリケーションが自動的にテストされるようにするための次のガイドラインが役立ちます。
まず、your-project/.github/workflows
ディレクトリ内にtests.yml
ファイルを作成します。ファイルの内容は次のとおりです。
1name: Tests 2 3on: ['push', 'pull_request'] 4 5jobs: 6 ci: 7 runs-on: ubuntu-latest 8 9 steps:10 - name: Checkout11 uses: actions/checkout@v312 13 - name: Setup PHP14 uses: shivammathur/setup-php@v215 with:16 php-version: 8.217 tools: composer:v218 coverage: xdebug19 20 - name: Install Dependencies21 run: composer install --no-interaction --prefer-dist --optimize-autoloader22 23 - name: Tests24 run: ./vendor/bin/pest --ci
当然のことながら、上記のスクリプトは要件に合わせてカスタマイズできます。たとえば、テストでデータベースが必要な場合は、データベースを設定する必要がある場合があります。
tests.yml
ファイルを作成したら、tests.yml
ファイルをコミットしてプッシュし、GitHub Actionsでテストを実行できるようにします。このコミットを行うと、新しいプルリクエストとコミットすべてでテストスイートが実行されることに注意してください。
GitLab CI/CDパイプラインでの例
アプリケーションがCIプラットフォームとしてGitLab CI/CDパイプラインを使用している場合、Pestを設定して、誰かがGitLabリポジトリにコミットをプッシュしたときにアプリケーションが自動的にテストされるようにするための次のガイドラインが役立ちます。
まず、.gitlab-ci.yml
ファイルに次の構成を追加します。ファイルの内容は次のとおりです。
1stages: 2 - build 3 - test 4 5build:vendors: 6 stage: build 7 only: 8 refs: 9 - merge_requests10 - push11 cache:12 key:13 files:14 - composer.lock15 policy: pull-push16 image: composer:217 script:18 - composer install --no-interaction --prefer-dist --optimize-autoloader19 20tests:21 stage: test22 only:23 refs:24 - merge_requests25 - push26 cache:27 key:28 files:29 - composer.lock30 policy: pull31 image: php:8.232 script:33 - ./vendor/bin/pest --ci
当然のことながら、上記のスクリプトは要件に合わせてカスタマイズできます。たとえば、テストでデータベースが必要な場合は、データベースを設定する必要がある場合があります。
.gitlab-ci.yml
ファイルを作成したら、.gitlab-ci.yml
ファイルをコミットしてプッシュし、Gitlab CI/CDパイプラインでテストを実行できるようにします。このコミットを行うと、新しいマージリクエストとコミットすべてでテストスイートが実行されることに注意してください。
Bitbucketパイプラインでの例
アプリケーションがCIプラットフォームとしてBitbucket CI/CDパイプラインを使用している場合、Pestを設定して、誰かがBitbucketリポジトリにコミットをプッシュしたときにアプリケーションが自動的にテストされるようにするための次のガイドラインが役立ちます。
まず、bitbucket-pipelines.yml
ファイルに次の構成を追加します。ファイルの内容は次のとおりです。
1image: composer:2 2 3pipelines: 4 default: 5 - parallel: 6 - step: 7 name: Test 8 script: 9 - composer install --no-interaction --prefer-dist --optimize-autoloader10 - ./vendor/bin/pest11 caches:12 - composer
当然のことながら、上記のスクリプトは要件に合わせてカスタマイズできます。たとえば、テストでデータベースが必要な場合は、データベースを設定する必要がある場合があります。
bitbucket-pipelines.yml
ファイルを作成したら、bitbucket-pipelines.yml
ファイルをコミットしてプッシュし、Bitbucketパイプラインでテストを実行できるようにします。このコミットを行うと、新しいプルリクエストとコミットすべてでテストスイートが実行されることに注意してください。
Chipper CIでの例
アプリケーションがCIプラットフォームとしてChipper CIを使用している場合、Pestを設定して、誰かがGitリポジトリにコミットをプッシュしたときにアプリケーションが自動的にテストされるようにするための次のガイドラインが役立ちます。
まず、.chipperci.yml
ファイルに次の構成を追加します。ファイルの内容は次のとおりです。
1version: 1 2 3environment: 4 php: 8.2 5 node: 16 6 7# Optional services 8services: 9# - mysql: 810# - redis:11 12# Build all commits13on:14 push:15 branches: .*16 17pipeline:18 - name: Setup19 cmd: |20 cp -v .env.example .env21 composer install --no-interaction --prefer-dist --optimize-autoloader22 php artisan key:generate23 24 - name: Compile Assets25 cmd: |26 npm ci --no-audit27 npm run build28 29 - name: Test30 cmd: pest
Chipper CIは、ComposerとNPMのキャッシュを処理するだけでなく、PATHにvendor/bin
を自動的に追加するため、テスト実行時にpest --ci
コマンドを簡単に実行できます。
当然のことながら、上記のスクリプトは要件に合わせてカスタマイズできます。たとえば、テストでデータベースが必要な場合は、データベースサービスを定義する必要がある場合があります。
.chipperci.yml
ファイルを作成したら、.chipperci.yml
ファイルをコミットしてプッシュし、Chipper CIでテストを実行できるようにします。このコミットを行うと、新しいコミットすべてでテストスイートが実行されることに注意してください。
コードベースの安定性を確保するためのプロジェクトの継続的インテグレーションの設定は素晴らしい出来です。次に、Pestのテスト設定機能を探求して、Pestの概念をより深く掘り下げてみましょう: Pestの設定 →