FSWP DevOps 工程師 是做什麼的?
優先使用最輕量的工具來驗證主張。若在此無法執行的任何檢查,應回報為 NOT RUN,並附上使用者可執行的命令(由 fswp-qa-engineer 處理)。
本地環境
| 需求 | 工具 |
|---|---|
| 完整的 Docker WordPress、PHP 測試、掛載多個外掛/佈景主題 | @wordpress/env (wp-env) |
| 瀏覽器或 Node 中即時可拋棄的站台、煙霧測試、可分享的示範 | WordPress Playground,以 Blueprint 設定 |
| 使用者已執行的現有本地堆疊 | 使用他們的;不要額外添加 |
wp-env (需要 Docker 與 Node):在專案根目錄執行 npx @wordpress/env start。使用 .wp-env.json 設定:
{
"core": null,
"phpVersion": "8.2",
"plugins": [ "." ],
"themes": [],
"config": { "WP_DEBUG": true, "WP_DEBUG_LOG": true }
}
實用命令:npx @wordpress/env run cli wp plugin list、... stop、... clean、... destroy。用於驗證 fswp-qa-engineer 無法靜態檢查的啟用、停用、解除安裝與升級路徑。
Playground: Blueprint 是描述站台的 JSON:
{
"$schema": "https://playground.wordpress.net/blueprint-schema.json",
"landingPage": "/wp-admin/",
"preferredVersions": { "php": "8.3", "wp": "latest" },
"steps": [ { "step": "login" } ]
}
新增步驟,例如安裝外掛或佈景主題、寫入檔案、設定選項;在撰寫前請閱讀 Playground 文件中目前的步驟名稱。Playground 很快,但不是完整的伺服器:請勿將其作為 cron、郵件或大量檔案系統行為的證據。
步驟列表、資源類型及完整命令表:references/blueprints-and-cli.md。
命令列操作 (WP-CLI)
來自 shell 的站台操作:wp plugin install|activate|deactivate|delete、wp theme ...、wp option get|update、wp post ...、wp user ...、wp cron event list|run、wp db export|import、wp search-replace old new --dry-run、wp eval-file、wp scaffold plugin-tests <plugin>、wp i18n make-pot。規則:在任何破壞性命令前執行 wp db export;務必先以 --dry-run 執行 search-replace;除錯載入錯誤時使用 --skip-plugins --skip-themes;僅在可拋棄環境中以網頁使用者身分或加 --allow-root 執行。(WP-CLI 是 WordPress 基金會專案;此外掛是以描述性方式引用。)
程式碼標準 (PHPCS)
使用 Composer 安裝:wp-coding-standards/wpcs、dealerdirect/phpcodesniffer-composer-installer、phpcompatibility/phpcompatibility-wp。最小的 .phpcs.xml.dist:
<?xml version="1.0"?>
<ruleset name="Project">
<file>.</file>
<exclude-pattern>vendor/*</exclude-pattern>
<exclude-pattern>node_modules/*</exclude-pattern>
<rule ref="WordPress-Extra"/>
<rule ref="WordPress.WP.I18n"><properties><property name="text_domain" value="my-text-domain"/></properties></rule>
<rule ref="WordPress.NamingConventions.PrefixAllGlobals"><properties><property name="prefixes" type="array"><element value="myprefix"/></properties></property></rule>
<config name="testVersion" value="7.4-"/>
<rule ref="PHPCompatibilityWP"/>
</ruleset>
phpcs 報告;phpcbf 修正可安全修正的項目(檢視 diff)。fswp-qa-engineer/scripts/setup_toolchain.sh 可在缺少 Composer 的環境中安裝 PHPCS 與 PHPStan。
靜態分析 (PHPStan)
phpstan.neon 以 php-stubs/wordpress-stubs 作為引導(或 szepeviktor/phpstan-wordpress 擴充套件),等級 5 作為門檻,新程式碼使用更高等級。對 WordPress 或此外掛在執行時期定義的常數進行樁。對舊有程式碼可接受基線檔案,新程式碼則不接受。
測試
- PHP 單元與整合測試:
wp-phpunit/wp-phpunit搭配yoast/phpunit-polyfills,由wp scaffold plugin-tests產生;在 wp-env 中執行。使用WP_UnitTestCase進行需要 WordPress 的測試。 - JavaScript:
@wordpress/scripts(wp-scripts build、start、lint-js、lint-style、test-unit-js、test-e2e)。 - 端到端: 使用 Playwright 搭配 WordPress e2e 輔助工具,針對 wp-env 執行,用於重要的流程(設定儲存、區塊插入、結帳路徑)。
CI 大綱 (保留給 GitHub 工作)
管線應遵循的順序:安裝、PHPCS、PHPStan、PHP 測試(最低與最高 PHP 版本)、JS lint/build/test、打包、上傳成品。在 GitHub 整合啟用之前,請勿建立工作流程檔案 (fswp-developer/references/github-foundation.md)。