Wordpress CI/CD管道

Wordpress CI/CD管道,wordpress,continuous-integration,continuous-deployment,Wordpress,Continuous Integration,Continuous Deployment,我正在基于Docker和一些自定义部署脚本构建Wordpress CI/CD管道。流程非常标准: -开发机器将完整的网站存档和数据库转储推送到外部存储库 -在开发人员机器和生产服务器上使用了类似的Wordpress docker基础设施(web、db、app) -启动部署时,生产机器将代码和数据库下载到本地存储库,并从中旋转出一个新的Docker 这一切都很好,但我面临的问题是Wordpress默认在编辑页面中包含完整的URL。所以,如果开发人员向页面添加图像,数据库页面将有一个代码 现在有两

我正在基于Docker和一些自定义部署脚本构建Wordpress CI/CD管道。流程非常标准:

-开发机器将完整的网站存档和数据库转储推送到外部存储库
-在开发人员机器和生产服务器上使用了类似的Wordpress docker基础设施(web、db、app)
-启动部署时,生产机器将代码和数据库下载到本地存储库,并从中旋转出一个新的Docker

这一切都很好,但我面临的问题是Wordpress默认在编辑页面中包含完整的URL。所以,如果开发人员向页面添加图像,数据库页面将有一个代码

现在有两种解决方案。部署脚本在数据库转储文件上进行搜索和替换,或者开发人员机器可以调整其主机文件,使Wordpress认为生产域正在访问它


这两种解决方案听起来都有点“肮脏”。所以我很好奇其他人会如何处理这样一个问题,你会如何为Wordpress设置一个“优雅”的CI/CD。

我真的认为WP没有优雅的CI/CD方法。在WP中更改URI的“标准”方法是执行搜索/替换,但使用工具,而不是SQL导出。这是因为很多数据被序列化为PHP数组/对象,当字符串被替换时(如果字符串的长度不相同),它们会无声地中断

要部署到不同的环境,我要做的是运行带有选项的工具

  • --所有表格
    :请确认
  • --precise
    :处理PHP序列化数组/对象
  • --skip columns=guid
    :跳过某些表中的guid列,因为其中一些表将域名用作guid的一部分
您可能需要多次运行此工具,因为wordpress的不同部分以不同的方式存储域(有时使用或不使用连接方案)

  • ->
  • ->
  • example.local->example.com

可能值得一提的是,我也看到了代码有一个部署管道,但是db/内容更改是使用一个复制插件完成的,该插件可以推送内容,同时更新链接,例如
复制器
多功能WP迁移
。我从来没有使用过这个,所以我不能对此发表太多评论。

谢谢Augusto,我将研究WP CLI,从未使用过它。