Git集成(公测中)

更新时间:
复制 MD 格式

Flink控制台支持与远程Git仓库(如GitHub、GitLab或Gitee)集成。您可以通过实时计算开发控制台推送作业草稿和文件夹到远端Git仓库,或从远端拉取代码进行作业开发与部署。该功能适用于业务上云、协同开发、代码管理、质量保障、风险控制、灾备及合规管理等多场景。本文将详细介绍如何在实时计算开发控制台上集成Git,并完成代码的拉取与推送操作。

使用场景

类别

使用场景

操作建议

迁移上云

将本地Flink SQL代码通过Git直接推送到云端集群(如阿里云实时计算Flink版),减少手动导出及导入配置的繁琐操作。

  • 在实时计算开发控制台进行一次拉取后,后续代码开发可直接在实时计算控制台上完成。

  • 上云后仅执行拉取动作,Git中的文件不会被修改。

协同开发与代码管理

  • 团队协作与共享:团队成员通过Git仓库共享作业草稿和代码,确保开发基础一致,利用Git记录修改历史。

  • 分支管理与功能迭代:基于Git分支创建独立开发分支(如feature/xxx),支持并行开发与Bug修复,测试通过后合并至主分支。

  • 所有SQL修改需通过Git提交,实时计算开发控制台仅用于拉取和验证。

  • 使用Git分支管理功能迭代,确保主分支的稳定性。

质量保障与风险控制

  • 代码审查与验证:合并前通过Git PR机制发起代码审查,审查人员可直接在实时计算开发控制台拉取分支测试验证功能正确性。

  • 历史追溯与问题定位:结合Git提交记录追踪Flink作业变更,快速定位问题根源。

  • 所有SQL修改需通过Git提交,实时计算开发控制台仅用于拉取和验证。

  • 定期检查Git提交记录,确保变更可追溯。

灾备与合规管理

  • 灾难恢复与备份:Git作为远程仓库提供分布式备份,避免实时计算开发控制台文件误删除导致业务中断。

  • 审计合规:通过Git日志记录谁在何时修改了作业逻辑(如敏感数据处理规则变更),满足合规审计要求。

  • 所有SQL修改需定期推送至Git,异常时可通过仓库快速恢复。

  • 利用Git日志记录所有关键操作,确保符合审计要求。

前提条件

  • 已创建Flink工作空间,详情请参见开通实时计算Flink版。

  • 已创建Git仓库(GitHub、GitLab、Gitee或云效以及其他Git协议代码仓库等)或拥有远程Git仓库的访问权限。

  • 如果Git仓库启用了IP白名单,请确保已将Flink工作空间的网络地址添加到Git仓库的允许列表中。

  • 在进行代码仓库绑定前,请确保打开NAT网关实现实时计算Flink工作空间VPC网络和公网的连通。

注意事项

  • 作业类型:目前仅SQL作业支持与Git对接。

  • 绑定限制:

    • 仅项目空间管理员(Owner)或拥有同等权限的成员,可以配置和编辑Flink项目空间中绑定的Git仓库信息。

    • 每个项目空间仅支持绑定一个代码仓库和一个分支。若需要管理多个Git仓库或同一个Git仓库的多个分支,可通过创建不同项目空间来实现多分支的管理。项目空间创建方法详情,请参见管理项目空间。

  • 文件夹层级:仅支持拉取七层以内的SQL文件夹。如果Git中SQL文件所在层级超过七层,则无法被拉取到实时计算开发控制台中。

  • 请勿在Git系统与实时计算开发控制台中并行编辑同一个文件。若发生双方同时修改相同文件的情况,在实时计算开发控制台执行推送或拉取时,将触发冲突检查,此时需要您手动解决冲突。Flink平台冲突处理机制如下。

    操作类型

    冲突处理机制

    拉取操作

    系统会自动将无冲突的更新应用到SQL草稿中,同时提示具体冲突文件。您需手动解决冲突后方可继续操作。

    推送操作

    1. 单击推送更改,系统会提示您远程仓库存在更新,请拉取更新后再试。

    2. 在拉取过程中,若发现冲突,需要您手动解决冲突后完成拉取。

    3. 冲突解决后,再次推送。

    重要

    在手动解决冲突前,由于Flink平台不支持整体回滚,请备份重要数据(如将example.sql文件复制到本地),并评估操作影响,谨慎处理以避免误操作引发不可逆后果。

  • 当在Git上仅对JSON文件(包含SQL草稿的配置信息)进行操作时,实时计算开发控制台的拉取行为将遵循以下规则:

    • 新增或删除JSON文件:实时计算开发控制台不会同步增加或删除对应的SQL草稿。

    • 修改JSON文件:实时计算开发控制台会同步更新同名SQL草稿的配置信息。

