Netezza CI/CD 工具

Posted

技术标签:

【中文标题】Netezza CI/CD 工具【英文标题】:Netezza CI/CD tool 【发布时间】:2016-02-04 14:57:35 【问题描述】:

是否有任何适用于 Netezza 的 CI/CD 工具可以管理版本并用于跨环境迁移代码?我们已经将 flywaydb 用于其他数据库并且对它很满意,但它不支持 Netezza。我已经用谷歌搜索了,但没有找到任何工具,所以任何回复都有助于我开始进一步分析

【问题讨论】:

我不知道为什么这被否决了。如果您投反对票,请告诉我原因,我没有其他方法可以知道为什么我认为完全有效的问题被投反对票 我也不太确定。它过于宽泛,但我认为不是。 【参考方案1】:

据我所知,没有什么特别适合 Netezza。也就是说,只要对您的目标环境有所了解,这当然是可能的。

我们使用 git 和 GitHub Enterprise (GHE)。 GHE 的原因并不是这个解决方案所特有的,而是因为我在医院工作。这就是我们所做的。

设置

在您的生产服务器上的/home/nz 处构建一个存储库。根据您使用 nzlogs、nzbads 和其他临时文件的方式,您可能需要对.gitignore 文件进行一些操作。我们有专门的日志目录来存放临时文件。 将该 repo 推送到 GHE。 如果您有开发服务器,请克隆该服务器上/home/nz 目录中的存储库。显然,在此之前您将失去所有开发工作,并且需要确保像 .bashrc 这样的东西没有版本控制。或者,您可以设置不同的分支和 repo,并尝试合并 prod 和 dev 版本。我们这样做了,但我建议您慢慢地用生产代码擦除您的开发框。 在 git 中为您的生产箱分配一个专用分支。对于本次讨论,我将他们称为proddev。如果你有它,对开发做同样的事情。这主要是心理问题,而不是技术问题,但至关重要,例如为 Heroku 或 Azure 设置遥控器。

寻找或开发一个可以监听GitHub webhooks 的小型网络服务器。我用一个简单的配置文件构建了一个Sinatra 服务器。什么都会做。将 Web 服务器部署到每个环境并对其进行调整,以便在更新到服务器的 proddev 分支时执行以下活动。

git reset --hard git clean -f git pull

在您的 GHE 存储库中设置 Webhook 以将推送事件发送到 Web 服务器。

当然,如果您想花哨的话,您可以随时让 Web 服务器在分支更新上做其他事情(可能是 update cron from a versioned file 或从所有新文件更新架构)。

流程

很简单,遵循GitHub Flow 工作流程。您几乎可以遵循您想要的任何过程,并了解您的 proddev 分支应该受到保护,并且只能作为管理任务删除或使用。创建一个功能分支,通过推送到dev 对其进行测试,然后对prod 分支发出拉取请求。

为什么是 GHE?主要是因为它保留了我们的代码可用的开放区域。您完全可以通过直接推送到 Netezza 的 git 存储库来做到这一点,但您的工作流程会受到影响——它不像将所有代码放在一个清晰的地方并围绕拉取请求进行讨论那样干净。

【讨论】:

以上是关于Netezza CI/CD 工具的主要内容,如果未能解决你的问题,请参考以下文章

编写一个工具以编程方式检查 Netezza(纯数据)是不是存在偏差并获取查询计划

Netezza 中数据库中所有表的行数

请提供用于处理 netezza 数据库的 DB 可视化工具的替代方法 [关闭]

Netezza 外键约束

从 Visual Studio 2008 调用 netezza 查询'执行 SQL 任务

SQL 将列值拆分为 Netezza 中的行