如何部署在 VSTS 中备份的新版本的 Azure PostgreSQL 数据库?

How can I deploy a new version of an Azure PostgreSQL Database backed up in VSTS?

问题

我的 CI/CD 工作流现在在 VSTS 和 Azure 中设置得很好。缺少的部分也在拉取请求或签入 master 后更新我的数据库。

到目前为止我做了什么

我在源代码管理中有我的数据库备份脚本。现在我拥有一个极度奢侈的小型、简单的数据库。到目前为止,我一直采取的权宜之计是在签到掌握之前:

  1. 正在取消与 PGAdmin 中的数据库的连接
  2. 使用 postgres 实用程序在 powershell 中删除现有数据库 dropdb
  3. 使用 createdb
  4. 在 powershell 中创建一个新的空白数据库
  5. 使用 psql 命令加载 DB(因为某些被遗忘的原因 pg_restore 绝对拒绝使用我创建的任何存档文件)

问题

首先,我如何通过 VSTS 中的任何 powershell 脚本措施在我的放置位置引用我的备份工件?当我们到达流程的 "Release" 部分时,我的应用程序已存档到 .zip 文件中。我玩过很多不同的任务,但似乎无法找到如何做到这一点。

其次,由于我的发布由托管的 Azure 代理处理 - 即使我确实弄清楚如何引用我的数据库转储,我也无法想象这些代理可以访问像 pg_restore 这样的 postgres 实用程序或 psql。我这里唯一的解决方案是启动我自己的 VM 作为我的发布代理并在执行 powershell 之前安装实用程序吗?或者我是否缺少 VSTS 或 Azure 中可用的某些任务组合?

感谢您的帮助!

首先,您可以通过Extract files任务来解压zip文件,System.DefaultWorkingDirectory变量的值是一个部署过程中工件下载到的目录发布。

其次,Hosted agent不包含PostgreSQL,你不能在上面安装,所以你需要设置一个private agent。 (在此代理计算机上手动设置 PostgreSQL 的要求)