步骤一:项目空间配置Git仓库

  1. (可选)网络连通性检测。

    对于GitHub或GitLab仓库,您需要打开NAT网关,确保Git仓库和Flink工作空间之间的网络连通性,否则可能会因网络问题导致无法成功绑定Flink项目空间。网络连接详情请参见网络连接选型和如何进行网络探测?

  2. 进入实时计算开发控制台。

    1. 登录实时计算管理控制台。

    2. 单击目标工作空间操作列下的控制台。

  3. 项目空间配置Git仓库。

    1. 单击页面右上角的用户头像后,单击用户信息,进入项目空间列表页面。

    2. 单击目标项目空间操作列下的Git仓库配置。

    3. 填写Git配置信息。

      配置项

      说明

      仓库类型

      支持GitHub、GitLab和Gitee。

      仓库URL

      完整的仓库地址,以HTTP或HTTPS开头且以.git结尾,且不得超过64个字符。

      用户名

      Git平台的账号用户名,需要对目标仓库有权限。

      Personal Access Token

      访问令牌,用于身份验证。

      获得Github Token信息详情请参见GiHub管理个人访问令牌、GitLab管理个人访问令牌和私人令牌。

      分支

      代码的独立开发线,用于隔离不同功能或版本的开发。

      一个项目空间仅支持绑定一个分支。

    4. 单击确定。

      绑定后,如需切换仓库或分支,需要在项目空间列表里先进行解绑后进行配置。

      绑定成功后,Git 仓库配置弹窗中会展示已绑定的仓库 URL、用户名、分支以及 Personal Access Token 存储状态,单击解除绑定即可解除当前仓库绑定。

步骤二:进行拉取或推送操作

推送更改

