更新时间:2025-08-29 GMT+08:00
分享

迁移Nexus中hosted类型仓库数据至CodeArts Artifact

Nexus中hosted类型仓库迁移至CodeArts Artifact本地仓库,使用迁移工具仓库进行迁移。

该迁移工具的原理为:通过将Nexus上的包读取到输入流中,然后调用CodeArts Artifact的接口完成上传,完成对Nexus中hostsed类型仓库的迁移。

准备工作

  • 运行环境为jdk8。
  • 若迁移Nexus/JFrog,迁移工具必须运行在一台同Nexus/JFrog和CodeArts服务网络连通,该主机必须安装jdk8。

步骤一:确定需要迁移的原仓库

确认需要迁移的原仓库类型和语言类型后如果是hosted类型,使用后续步骤进行迁移。

步骤二:在CodeArts Artifact创建私有依赖库(本地仓库)

根据迁移仓库类型和仓库语言类型确认所确认的仓库类型,创建目标仓库,此处以创建Maven类型私有依赖库(本地仓库)为例。

  1. 登录软件开发生产线首页,单击项目卡片进入项目,根据仓库使用场景选择项目。

  2. 单击菜单栏制品仓库 > 私有依赖库

  3. 选择“新建制品仓库”。

  4. 仓库类型选择“本地仓库”,制品类型选择Maven,关联项目可以选择此公共项目,单击“确定”。新建成功的Maven私有依赖库将显示在仓库视图中。

  5. 创建完成后应为此页面,再新建其他仓库,可以选择右上角的“新建制品仓库”。

步骤三:获取创建的私有依赖库(本地仓库)的地址与配置

  1. 获取私有依赖库地址。

    1. 进入步骤二:在CodeArts Artifact创建私有依赖库(本地仓库)创建的私有依赖库,选择“仓库视图”。
    2. 单击仓库名称,右侧页面中仓库的“概览”页签中详细信息显示“仓库地址”。单击即可复制仓库地址。
      图1 获取私有依赖库地址

  2. 获取私有依赖库配置。

    1. 单击页面右上方“操作指导”
    2. 在“操作指导”对话框中单击“下载配置文件”,下载配置文件settings.xml至本地。
      图2 下载配置文件
    3. 在本地打开配置文件settings.xml文件,在其中搜索并找到如下红框中的用户名与密码。

