logo
0
0
Login
docker迁移配置说明优化

CNB Artifact Migrate(DOCKER 制品迁移)

功能介绍

  1. 支持Coding、Nexus、Jfrog、codeup(云效)平台中的 maven、npm、composer、nuget 类型制品迁移至CNB

获取仓库地址

在Docker上使用

注意事项

  1. ⚠️开始迁移前,请确保CNB制品仓库已存在。
  2. ⚠️Nexus、Jfrog 主要支持local库。
  3. ⚠️主要迁移自有包,不要迁移三方包
Nexus 注意事项
  1. 因Nexus的列表查询api接口查询数量有限制,Nexus超过1W版本以上的仓库迁移,请配置迁移列表.否则只能迁移1W个版本数据
  2. composer 制品库是社区提供的插件, 某些版本不支持通过接口获取元数据信息, 在此情况下, 迁移时可配置成 other 类型, 并显示指定需要迁移的包名
codeup迁移注意事项
  1. 暂不支持插件衍生的元数据文件迁移
  2. codeup 截止 2025-07-16 暂不支持 composer 制品库, 故本工具暂不支持

指定参数迁移

  1. -v $(pwd):/app/log:/app/log 日志目录
  2. 日志文件包执行日志文件,迁移成功的包版本文件,迁移失败的包版本文件
  3. 增量迁移:挂载 迁移成功的包版本文件 并将文件路径配置到 SRC_EXCLUDE_PACKAGE 项
docker run --rm \ -u root -e ARTIFACT_MIGRATE="parameter-mode" \ -e ARTIFACT_TYPE="docker" \ -e SRC_REGISTRY_TYPE="" \ -e SRC_INCLUDE_PACKAGE="" \ -e SRC_EXCLUDE_PACKAGE="" \ -e SRC_REGISTRY_URL="" \ -e SRC_REGISTRY_USERNAME="" \ -e SRC_REGISTRY_PASSWORD="" \ -e SRC_REGISTRY_TOKEN="" \ -e TAR_REGISTRY_URL="" \ -e TAR_REGISTRY_PASSWORD="" \ -v $(pwd):/app/log \ docker.cnb.cool/cnb/plugins/cnbcool/artifact-migrate:latest

参数说明

参数说明
ARTIFACT_TYPEdocker
SRC_REGISTRY_TYPE原仓库类型(coding,nexus,jfrog,tcr)
SRC_INCLUDE_PACKAGE指定需要迁移的包,具体配置参考:config.yaml中includePackageVersion
SRC_EXCLUDE_PACKAGE指定迁移时需要排除的包,支持包名及包名:版本,具体配置参考:config.yaml中excludePackageVersion
SRC_REGISTRY_TYPE配置为other时必须配置SRC_INCLUDE_PACKAGE
SRC_REGISTRY_URL原仓库地址
SRC_REGISTRY_USERNAME原仓库用户名
SRC_REGISTRY_PASSWORD原仓库密码
SRC_REGISTRY_TOKEN制品仓库api访问令牌(codeup专用,请参考云效文档 开发参考->API参考->获取个人访问令牌)
TAR_REGISTRY_URLcnb目标仓库地址
TAR_REGISTRY_PASSWORDcnb目标仓库token

指定配置文件迁移

  1. 挂载日志文件目录: -v $(pwd):/app/log
  2. 日志文件包执行日志文件,迁移成功的包版本文件,迁移失败的包版本文件
  3. 增量迁移:挂载 迁移成功的包版本文件 并将文件路径配置到 config.yaml 中的 excludePackageVersion 项