将实时计算开发控制台上的SQL代码及配置信息提交上传到远程Git仓库,在提交前您可以查看差异。

  1. 在数据开发 > ETL页面,单击推送更改按钮。

  2. 填写提交信息后,单击提交并推送。

    变更文件的右侧会展示本次变更是新增(A)、修改(M)或删除(D),您可以单击对应的字母查看变更。

    Git - 推送更改弹窗中包含仓库 URL和分支字段,可在提交前确认推送目标信息。

  3. 在Git上查看推送结果文件内容。

    推送过来的Git上的文件说明详情如下。

    变更类型

    说明

    Git文件变更图示

    新增

    一个SQL草稿推送到Git后会有2个同名不同类型文件:

    • 文件名.sql:sql代码。

    • 文件名.json:SQL草稿的配置信息。包括作业名称、作业草稿ID、流批属性和引擎版本号。

    test.json 文件示例:

    {
      "name": "xxx_test",
      "deploymentDraftId": "3a32731xxxxxxxxxxxxxxxx64fa8",
      "executionMode": "STREAMING",
      "engineVersion": "vvr-8.0.10-flink-1.17"
    }

    test.sql 文件示例:

    CREATE TEMPORARY TABLE xxx_test_source(
        a BIGINT,
        b INT
    ) WITH (
        'connector'='datagen'
    );
    
    CREATE TEMPORARY TABLE xxx_test_sink(
        a BIGINT,
        b INT
    ) WITH(
        'connector'='blackhole'
    );
    
    INSERT INTO xxx_test_sink
    SELECT *
    FROM niuatest_source;

    更新

    仅更新对应的SQL代码或SQL草稿配置信息。

    • 修改SQL

      - CREATE TEMPORARY TABLE vvptest_source(
      + CREATE TEMPORARY TABLE test_source(
          a BIGINT,
          b INT
      ) WITH (
          'connector'='datagen'
      );
      
      - CREATE TEMPORARY TABLE vvptest_sink(
      + CREATE TEMPORARY TABLE test_sink(
          a BIGINT,
          b INT
      ) WITH(
          'connector'='blackhole'
      );
      
      - INSERT INTO vvptest_sink
      + INSERT INTO test_sink
        SELECT *
      - FROM vvptest_source;
      + FROM test_source;
    • 修改引擎版本

       "name": "vxxxest",
       "deploymentDraftId": "b00a3xxxd3aac",
       "executionMode": "STREAMING",
      - "engineVersion": "vvr-8.0.10-flink-1.17"
      + "engineVersion": "vvr-8.0.6-flink-1.17"
      }

拉取更改

将Git仓库上的SQL信息拉取到实时计算开发控制台。

  1. 在数据开发 > ETL页面,单击同步更改按钮。

    同步更改按钮右侧提会显示最后一次同步的时间。如果不是最新时间,您可以单击同步更改按钮。

    如果Git有更新,会在拉取按钮旁边提示远程有更新。

  2. 在数据开发 > ETL页面,单击拉取更改按钮。

    • 如果没有冲突文件,您可以直接按照步骤4查看拉取过来的文件。

    • 如果有冲突文件,您需要按照步骤3的操作指引先解决冲突。

      在底部状态栏中,当 Git 分支显示为 main 且检测到远端有新提交时,会出现蓝色链接远程有更新。单击该链接(工具提示为Git - 拉取更改)即可发起拉取操作。

  3. 【可选】如果系统提示存在冲突,请手动解决冲突,否则可跳过此步骤。

    当实时计算开发控制台与远端Git同时修改了同一文件时,可能会发生内容冲突。Flink系统会将没有冲突的文件更新到实时计算开发控制台,并提示您冲突文件的具体信息。此时,您需要单击解决按钮,根据实际情况完成冲突处理。解决完成后,请单击已解决,然后单击继续以完成操作。

    重要

    在解决冲突前,由于Flink平台不支持整体回滚,请备份重要数据(如将example.sql文件复制到本地),并评估操作影响,谨慎处理以避免误操作引发不可逆后果。

    单击解决后,进入冲突处理页面。您可以根据实际业务需求,逐个选择接受相应的修改内容。

    <<<<<<< Upstream, based on branch 'master' of https://gitee.com/xxx/test.git (Current
    CREATE TEMPORARY TABLE vvpnntest_source(
    =======
    CREATE TEMPORARY TABLE nntest_source(
    >>>>>>> c658aa9 vvp git pull (Incoming Change)
        a BIGINT,
        b INT
    ) WITH (
        'connector'='datagen'
    );
    
    <<<<<<< Upstream, based on branch 'master' of https://gitee.com/xxx/test.git (Current
    CREATE TEMPORARY TABLE vvpnntest_sink(
    =======
    CREATE TEMPORARY TABLE nntest_sink(
    >>>>>>> c658aa9 vvp git pull (Incoming Change)
        a BIGINT,
        b INT
    ) WITH(
        'connector'='blackhole'
    );
    
    <<<<<<< Upstream, based on branch 'master' of https://gitee.com/xxx/test.git (Current
    INSERT INTO vvpntest_sink
    =======
    INSERT INTO nntest_sink
    >>>>>>> c658aa9 vvp git pull (Incoming Change)
    SELECT *
    <<<<<<< Upstream, based on branch 'master' of https://gitee.com/xxx/test.git (Current
    FROM vvpnntest_source;
    =======

    按钮

    含义

    Accept Current Change

    接受当前更改。

    Accept Incoming Change

    接受传入更改。

    Accept Both Change

    接受双方变更。

  4. 查看与修改拉取的SQL文件。

    当页面上方提示成功拉取远程仓库更新后,ETL草稿页面会自动刷新,展示拉取到的SQL草稿。

    拉取完成后,SQL草稿页面会提示当前作业已被Git锁定。您需要点击解锁,方可对作业进行修改或删除。

    CREATE TEMPORARY TABLE test_source(
        a BIGINT,
        b INT
    ) WITH (
        'connector'='datagen'
    );

相关文档