logo
0
0
Login
feat(制品库): 新增制品库仓库地址获取说明

CNB Artifact Migrate(CNB制品迁移工具)

功能介绍

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

获取仓库地址

coding仓库地址获取

img.png img.png

nexus仓库地址获取

img.png

jfrog仓库地址获取

img.png img.png

codeup仓库地址获取

img.png

cnb仓库地址获取

img.png

在Docker上使用

注意事项

  1. ⚠️开始迁移前,请确保CNB制品仓库已存在。
  2. Nexus、Jfrog 主要支持local库。
nexus迁移注意事项
  1. 因Nexus的列表查询api接口查询数量有限制,Nexus超过1W版本以上的仓库迁移,请配置迁移列表.否则只能迁移1W个版本数据
codeup迁移注意事项
  1. 暂不支持插件衍生的元数据文件迁移

从 Coding、Nexus、Jfrog 平台迁移到 CNB

1、挂载配置文件方式
  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
2、参数方式(ARTIFACT_MIGRATE:parameter-mode)
  1. SRC_INCLUDE_PACKAGE:指定需要迁移的包,支持包名及包名:版本,具体配置参考:config.yaml中includePackageVersion
  2. SRC_EXCLUDE_PACKAGE:指定迁移时需要排除的包,支持包名及包名:版本,具体配置参考:config.yaml中excludePackageVersion
  3. ARTIFACT_TYPE:maven、npm
  4. SRC_REGISTRY_TYPE:jfrog、nexus、coding、codeup、other(其他)
  5. SRC_REGISTRY_TYPE:other 时,需要配置SRC_INCLUDE_PACKAGE
  6. SRC_REGISTRY_TYPE:other 时,SRC_INCLUDE_PACKAGE可配置值 : (xxx|xxxx:1.0.0|xxxx:[1.0.0,2.0.0]) 或者 配置txt文件路径,挂载txt文件
  7. SRC_REGISTRY_TOKEN:制品仓库api访问令牌(codeup专用,请参考云效文档 开发参考->API参考->获取个人访问令牌)
  8. -v $(pwd):/app/log:/app/log 日志目录
  9. 日志文件包执行日志文件,迁移成功的包版本文件,迁移失败的包版本文件
  10. 增量迁移:挂载 迁移成功的包版本文件 并将文件路径配置到 SRC_EXCLUDE_PACKAGE 项
  11. NPM迁移参数 11.1 ARTIFACT_TYPE默认不会覆盖目标仓库,如需覆盖通过参数 -e REGISTRY_OVERWRITE_POLICY=true 11.2 TAR_API_VERSION 默认使用v1版本,如果v1下线,请配置v2. 配置 -e TAR_API_VERSION="v2"
docker run --rm \ -u root -e ARTIFACT_MIGRATE="parameter-mode" \ -e ARTIFACT_TYPE="" \ -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

在CNB流水线上使用

