持續整合

到目前為止,我們只討論在您本機的命令列上執行測試。但是,您也可以在您選擇的 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 檔案後,提交並推送 tests.yml 檔案,讓 GitHub Actions 可以執行您的測試。請注意,一旦您提交此資料,您的測試套件將在所有新的 pull request 和提交上執行。

與 GitLab CI/CD Pipelines 的範例

如果您的應用程式使用GitLab CI/CD Pipelines作為其 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.yml 檔案,讓 Gitlab CI/CD Pipelines 可以執行您的測試。請注意,一旦您提交此資料,您的測試套件將在所有新的合併請求和提交上執行。

與 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.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 加入你的路徑;因此,只要執行 pest --ci 指令,就能在執行測試時正常運作。

自然地,你可以根據你的需求自訂上述指令碼。例如,如果你在測試中需要,你可能需要定義 資料庫服務

建立你的 .chipperci.yml 檔案後,認可並推出 .chipperci.yml 檔案,讓 Chipper CI 能執行你的測試。請記住,在你提出此認可時,你的測試套件將執行於所有新的認可。


為你的專案設定持續整合並確保程式碼庫穩定性,做得好!現在,讓我們更深入探討 Pest 的概念,並探索其測試組態功能: 組態 Pest →