持续集成

到目前为止,我们只讨论了在本地机器上从命令行运行测试。但是,您也可以从您选择的 CI 平台运行测试。由于 pestphp/pest 包含在您的 Composer 开发依赖项中,因此您可以轻松地在 CI 平台的部署管道中执行 vendor/bin/pest --ci 命令。

GitHub Actions 示例

如果您的应用程序使用 GitHub Actions 作为其 CI 平台,则以下指南将帮助您配置 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: Checkout
11 uses: actions/checkout@v3
12 
13 - name: Setup PHP
14 uses: shivammathur/setup-php@v2
15 with:
16 php-version: 8.2
17 tools: composer:v2
18 coverage: xdebug
19 
20 - name: Install Dependencies
21 run: composer install --no-interaction --prefer-dist --optimize-autoloader
22 
23 - name: Tests
24 run: ./vendor/bin/pest --ci

当然,您可以根据您的需求自定义以上脚本。例如,如果您的测试需要数据库,则可能需要设置数据库。

创建 tests.yml 文件后,提交并推送该文件,以便 GitHub Actions 可以运行您的测试。请记住,一旦您进行此提交,您的测试套件将在所有新的拉取请求和提交上执行。

GitLab CI/CD 管道示例

如果您的应用程序使用 GitLab CI/CD 管道 作为其 CI 平台,则以下指南将帮助您配置 Pest,以便在有人将提交推送到您的 GitLab 存储库时自动测试您的应用程序。

首先,将以下配置添加到您的 .gitlab-ci.yml 文件中。该文件应包含以下内容:

1stages:
2 - build
3 - test
4 
5build:vendors:
6 stage: build
7 only:
8 refs:
9 - merge_requests
10 - push
11 cache:
12 key:
13 files:
14 - composer.lock
15 policy: pull-push
16 image: composer:2
17 script:
18 - composer install --no-interaction --prefer-dist --optimize-autoloader
19 
20tests:
21 stage: test
22 only:
23 refs:
24 - merge_requests
25 - push
26 cache:
27 key:
28 files:
29 - composer.lock
30 policy: pull
31 image: php:8.2
32 script:
33 - ./vendor/bin/pest --ci

当然,您可以根据您的需求自定义以上脚本。例如,如果您的测试需要数据库,则可能需要设置数据库。

创建 .gitlab-ci.yml 文件后,提交并推送该文件,以便 Gitlab CI/CD 管道可以运行您的测试。请记住,一旦您进行此提交,您的测试套件将在所有新的合并请求和提交上执行。

Bitbucket Pipelines 示例

如果您的应用程序使用 Bitbucket CI/CD Pipelines 作为其 CI 平台,则以下指南将帮助您配置 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-autoloader
10 - ./vendor/bin/pest
11 caches:
12 - composer

当然,您可以根据您的需求自定义以上脚本。例如,如果您的测试需要数据库,则可能需要设置数据库。

创建 bitbucket-pipelines.yml 文件后,提交并推送该文件,以便 Bitbucket Pipelines 可以运行您的测试。请记住,一旦您进行此提交,您的测试套件将在所有新的拉取请求和提交上执行。

Chipper CI 示例

如果您的应用程序使用 Chipper CI 作为其 CI 平台,则以下指南将帮助您配置 Pest,以便在有人将提交推送到您的 Git 存储库时自动测试您的应用程序。

首先,将以下配置添加到您的 .chipperci.yml 文件中。该文件应包含以下内容:

1version: 1
2 
3environment:
4 php: 8.2
5 node: 16
6 
7# Optional services
8services:
9# - mysql: 8
10# - redis:
11 
12# Build all commits
13on:
14 push:
15 branches: .*
16 
17pipeline:
18 - name: Setup
19 cmd: |
20 cp -v .env.example .env
21 composer install --no-interaction --prefer-dist --optimize-autoloader
22 php artisan key:generate
23 
24 - name: Compile Assets
25 cmd: |
26 npm ci --no-audit
27 npm run build
28 
29 - name: Test
30 cmd: pest

除了处理 Composer 和 NPM 缓存之外,Chipper CI 还自动将 vendor/bin 添加到您的 PATH 中,因此在运行测试时只需运行 pest --ci 命令即可。

当然,您可以根据您的需求自定义以上脚本。例如,如果您的测试需要数据库,则可能需要定义一个 数据库服务

创建 .chipperci.yml 文件后,提交并推送该文件,以便 Chipper CI 可以运行您的测试。请记住,一旦您进行此提交,您的测试套件将在所有新的提交上执行。


为您的项目设置持续集成以确保代码库稳定性,做得很好!现在,让我们更深入地了解 Pest 的概念,探索其测试配置功能:配置 Pest →