WordPress CI / CD管道

时间:2019-06-12 09:26:42

标签: wordpress continuous-integration continuous-deployment

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

-开发机器将完整的网站存档和数据库转储推送到外部存储库
-在开发机和生产服务器上使用了类似的Wordpress docker基础架构(Web,数据库,应用程序)
-启动部署后,生产机器将代码和数据库下载到本地存储库,并从中提取新的Docker

一切正常,但是我面临的问题是Wordpress默认情况下在编辑页面中包含完整URL。因此,如果开发人员将图像添加到页面,则数据库页面将具有代码

<img src="sampledevmachine.local/image1.jpg">

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

这两种解决方案听起来都有些“肮脏”。因此,我很好奇其他人将如何解决这一问题,以及如何为Wordpress设置“优雅”的CI / CD。

1 个答案:

答案 0 :(得分:1)

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

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

wp search-replace工具
  • --all-tables:可以肯定。
  • --precise:处理PHP序列化的数组/对象
  • --skip-columns=guid:跳过某些表中的guid列,因为其中一些表将域名用作GUID的一部分。

您可能需要多次运行此工具,因为WordPress的不同部分以不同的方式存储域(有时使用或不使用连接方案)

也许值得一提的是,我也已经看到该代码具有部署管道,但是使用复制插件可以完成数据库/内容更改,该插件可以推送内容并同时更新链接,例如{ {1}}或Duplicator。我从来没有使用过它,所以我对此无可奉告。