自定义流程的版本控制

Openflow 支持注册表客户端,包括 GitHub 注册表客户端,它允许您使用 Git 存储库来存储自定义流程定义并对其进行版本控制。这实现了标准的软件开发生命周期 (SDLC) 实践,例如分支、拉取请求、代码审查和环境提升。

常见的工作流程是:

  • 维护一个代表生产流程定义的 main 分支。

  • 为新的开发创建功能分支。

  • 在 Openflow 画布上进行开发和提交更改。

  • 开启拉取请求,使用 Flow Diff 进行审查,然后合并。

先决条件

  • 一个用于存储流程定义的 GitHub 存储库。

  • 一个具有 repository 访问权限的 GitHub 个人访问令牌。

  • 一个有权访问 Openflow 画布的 Openflow 运行时。

  • 在运行时集成对象上具有适当的 Snowflake 角色权限。

第 1 步:创建 GitHub 注册表客户端

  1. 在 GitHub 中创建一个存储库来存储您的流程定义。

  2. 在 GitHub 中生成一个具有存储库访问权限的个人访问令牌 (PAT)。

  3. 在 Openflow 画布上,导航到 Controller Settings 并创建一个新的注册表客户端。

  4. 选择 GitHub Registry Client 作为类型。

  5. 使用以下信息配置注册表客户端:

    • 您的 GitHub 存储库 URL。

    • GitHub 存储库所有者。

    • 用于身份验证的个人访问令牌。

第 2 步:创建新流程并对其进行版本控制

  1. 在 Openflow 画布上,为您的流程创建一个新的流程组。

  2. 构建您的流程:添加处理器、配置连接并设置您的数据管道。

  3. 右键点击流程组并选择 Start Version Control

  4. 选择您在 步骤 1 中配置的 GitHub 注册表客户端。

  5. 提供流程名称和初始提交消息。

保存后,流程定义将提交到您的 GitHub 存储库。您可以通过检查 GitHub 中的存储库来进行验证。

第 3 步:使用分支管理变更

创建开发分支

在您的 GitHub 存储库中,创建一个新分支(例如 dev 或类似 feature/add-new-table 的功能分支)。

在分支上导入和开发

  1. 在 Openflow 画布上,通过将 Import from Registry 图标从工具栏拖拽到画布上,将流程从 GitHub 注册表导入到新的流程组中。

  2. 导入时,选择要基于其进行工作的目标分支(例如 dev)。

  3. 在流程组内对流程进行变更。

  4. 在 Openflow 中提交变更。这会将更新后的流程定义推送到 GitHub 中的所选分支。

通过拉取请求进行审查和合并

  1. 在 GitHub 中,从您的开发分支向 main 开启一个拉取请求。

  2. 查看更改内容。使用 Snowflake Flow Diff GitHub Action(请参阅 步骤 4)获取人类可读的差异比较。

  3. 在拉取请求获得批准后将其合并。

  4. 回到 Openflow 画布,更新 main 流程组以从 main 分支拉取最新版本。

第 4 步:设置 Snowflake Flow Diff(GitHub 操作)

Snowflake Flow Diff 是一个 GitHub 操作,它通过直接在拉取请求对话中呈现管道更改的可视化差异,使流程更改变得人类可读。

设置工作流程文件

  1. 在您的 GitHub 存储库中,创建 .github/workflows/flowdiff.yml 文件。

  2. 从 Snowflake Flow Diff 存储库 (https://github.com/Snowflake-Labs/snowflake-flow-diff) 复制工作流配置(请参阅 README 中的“使用情况”部分)。

  3. 提交并推送工作流程文件。

查看流程变更

  1. 当拉取请求被开启时,Flow Diff 操作会自动运行。

  2. 导航到拉取请求上的 Conversations 选项卡,等待 Flow Diff 分析出现。

  3. 该分析会显示流程更改的可视化、人类可读的比较,而不是原始的 JSON 差异。

跨环境管理参数

Openflow 使用参数来管理不同运行时中特定于环境的值(例如连接字符串、凭据、表名)。

请记住以下概念:

  • 参数被分组到参数上下文中,参数上下文与流程组是一对一的映射关系。

  • 参数上下文继承允许您在父上下文中定义共享参数,并在子上下文中覆盖特定的值。这对于在开发、暂存和生产环境之间提升流程非常有用。

  • 参数上下文可以与密钥管理器集成,以安全地处理敏感凭据,而无需将其存储在流程定义中。