步骤四:配置私有依赖库(本地仓库)的迁移工具

  1. 进入私有依赖库,在左侧边栏中选择目标Maven私有依赖库。
  2. 单击仓库名称,在页面右上方,单击“下载迁移工具”将迁移工具压缩包(迁移工具名称relocation-jfrog-20250221.1.jar、配置文件application-nexus.yaml)下载到本地。
  3. 配置application-nexus.yaml文件中样例如下该样例仅包含最小配置参数,可直接再文件中搜索此参数名称,这些参数统一在relocation下。

    表1 application.yaml 关键配置说明

    参数名称

    配置说明

    样例

    name

    迁移任务的名称,仅作为展示

    nexus-to-artifact

    package_type

    迁移仓库的语言类型maven npm pypi go

    须知:

    maven的私有依赖库分为release和snapshot两种包格式,如果原仓库混合在一起,需要对原仓库两次迁移,分别迁移release和snapshot到不同格式的maven仓库中

    maven

    migrate_type

    迁移类型,nexus3/nexus2,根据不同的neuxs版本填写

    nexus3

    save_temp_dir

    迁移缓存路径, 迁移maven时必填, "/"结尾, 此路径用户缓存maven的快照版本名称最后上传

    D:/tmp/xxx/

    domain

    原仓库的域名

    原仓库的域名,最后的路径需没有'/'

    http://{ip}:{port}

    repo

    原仓库名称,Nexus上的仓库名,通过Nexus页面上确认要迁移的仓库的NAME字段获取

    test_maven

    user_name

    原仓库的用户名

    username

    password

    原仓库的密码

    password

    target_domain

    目标仓库的域名

    通过私有库页面上仓库地址获取步骤三:获取创建的私有依赖库(本地仓库)的地址与配置,如仓库地址为:

    https://{domain}/artgalaxy/cn-north-xxx_xxxxxxxx_maven_1_388/

    则此处填写:https://{domain}/artgalaxy

    如仓库地址为:

    https://{domain}/artgalaxy/api/npm/cn-north-xx_xxxxxxx_npm_6944/

    则此处填写:https://{domain}/artgalaxy/api/npm

    https://{domain}/artgalaxy

    https://{domain}/artgalaxy/api/npm

    target_repo

    目标仓库名称

    通过仓库地址获取,步骤三:获取创建的私有依赖库(本地仓库)的地址与配置,如仓库地址为:

    https://{domain}/artgalaxy/cn-north-xxx_xxxxxxxx_maven_1_388/

    则此处填写:cn-north-xxx_xxxxxxxx_maven_1_388

    如仓库地址为:

    https://{domain}/artgalaxy/api/npm/cn-north-xx_xxxxxxx_npm_6944/

    则此处填写:cn-north-xx_xxxxxxx_npm_6944

    cn-north-xxx_xxxxxxxx_maven_1_388

    cn-north-xx_xxxxxxx_npm_6944

    target_user_name

    目标仓库用户名,可以通过步骤三:获取创建的私有依赖库(本地仓库)的地址与配置 获取

    username

    target_password

    目标仓库密码,可以通过步骤三:获取创建的私有依赖库(本地仓库)的地址与配置 获取

    password

    最简易application-nexus.yaml

    relocation:
      # 迁移任务的名称,仅作为展示
      name: nexus-to-artifact
      # 迁移仓库的语言类型maven npm pypi go等
      package_type: maven
      # 迁移类型,支持governance jfrog nexus3/nexus2
      migrate_type: "nexus3"
      # 迁移缓存路径, 迁移maven时必填, "/"结尾, 此路径用户缓存maven的快照版本名称最后上传
      save_temp_dir: "D:/tmp/xxx/" 
    
      # 原仓库参数, 仅jfrog nexus场景需要配置
      # 原仓库的地址,最后的路径需没有'/'
      domain: 'http://{domain}/artifactory'
      # 原仓库的仓库名称
      repo: 'test-maven'
      # 原仓库的用户名
      user_name: "username"
      # 原仓库的密码
      password: "password"
    
      # 目标仓库参数
      # 目标仓库地址,最后的路径需没有'/',从页面上获取
      target_domain: 'https://{domain}/artgalaxy/xxxx/xxxx'
      # 目标仓库的名称
      target_repo: xxxxx
      # 目标仓库用户名
      target_user_name: 'username'
      # 目标仓库密码
      target_password: 'password'

  4. 全量配置参数application.yaml 参数参考

    relocation:
      # 迁移程序通用配置
      # 迁移程序核心线程数量
      corePoolSize: 20
      # 迁移程序最大线程池数量
      maxPoolSize: 40
      # 迁移程序线程池队列大小
      queueCapacity: 99999999
      # 迁移程序的最大迁移速度 单位 MB/s,默认值为20
      speed_limit: 20
      # jfrog 迁移场景参数,此参数表示迁移包修改时间从modifiedFrom 到 modifiedTo 时间之间的包(时间戳)
      modifiedFrom:
      modifiedTo:
      # 迁移任务的名称,仅作为展示
      name: jfrog-to-artifact
      # 迁移仓库的语言类型
      package_type: pypi
      # 迁移类型,支持governance jfrog nexus
      migrate_type: "jfrog"
      # 迁移缓存路径, 迁移maven时必填,"/"结尾
      save_temp_dir: "/xxxx/"
    
      # 原仓库参数, 仅jfrog nexus场景需要配置
      # 原仓库的地址,最后的路径需没有'/'
      domain: 'http://{domain}/artifactory'
      # 原仓库的仓库名称
      repo: 'test-pypi-source'
      # 原仓库的类型,默认为artifactory
      repo_type: artifactory
      # 原仓库的用户名
      user_name: "username"
      # 原仓库的密码
      password: "password"
      # 如果是jfrog场景,此处可填写原仓库的子路径,支持子路径迁移
      source_sub_path:
    
      # 目标仓库参数
      # 目标仓库地址,最后的路径需没有'/',从页面上获取
      target_domain: 'https://{domain}/artgalaxy/xxxx/xxxx'
      # 目标仓库的名称
      target_repo: xxxxx
      # 目标仓库的类型,默认为artifactory
      target_repo_type: artifactory
      # 目标仓库用户名
      target_user_name: 'username'
      # 目标仓库密码
      target_password: 'password'
    
      # governance迁移参数 迁移python无需关注
      # governance迁移场景的domain_id
      domain_id: test009
      # governance场景下是否需要调用governance服务,如果是true将不调用governance
      call_governance_use_local: true
      # governance 迁移仓库的语言仓类型
      governance_type: npm
      # governance实体包的存放路径
      migrate_local_path: ""
      # governance元数据文件,表示需要迁移的元数据文件
      migrate_metadata_path: ""
      # 回调governance的路径,此路径需要单独设置一个空路径
      governance_save_path: ""
      # 回调governance的url
      governance_url: ""
      # 用户的ak,用于回调governance接口
      access_key_id: ""
      # 用户的sk,用于回调governance接口
      secret_access_key: ""
      # 是否仅通过governance_save_path中的缓存信息回调governance
      only_update_governance: false
      # 迁移governance最大的文件数量,此数量为migrate_metadata_path中的元数据数目
      migrate_max_num: -1

步骤五:执行迁移

  1. 执行迁移脚本java -jar relocation-jfrog-20250221.1.jar --spring.config.location=application-nexus.yaml > /log/relocation-jfrog.log 2>&1 &
  2. 进入对应的私有依赖库(本地仓库),查看hosted类型仓库的组件包是否上传成功。

相关文档