docker run --rm \ -u root \ -v /data/conf/config.yaml:/app/config.yaml \ # 迁移包列表文件挂载地址,需要挂载指定迁移包列表文件时使用,配置在config.yaml中includePackageVersion项 -v /data/conf/config-maven-includePackageName.txt:/app/config-maven-includePackageName.txt \ # 迁移需排除的包列表文件挂载地址,需要挂载指定迁移需排除的包列表文件时使用,配置在config.yaml中excludePackageVersion项 -v /data/conf/config-maven-excludePackageName.txt:/app/config-maven-excludePackageName.txt \ # 日志目录 -v $(pwd):/app/log \ docker.cnb.cool/cnb/plugins/cnbcool/artifact-migrate:latest

在CNB流水线上使用

注意事项

  1. 将config.yaml 配置放在项目根目录
  2. cnb流水线中项目默认路径:/workspace
main: push: - services: - docker stages: - name: 制品迁移 script: | echo "制品迁移开始" docker pull docker.cnb.cool/cnb/plugins/cnbcool/artifact-migrate:latest docker run --rm \ -u root \ -v /workspace/config.yaml:/app/config.yaml \ -v $(pwd):/app/log \ docker.cnb.cool/cnb/plugins/cnbcool/artifact-migrate:latest echo "制品迁移完成"

config.yaml 参数介绍

artifactory: # 仓库类型 docker: - src: # 源仓库类型,可选: coding,nexus,jfrog,tcr # 源仓库类型 other 时,需要配置includePackageVersion type: coding # 指定迁移包名配置,支持批量配置 # type == other 支持配置,单规则配置,如:(具体包版匹配规则),多规则按"(|)"分隔,如:(具体包版匹配规则1|具体包版匹配规则2) # type != other 支持配置,单规则配置,如:(匹配规则),多规则按"(|)"分隔,,如:(匹配规则1|匹配规则2) # 支持配置正则表达式,按包名迁移规则(正则表达式,如:^org 以org开头的包名) # 支持配置文件地址,如:/app/config-composer-includePackageName.txt,具体参考 txt 包名列表格式 includePackageVersion: # 排除迁移包名配置,支持配置批量 # 支持配置,单规则配置,如:(匹配规则),多规则按"(|)"分隔,,如:(匹配规则1|匹配规则2) # 支持配置正则表达式,按包名迁移规则((正则表达式,如:^org 以org开头的包名) # 支持配置文件地址,如:/app/config-composer-excludePackageName.txt,具体参考 txt 包名列表格式 excludePackageVersion: # 源仓库地址,控制台复制的仓库地址 # nexus平台控制台与docker仓库端口不是同一个,这里填nexus控制台的仓库地址,还需要使用nexusRepoUrl变量配置docker实际地址 url: https://xxxx-nuget.pkg.coding.net/xxx/xxx/v3/index.json # 源仓库用户名 username: xxx # 源仓库密码或者token password: xxx # 源仓库是否加密通信(https),默认 true istlsverify: (true/false) # 腾讯云密钥 type为tcr时必填 secretId: # 腾讯云密钥 type为tcr时必填 secretKey: # 资源地域 type为tcr时必填,可以在腾讯云控制台查找 如ap-shanghai,ap-beijing,ap-guangzhou region: #docker的host:port type为nexus时必填 nexusRepoUrl: target: # 目标仓库地址 url: http://nuget.cnb.cool/xxx/xxx/-/packages/v3/index.json # 目标仓库密码 password: xxx

配置规则详解

语法具体包版本匹配含义示例
name匹配任意版本的包匹配 example 所有版本
name:1.0.0匹配精确版本仅 example:1.0.0
name:{1.0.0,2.0.0}匹配指定版本集合(1.0.0 或 2.0.0)仅匹配 1.0.0 和 2.0.0
name:[1.0.0,5.0.0]匹配闭区间内的所有版本(含端点)匹配 1.0.0 到 5.0.0 之间版本

txt 包名列表

# excludePackageVersion 与 includePackageVersion .txt文件 支持所有匹配规则格式 # 示例: #全部包版本 name #单个版本 name:1.0.0 #多个版本号 name:{3.0.0,3.13.6} #版本区间 name:[3.0.0,3.13.6]