【问题标题】:Azure Data Factory Deployment changes not reflecting after integrate with git repositoryAzure 数据工厂部署更改在与 git 存储库集成后未反映
【发布时间】:2021-05-01 06:51:39
【问题描述】:

我有两个 azure 数据工厂实例。一个是 PROD,另一个是 DEV。

我已将我的 DEV ADF 集成到 git 存储库,并将在此 adf 实例中进行所有开发。 代码准备好进行生产部署后,将按照 CI/CD 步骤将 DEV ADF 部署到 PROD。

此功能运行良好。

最近我通过将 ADLS Gen1 升级到 Gen2 对我的 PROD ADF 实例进行了一些更改,并且对管道也进行了一些更改。这些更改已在 ADF 的 PROD 实例中直接更新。

现在我必须在 DEV 实例中部署这些更改,以使两个实例同步,然后再进行进一步的开发。

为了实现这一点,我遵循了以下步骤。

  1. 删除 DEV ADF 实例的 git 集成。
  2. 将 PROD ADF 集成到新的 git 存储库并进行发布
  3. 构建管道和发布管道已执行并将 PROD 部署到 DEV 中
  4. 我可以看到 PROD 和 DEV 中的更改是同步的。
  5. 现在我想重新集成 DEV ADF 以便进一步开发

当我将 DEV ADF 重新集成到现有开发实例存储库的协作分支(主)中时,如下所示,我可以看到管道数和链接服务数的差异。

从 PROD 中删除的管道和链接服务仍然存在于 DEV ADF 主分支中。 当我删除 DEV ADF 的 git 集成时,现在 DEV 和 PROD ADF 是同步的。

我尝试将 DEV ADF 集成到同一开发存储库的新分支中,如下所示, 我仍然可以看到从生产中删除的已删除管道和链接服务在 dev adf 中也可用。

似乎已更改的管道和链接服务正在更新,但删除的项目并未从开发主存储库中删除。

有没有办法在git重新集成时清理master分支并只导入现有资源?

我能找到的唯一可能的方法是创建新的存储库而不是重新集成到现有的存储库,但似乎很难继续更改存储库,并且已经创建的分支和现有存储库中的更改将丢失。

当我将存储库与 ADF 重新集成时,有什么办法,它应该只将现有资源放入存储库的 master 分支,而不是与 master 中的现有代码合并?

【问题讨论】:

  • 嗨@Antony,我注意到@JeffRamos 在他的回答中分享了一些很好的解释和建议。请检查一下。如果他的回答对您有帮助,您可以将其标记为该主题的解决方案。这也可以帮助更多正在寻找类似问题的解决方案的人。

标签: github azure-devops azure-data-factory azure-data-factory-2


【解决方案1】:

这些事情发生了。 ADF Git 集成有点不同,因此掌握它们有一个学习曲线。我去过那儿。从不畏惧。有解决办法。

这里有两件事要解决:

  1. 修复您的流程,以免再次发生这种情况。
  2. 解决当前问题。

您出错的第一个地方是直接在 PRD 中进行更改。您应该在 DEV 中进行这些更改并按照标准流程进行推广。

接下来你出错的地方是从 Git 中删除 DEV,然后将 PRD 添加到 Git。 PRD 不应该在任何时候连接到 Git,而且你不应该在 Git 集成上玩弄杂耍。这很危险,可能会导致工作丢失。

确保您不会重复这些错误,并且您将防止此类事情变得复杂。

为了解决当前的问题,值得指出的是,通过 ADF Git 集成,您不必对所有内容都使用 ADF 编辑器。您完全可以使用标准 Git 工具操作克隆到本地文件系统的 Git 存储库,这将是挖掘自己的关键。 (这也是您首先应该做的,将 PRD 更改改回 DEV。)

基本上,如果您的 PRD master 包含您想要的对象,那么首先将该分支克隆到您的本地文件系统。在驱动器的其他位置,将 DEV 存储库的功能分支克隆到文件系统。为了使这些同步,您只需复制 PRD 主内容并将它们粘贴到 DEV 功能分支目录并推送更改。现在,这个 DEV 功能分支匹配 PRD 主控。从此 DEV 功能分支向 DEV master 的合并和拉取请求将使 DEV master 与 PRD master 同步(假设合并正确完成)。

即使不必执行此类操作,将 ADF Git 存储库克隆到本地也会很有帮助,这样您就可以对事物进行特定控制。有时 ADF 会孤立对象,您可以通过文件系统和 Git 工具清理它们,而无需像这样与 ADF 编辑器搏斗。

【讨论】:

  • The next places you went wrong were removing DEV from Git and then adding PRD to Git. PRD should not be connected to Git at any point, and you shouldn't be juggling Git integrations. It's dangerous and can lead to lost work. 我已将 PROD ADF 与一个新的 git 存储库连接,该存储库与我集成 DEV 的存储库不同。我这样做是为了更新 adf_publish 分支,以便我可以使用 devops 管道将 PROD 部署到 DEV ADF 中。
  • Basically, if your PRD master contains the objects as you want them, then first clone that branch to your local file system. Elsewhere on your drive, clone a feature branch of your DEV repo to the file system. In order to bring these in sync, you just copy the PRD master contents and paste them into the DEV feature branch directory and push changes. 如果我将所有更改从 PROD ADF 复制粘贴到本地 DEV 存储库中,则 DEV 和 PROD 中的链接服务连接参数不同。合并更改后,链接服务连接将失败。
  • 您不需要更新 adf_publish 分支。您需要的所有代码都在协作分支中。您只需从新的协作分支发布即可恢复发布分支。而且,如果您的连接不同,那么只需在推送之前在代码中编辑它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-08
  • 2021-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-15
  • 2022-01-04
相关资源
最近更新 更多