云效CodeUp代码同步配置

更新时间:
复制为 MD 格式

DataWorks与云效CodeUp的集成,旨在将DataWorks项目内的节点、资源和函数进行代码化(Code)管理。通过这种方式,您可以利用云效CodeUp强大的分支管理、合并请求(Merge Request)等能力,将数据开发全面融入企业级的DevOps/DataOps体系,实现DataWorks与云效的双向同步及跨空间代码管理能力。

准备工作

  • 已开通DataWorks企业版的工作空间。

  • 拥有一个云效CodeUp代码库,并具备该代码库的管理权限。

  • 拥有一个具备公网访问能力DataWorks资源组,并绑定至目标空间。

  • 在与DataWorks工作空间相同的地域(Region)下,创建一个OSS Bucket。并在DataWorks工作空间的数据源管理中,创建一个指向该BucketOSS数据源

    说明

    仅支持使用访问密钥(Access Key)模式的数据源。并确保所使用的访问凭证具备以下权限:oss:GetObjectoss:ListObjectsoss:PutObjectoss:DeleteObject

配置指南

第一步:创建专用的RAM用户

重要

此操作需拥有阿里云主账号或具备RAM访问控制管理权限的账号。

为确保安全与权限隔离,创建一个专用的RAM用户,作为DataWorks与云效CodeUp之间进行自动化代码交互的专属服务账号。

  1. 使用主账号登录 RAM 访问控制

  2. 导航至身份管理 > 用户,点击创建用户

  3. 填写用户账号信息:

    • 登录名称:建议设置为具有明确标识的名称,例如 dataworks_pusher

    • 安全邮箱:为其配置一个有效的邮箱地址,此邮箱将用于云效的身份识别。

    • 访问方式:勾选使用控制台访问,并设置登录密码(此密码用于后续生成SSH密钥)。

第二步:配置云效CodeUp代码库

接下来,我们需要在云效CodeUp中授权此RAM用户,并设置保护性规则,确保代码提交的规范性。

  1. RAM用户添加为代码库成员:

    • 使用主账号登录云效CodeUp平台,进入目标代码库。

    • 在左侧导航栏选择成员。点击 添加成员 > 邀请 > 添加RAM用户,如果列表中未出现dataworks_pusher,可点击手动同步刷新。将dataworks_pusher添加进入组织。

      说明

      如邀请成员时显示:你还未授权,前往授权并确认即可。

    • 选中dataworks_pusher用户,为其分配开发者角色,将成员添加至代码库。

  2. 配置分支保护规则:

    目的:仅允许 DataWorks 系统自动推送,人为干预需通过 Merge Request 审核。
    1. 进入代码库的设置 > 分支设置 > 保护分支规则页面。

    2. 点击新建规则,进行如下配置:

      1. 分支名称匹配:填写 dataworks_*。这将保护所有由DataWorks自动创建和管理的分支。

      2. 允许推送代码:

        1. 允许推送的角色:设置为

        2. 允许推送的成员:仅选择 dataworks_pusher

      3. 允许合并代码:

        允许合并的角色/成员:均设置为

    3. 保存规则。

  3. 生成并获取SSH密钥:

    1. 登出主账号,使用刚刚创建的RAM用户(dataworks_pusher)登录云效平台。

    2. 点击右上角个人头像,进入个人设置 > SSH公钥

    3. 生成 SSH 密钥对(本地或跳板机执行)。

      # 将 "your_user_email@example.com" 替换为上一步中配置的账户邮箱
      ssh-keygen -t rsa -C "your_user_email@example.com"
      
      # 在提示输入口令时,直接按回车键跳过
       Enter passphrase (empty for no passphrase): [回车]
       Enter same passphrase again: [回车]
       
      # 查看公钥内容
      cat ~/.ssh/id_rsa.pub
    4. 添加SSH公钥:

      • 将上述公钥内容粘贴到云效的公钥输入框。

      • 作用范围勾选:全部。

      • 不设过期时间 。

注意:DataWorks会自动在您的代码库中创建三个命名格式固定的分支,您无需手动创建。

第三步:验证网络连通性(可选但推荐)

