継続的インテグレーション
これまで、ローカルマシン上のコマンドラインからテストを実行する方法のみを説明してきました。しかし、お好みの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: pestChipper CIは、ComposerとNPMのキャッシュを処理するだけでなく、PATHにvendor/binを自動的に追加するため、テスト実行時にpest --ciコマンドを簡単に実行できます。
当然のことながら、上記のスクリプトは要件に合わせてカスタマイズできます。たとえば、テストでデータベースが必要な場合は、データベースサービスを定義する必要がある場合があります。
.chipperci.ymlファイルを作成したら、.chipperci.ymlファイルをコミットしてプッシュし、Chipper CIでテストを実行できるようにします。このコミットを行うと、新しいコミットすべてでテストスイートが実行されることに注意してください。
コードベースの安定性を確保するためのプロジェクトの継続的インテグレーションの設定は素晴らしい出来です。次に、Pestのテスト設定機能を探求して、Pestの概念をより深く掘り下げてみましょう: Pestの設定 →