docker run --rm \ -u root \ -e ARTIFACT_MIGRATE="parameter-mode" \ -e ARTIFACT_TYPE="maven" \ -e SRC_REGISTRY_TYPE="" \ -e SRC_INCLUDE_PACKAGE="" \ -e SRC_EXCLUDE_PACKAGE="" \ -e SRC_CLASSIFIER=""\ -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
日志文件目录: -v $(pwd):/app/log日志文件目录 生成 执行日志、迁移成功的包版本列表、迁移失败的包版本列表文件SRC_EXCLUDE_PACKAGE 配置为 迁移成功版本列表路径, 则会跳过之前迁移成功的版本, 从而达到增量迁移的效果| 参数 | 说明 |
|---|---|
| ARTIFACT_TYPE | maven |
| SRC_REGISTRY_TYPE | 源仓库类型(jfrog、nexus、coding、codeup、other) |
| SRC_CLASSIFIER | codeup或者other时有非默认文件格式需配置,配置格式:".xxx,-dddd.xxx" 默认支持:".pom,.jar,-plain.jar,.war,.ear,.aar,.rar,.par,.ejb,.apk,.klib,.bundle,.module,-sources.jar,-javadoc.jar,-assembly.zip,-shade.jar,-debug.aar,-debug-sources.jar,-official.aar,-kotlin-tooling-metadata.json" |
| SRC_POOL_SIZE | 按版本并发迁移,默认20并发,最大256并发 |
| SRC_INCLUDE_PACKAGE | 1.包含规则,只会迁移符合规则的包和相应版本 2.详情参考: config.yaml 参数介绍的includePackageVersion规则说明 |
| SRC_EXCLUDE_PACKAGE | 1.排除规则,命中规则的包和版本不进行迁移 2.具体配置参考: config.yaml 参数介绍中excludePackageVersion规则说明 |
| SRC_REGISTRY_URL | 源仓库地址 |
| SRC_REGISTRY_USERNAME | 源仓库用户名 |
| SRC_REGISTRY_PASSWORD | 源仓库密码 |
| SRC_REGISTRY_TOKEN | 1.Codeup 平台 API 访问令牌,SRC_REGISTRY_TYPE为 codeup 才设置2.获取方法,请参考云效文档 开发参考->API参考->获取个人访问令牌 |
| TAR_REGISTRY_URL | CNB 目标仓库地址 |
| TAR_REGISTRY_PASSWORD | CNB 目标仓库 token |
| OVERWRITE_POLICY | 是否覆盖,默认不覆盖。 false:不覆盖 true: 覆盖 |
docker run --rm \
-u root \
-v /data/conf/config.yaml:/app/config.yaml \
# 详情参考:[config.yaml 参数介绍] 的 includePackageVersion 规则说明,config.yaml 中 includePackageVersion 配置为 /app/includePackageVersion.txt
-v /data/conf/includePackageVersion.txt:/app/includePackageVersion.txt \
# 详情参考:[config.yaml 参数介绍] 的 excludePackageVersion 规则说明,config.yaml 中 includePackageVersion 配置为 /app/excludePackageVersion.txt
-v /data/conf/excludePackageVersion.txt:/app/excludePackageVersion.txt \
# 日志目录
-v $(pwd):/app/log \
docker.cnb.cool/cnb/plugins/cnbcool/artifact-migrate:latest
日志文件目录: -v $(pwd):/app/log日志文件目录 生成 执行日志、迁移成功的包版本列表、迁移失败的包版本列表文件config.yaml 的 excludePackageVersion 配置为 迁移成功版本列表, 则会跳过之前迁移成功的版本, 从而达到增量迁移的效果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
# 源仓库是 other, includePackageVersion 必填
type: coding
# 包含规则,只会迁移符合规则的包和相应版本,多规则按"(|)"分隔,正则和其他规则互斥
# 详情参考:包含和排除规则说明
# 1. 源仓库类型 other ,只能配置指定版本规则,如:(com.example:app:5.8.1|com.example:app:{2.0.34,2.0.35})
# 2. 源仓库类型不是 other,可配置范围规则和指定版本规则 或者 正则表达式规则,如:(com.example|com.example:app:{2.0.34,2.0.35})
# 2.1 正则表达式规则示例(如: ^org 以 org 开头的包名 或者 ^.*coding.*$ 包含 coding 的包)
# 3. 支持配置规则文件,如:/app/includePackageVersion.txt
includePackageVersion:
# 排除规则,命中规则的包和版本不进行迁移,多规则按"(|)"分隔,正则和其他规则互斥
# 详情参考:包含和排除规则说明
# 1. 支持所有匹配规则格式,如:(com.example|com.example:app:[2.0.34,2.0.35])
# 2. 支持配置正则表达式,不迁移含 test 包。^.*test.*$
# 3. 支持配置文件地址,如:/app/excludePackageVersion.txt
excludePackageVersion:
# 默认支持:".pom,.jar,-plain.jar,.war,.ear,.aar,.rar,.par,.ejb,.apk,.klib,.bundle,.module,-sources.jar,-javadoc.jar,-assembly.zip,-shade.jar,-debug.aar,-debug-sources.jar,-official.aar,-kotlin-tooling-metadata.json"
# codeup或者other时有非默认文件格式需配置
# 格式:".xxx,-dddd.xxx"
classifier:
# 源仓库地址
url: https://xxx-maven.pkg.coding.net/repository/xxx/xxx
# 源仓库用户名
username: xxx
# 源仓库密码
password: xxx
# 1. Codeup 平台 API 访问令牌,type 为 codeup 才设置
# 2. 获取方法,请参考云效文档 开发参考->API参考->获取个人访问令牌
token:
target:
# 目标仓库地址
url: https://maven.cnb.cool/xxx/maven/-/packages/
# 目标仓库 token
password: xxx
# 非必填,默认不覆盖。 false:不覆盖 true: 覆盖
overwritePolicy:
| 语法 | 具体包版本匹配 | 含义 | 示例 |
|---|---|---|---|
| groupid | 否 | 匹配任意版本的该 groupId | 匹配 com.example 所有版本 |
| groupid:artifctid | 否 | 匹配该构件所有版本 | com.example:app 的所有版本 |
| groupid:artifctid:1.0.0 | 是 | 匹配精确版本 | 仅 com.example:app:1.0.0 |
| groupid:artifctid:{1.0.0,2.0.0} | 是 | 匹配多个指定版本 | 仅匹配 com.example:app 的 1.0.0 和 2.0.0 |
| groupid:artifctid:[1.0.0,5.0.0] | 否 | 匹配版本范围内所有版本(含端点) | 匹配 com.example:app 1.0.0 到 5.0.0 之间版本 |
规则示例: # 源仓库类型 other 时,includePackageVersion,只支持具体包版本匹配规则格式 # 示例: #全部版本 com.example:app #单个版本 com.example:app:1.0.0 #多个版本号 com.example:app:{3.0.0,3.13.6} # 源仓库类型不是 other, includePackageVersion,支持所有匹配规则格式 # 示例: #全部包版本 com.example #全部版本 com.example:app #多个版本号 com.example:app:{3.0.0,3.13.6} #版本区间 com.example:app:[3.0.0,3.13.6] # excludePackageVersion, 支持所有匹配规则格式 # 示例: #全部包版本 com.example #全部版本 com.example:app #多个版本号 com.example:app:{3.0.0,3.13.6} #版本区间 com.example:app:[3.0.0,3.13.6]