注意事项

  1. ⚠️开始迁移前,请确保CNB制品仓库已存在。
  2. Nexus、Jfrog 主要支持local库。
  3. 将config.yaml 配置放在项目根目录
  4. 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: # 仓库类型 maven: - src: # 源仓库类型,可选:jfrog、nexus、coding、codeup(云效)、other(其他仓库) type: coding # 按包名迁移,支持配置批量,按包名或者包名:版本号,按"(|)"分隔,如:(xxx|xxxx:1.0.0) # 支持配置正则表达式,按包名迁移规则(正则表达式,如:^org 以org开头的包名) # 支持批量,配置文件地址,支持文件名.txt:/app/config-npm-includePackageName.txt includePackageVersion: # 排除包名迁移,支持配置批量,按包名或者包名:版本号,按"(|)"分隔,如:(xxx|xxxx:1.0.0|xxxx:[1.0.0,2.0.0]) # 支持配置正则表达式,按包名迁移规则(正则表达式) # 支持批量,配置文件地址,支持文件名.txt:/app/config-npm-excludePackageName.txt excludePackageVersion: # 源仓库地址 url: http://xxx.xxx.net/repository/xxx/maven/ # 源仓库用户名 username: maven-xxx # 源仓库密码 password: xxx # 制品仓库api访问令牌(codeup专用,请参考云效文档 开发参考->API参考->获取个人访问令牌) token: target: # 目标仓库地址 url: http://cnb.cool/xxx/maven/-/packages/ # 目标仓库密码 password: xxx # 仓库类型 npm: - src: # 源仓库类型,可选:jfrog、nexus、coding、codeup(云效)、other(其他仓库) # 源仓库类型 other 时,需要配置includePackageVersion type: coding # 按包名迁移,支持配置批量,按包名或者包名:版本号,按"(|)"分隔,如:(xxx|xxxx:1.0.0) # 支持配置正则表达式,按包名迁移规则(正则表达式 如:^coding 以coding开头的name) # 支持批量,配置文件地址,支持文件名.txt:/app/config-npm-includePackageName.txt includePackageVersion: # 排除包名迁移,支持配置批量,按包名或者包名:版本号,按"(|)"分隔,如:(xxx|xxxx:1.0.0|xxxx:[1.0.0,2.0.0]) # 支持配置正则表达式,按包名迁移规则(正则表达式 如:^org 以org开头的包名),源仓库类型为 other 不支持正则配置 # 支持批量,配置文件地址,支持文件名.txt:/app/config-npm-excludePackageName.txt excludePackageVersion: # 源仓库地址 url: http://xxx.xxx.net/repository/xxx/npm/ # 源仓库用户名 username: npm-xxx # 源仓库密码或者token password: xxx # 制品仓库api访问令牌(codeup专用,请参考云效文档 开发参考->API参考->获取个人访问令牌) token: target: # 目标仓库地址 url: http://cnb.cool/xxx/npm/-/packages/ # 目标仓库密码 password: xxx # 非必填,默认不覆盖。 false:不覆盖 true: 覆盖 overwritePolicy: # api接口版本,默认v1. apiVersion: "v1/v2" # 仓库类型 nuget: - src: # 源仓库类型,可选:jfrog、nexus、codeup(云效)、other(其他仓库) type: jfrog # 按包名迁移,支持配置批量,按包名或者包名:版本号,按"(|)"分隔,如:(xxx|xxxx:1.0.0) # 支持配置正则表达式,按包名迁移规则(正则表达式,如:^org 以org开头的包名) # 支持批量,配置文件地址,支持文件名.txt:/app/config-npm-includePackageName.txt includePackageVersion: # 排除包名迁移,支持配置批量,按包名或者包名:版本号,按"(|)"分隔,如:(xxx|xxxx:1.0.0|xxxx:[1.0.0,2.0.0]) # 支持配置正则表达式,按包名迁移规则(正则表达式) # 支持批量,配置文件地址,支持文件名.txt:/app/config-npm-excludePackageName.txt excludePackageVersion: # 源仓库地址 url: http://xxx.xxx.net/repository/xxx/nuget/v3/index.json # 源仓库用户名 username: maven-xxx # 源仓库密码 password: xxx # 制品仓库api访问令牌(codeup专用,请参考云效文档 开发参考->API参考->获取个人访问令牌) token: target: # 目标仓库地址 url: http://cnb.cool/xxx/nuget/-/packages/v3/index.json # 目标仓库密码 password: xxx

txt 包名列表

npm支持配置格式 #配置 包名 迁移包下所有版本。示例: @opentelemetry/redis-common #配置 包名:版本号 迁移具体版本,示例: @opentelemetry/redis-common:0.37.0 #配置 包名:[开始版本号,结束版本好] 迁移具体版本区间 0.0.1 <= 版本 <= 2.0.0,示例: @opentelemetry/redis-common:[0.35.0,0.37.0] maven支持配置格式 # 示例: #全部包版本 groupid #全部版本 groupid:artifactid #多个版本号 groupid:{3.0.0,3.13.6} #版本区间 groupid:[3.0.0,3.13.6] #多个版本号 groupid:artifactid:{3.0.0,3.13.6} #版本区间 groupid:artifactid:[3.0.0,3.13.6]