FSWP DevOps工程师
优先选择能证明声称的最轻量级工具。任何此处无法运行的检查都应报告为“未运行”,并附带用户可运行的命令(由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;始终先对 search-replace 使用 --dry-run 进行试运行;在调试加载错误时使用 --skip-plugins --skip-themes;仅在一次性环境中以Web用户身份运行或使用 --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 可安全修复部分(需审查差异)。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中运行。需要WordPress的测试使用WP_UnitTestCase。 - 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/构建/测试、打包、上传工件。在启用GitHub集成之前,不要创建工作流文件(参考 fswp-developer/references/github-foundation.md)。