在配置完成后,建议您在DataWorks中创建一个临时的SSH节点,以验证DataWorks的调度资源组能否正常访问云效服务。

  1. DataWorks中创建一个Shell节点,为该节点配已准备的开通公网访问权限的资源组。

  2. 测试网络连通性:运行telnet命令。如果日志显示“Connected to ...”,表示网络连通,网络连通后,即可停止运行。

    # 替换为您的Git服务器域名或IP,如云效地址:codeup.aliyun.com
    telnet codeup.aliyun.com 22

    以云效为例,当日志出现以下内容,则说明网络已连通,可停止运行任务;否则,需要检查网络配置是否成功。

    image

  3. 测试SSH密钥有效性:运行以下脚本。如果日志出现“Welcome to ...”等成功认证信息,表示私钥配置正确。

    #  SSH私钥是否正确,期望输出“Welcome to xxx,……”
    #  以下脚本将在一个临时的运行环境中,将您提供的私钥内容写入标准SSH密钥文件(~/.ssh/id_rsa),并以此测试与Git服务器的连接,验证私钥的有效性。
    #  将私钥内容编码为Base64
    id_rsa_base64=$(cat <<'EOF' | base64 -w 0
    #  [此处粘贴私钥(id_rsa文件)完整内容]
    -----BEGIN OPENSSH PRIVATE KEY-----
    ...
    -----END OPENSSH PRIVATE KEY-----
    EOF
    )
    # 在运行环境中重建SSH密钥文件
    id_rsa=$(base64 -d <<< "$id_rsa_base64")
    mkdir ~/.ssh
    echo "$id_rsa" > ~/.ssh/id_rsa
    chmod 600 ~/.ssh/id_rsa
    ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub
    chmod 644 ~/.ssh/id_rsa.pub
    
    # 测试SSH连接(将your_git_server_domain替换为您的Git SSH地址,如codeup.aliyun.com)
    ssh -T git@codeup.aliyun.com

    单击运行,以云效为例,若运行日志中出现以下内容,说明该账号的私钥正确。

    image

  4. 运行该节点,查看日志输出。如果两项测试均成功,则代表配置无误,网络畅通。

第四步:配置DataWorks工作空间

重要

仅支持租户管理员及工作空间管理员设置当前空间的代码同步配置,其他角色无权限新增或者变更该内容。

获取私钥后,返回DataWorks完成最后的绑定。

  1. DataWorks中,进入 数据开发 > 代码管理

  2. 配置代码同步:

    名称

    描述

    SSH地址

    目标Git代码库的SSH地址。

    私钥

    粘贴步骤二中生成的私钥(id_rsa文件)的完整内容。

    重要

    私钥内容需要包括-----BEGIN OPENSSH PRIVATE KEY----------END OPENSSH PRIVATE KEY-----

    OSS 数据源

    选择已准备好的OSS数据源。

    说明

    界面若提示:“未授权当前资源组访问OSS数据源权限,去授权”,点击去授权即可。

    OSS 路径

    指定一个OSS路径用于存放代码元数据,例如:dataworks-workspace-code

    通用资源组

    选择上文准备的Serverless资源组。

  3. 配置完成后,单击开始同步。开启同步后,需要对Git代码库进行初始化。单击初始化,系统将自动在Git仓库中创建DataWorks所需的分支并同步当前工作空间中的代码,可能需要数分钟,在此期间,单击右上角的image按钮,可以查看初始化日志。

    说明

    关闭同步后,再次开启同步,需要重新初始化。重新初始化之前需要清理

    配置生效后,DataWorks会自动在您的Git仓库中创建并管理以下三个分支,请勿手动创建或修改它们:

    • dataworks_${region}_${projectId}_save:对应在DataWorks中保存操作的代码。

    • dataworks_${region}_${projectId}_release_dev:对应发布到开发环境成功的代码,如工作空间为简单模式,则dev分支不生成。

    • dataworks_${region}_${projectId}_release_prod:对应发布到生产环境成功的代码。

后续步骤

云效同步配置完成后,可以实现代码的协同编辑、统一管理、跨空间合并等场景,详见:Git代码同步与合并