用户头像 -> 个人设置 -> 访问令牌 -> 添加访问令牌 -> 勾选制品库 -> 创建令牌
PyPI registry

Nexus、Jfrog 主要支持local库。因Nexus的列表查询api接口查询数量有限制,Nexus超过1W版本以上的仓库迁移,请配置迁移列表.否则只能迁移1W个版本数据
暂不支持插件衍生的元数据文件迁移
docker run --rm \ -u root -e ARTIFACT_MIGRATE="parameter-mode" \ -e ARTIFACT_TYPE="pypi" \ -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
| Docker 参数 | 说明 |
|---|---|
| ARTIFACT_TYPE | 固定值为 pypi |
| SRC_REGISTRY_TYPE | 源仓库类型(jfrog、nexus、coding、codeup、other), SRC_REGISTRY_TYPE 为 other 时必须配置 SRC_INCLUDE_PACKAGE |
| SRC_INCLUDE_PACKAGE | 指定需要迁移的包,具体配置参考:config.yaml中includePackageVersion |
| SRC_EXCLUDE_PACKAGE | 指定迁移时需要排除的包,支持包名及包名:版本,具体配置参考:config.yaml中excludePackageVersion |
| SRC_REGISTRY_URL | 源仓库地址 |
| SRC_REGISTRY_USERNAME | 源仓库账号 |
| SRC_REGISTRY_PASSWORD | 源仓库密码 |
| SRC_REGISTRY_TOKEN | 制品仓库api访问令牌(codeup专用,请参考云效文档 开发参考->API参考->获取个人访问令牌) |
| SRC_TEMP_DIR | 迁移时产生的临时文件存储路径,默认为系统临时文件路径 |
| TAR_REGISTRY_URL | cnb目标仓库地址 |
| TAR_REGISTRY_PASSWORD | cnb目标仓库token |
docker run --rm \
-u root \
-v /data/conf/config.yaml:/app/config.yaml \
# 迁移包列表文件挂载地址,需要挂载指定迁移包列表文件时使用,配置在config.yaml中includePackageVersion项
-v /data/conf/config-pypi-includePackageName.txt:/app/config-pypi-includePackageName.txt \
# 迁移需排除的包列表文件挂载地址,需要挂载指定迁移需排除的包列表文件时使用,配置在config.yaml中excludePackageVersion项
-v /data/conf/config-pypi-excludePackageName.txt:/app/config-pypi-excludePackageName.txt \
# 日志目录
-v $(pwd):/app/log \
docker.cnb.cool/cnb/plugins/cnbcool/artifact-migrate:latest
Docker 迁移示例:
以下所有密钥均已进行脱敏处理,不可直接使用
# 我希望从腾讯云 PyPI 源上把 requests 的版本号在 0.8.0 到 2.32.0 之间的包迁移到 CNB 的 pypi-test 仓库中,同时我希望屏蔽 2.20.0-2.24.0 之间的版本
docker run --rm \
-u root
-e ARTIFACT_MIGRATE="parameter-mode" \
-e ARTIFACT_TYPE="pypi" \
-e SRC_REGISTRY_TYPE="other" \
# 指定迁移的版本为 0.8.0 到 2.32.0 之间
-e SRC_INCLUDE_PACKAGE="(requests:[0.8.0,2.32.0])" \
# 指定屏蔽的版本为 2.20.0 到 2.24.0 之间
-e SRC_EXCLUDE_PACKAGE="(requests:[2.20.0,2.24.0])" \
-e SRC_REGISTRY_URL="https://mirrors.cloud.tencent.com/pypi/simple" \
-e SRC_REGISTRY_USERNAME="" \
-e SRC_REGISTRY_PASSWORD="" \
-e SRC_REGISTRY_TOKEN="" \
# 表示将迁移时产生的临时文件存储在 /data/temp/ 路径下
-e SRC_TEMP_DIR="/data/temp/"
# 目标 cnb 地址
-e TAR_REGISTRY_URL="https://pypi.cnb.cool/orain-test/pypi-test/-/packages/transfer" \
# 目标 cnb 地址的 password
-e TAR_REGISTRY_PASSWORD="640b7253e151ee254d2d366b31ab6ea4" \
-v $(pwd):/app/log \
docker.cnb.cool/cnb/plugins/cnbcool/artifact-migrate:latest
# 我希望从 nexus 的 pypi2-hosted 仓库中把除了 1.7.2 和 1.8.0 版本的 numpy 包迁移到 CNB 的 pypi-test 仓库中
docker run --rm \
-u root
-e ARTIFACT_MIGRATE="parameter-mode" \
-e ARTIFACT_TYPE="pypi" \
-e SRC_REGISTRY_TYPE="nexus" \
-e SRC_INCLUDE_PACKAGE="numpy" \
-e SRC_EXCLUDE_PACKAGE="(numpy:{1.7.2,1.8.0})" \
-e SRC_REGISTRY_URL="https://nexushub.com:8081/repository/pypi2-hosted/" \
-e SRC_REGISTRY_USERNAME="test" \
-e SRC_REGISTRY_PASSWORD="test1" \
-e SRC_REGISTRY_TOKEN="" \
# 表示将临时文件存储在默认临时文件路径
-e SRC_TEMP_DIR=""
# 目标 cnb 地址
-e TAR_REGISTRY_URL="https://pypi.cnb.cool/orain-test/pypi-test/-/packages/transfer" \
# 目标 cnb 地址的 password
-e TAR_REGISTRY_PASSWORD="640b7253e151ee254d2d366b31ab6ea4" \
-v $(pwd):/app/log \
docker.cnb.cool/cnb/plugins/cnbcool/artifact-migrate:latest
# 我希望将我的 Coding 的 py-demo 制品库中除了 1.2.1 到 2.0.0 之间所有的 requests 包,版本在 1.5.1 与 1.10.4 之间的 numpy 包,1.9.3 的 django 包迁移至 cnb 的 pypi-test 仓库中
docker run --rm \
-u root
-e ARTIFACT_MIGRATE="parameter-mode" \
-e ARTIFACT_TYPE="pypi" \
-e SRC_REGISTRY_TYPE="coding" \
-e SRC_INCLUDE_PACKAGE="(requests|numpy:[1.5.1,1.10.4]|django:{1.8.13,1.9.3})" \
-e SRC_EXCLUDE_PACKAGE="(requests:[1.2.1,2.0.0],django:1.8.13)" \
# coding 仓库地址
-e SRC_REGISTRY_URL="https://demo-pypi.pkg.coding.net/demo/py-demo" \
# coding 个人令牌名称
-e SRC_REGISTRY_USERNAME="py-test-123456789" \
# coding 个人令牌密码
-e SRC_REGISTRY_PASSWORD="2bf35d65c254efad0ac6e6bcea245324" \
-e SRC_REGISTRY_TOKEN="" \
# 表示将临时文件存储在默认临时文件路径
-e SRC_TEMP_DIR=""
# 目标 cnb 地址
-e TAR_REGISTRY_URL="https://pypi.cnb.cool/orain-test/pypi-test/-/packages/transfer" \
# 目标 cnb 地址的 password
-e TAR_REGISTRY_PASSWORD="640b7253e151ee254d2d366b31ab6ea4" \
-v $(pwd):/app/log \
docker.cnb.cool/cnb/plugins/cnbcool/artifact-migrate:latest
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 "制品迁移完成"
# 我希望从 codeup 上把 pypi-demo 仓库中所有的包迁移到 CNB 的 pypi-test 仓库中
artifactory:
# 仓库类型
pypi:
- src:
# 源仓库类型,可选:jfrog、nexus、coding、codeup(云效)、other(其他仓库)
type: codeup
# 按包名迁移,支持配置批量,按包名或者包名:版本号,按"(|)"分隔,如:(xxx|xxxx:1.0.0)
# 支持配置正则表达式,按包名迁移规则(正则表达式,如:^org 以org开头的包名)
# 支持批量,配置文件地址,支持文件名.txt:/app/config-pypi-includePackageName.txt
includePackageVersion:
# 排除包名迁移,支持配置批量,按包名或者包名:版本号,按"(|)"分隔,如:(xxx|xxxx:1.0.0|xxxx:[1.0.0,2.0.0])
# 支持配置正则表达式,按包名迁移规则(正则表达式)
# 支持批量,配置文件地址,支持文件名.txt:/app/config-pypi-excludePackageName.txt
excludePackageVersion:
# 源仓库地址
url: https://packages.aliyun.com/2a8a812400df8963b2e2ac0ed01b07b8/pypi/pypi-demo
# 源仓库账号
username: "55eda7ddd85ab342b862844fd3cdd71a"
# 源仓库密码
password: "c32daSW212s("
# 制品仓库api访问令牌(codeup专用,请参考云效文档 开发参考->API参考->获取个人访问令牌)
token: "pt-ZYx8f7Rq23NpLm9Kj6HsDcBw_7b3c221a-9f82-4dac-b6e1-8c9a0b7d5f6c"
tempDir:
target:
# 目标仓库地址
url: https://pypi.cnb.cool/orain-test/pypi-test/-/packages/transfer
# 目标仓库密码
password: 640b7253e151ee254d2d366b31ab6ea4
注意事项,使用字符串配置,最外层需要用 () 包起来, 配置之间使用 | 分割
| 语法 | 具体包版本匹配 | 含义 | 示例 |
|---|---|---|---|
| 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 之间版本 |
配置规则示例:
# 以下配置表示我希望将当前制品库中除了 1.2.1 到 2.0.0 之间所有的 requests 包,版本在 1.5.1 与 1.10.4 之间的 numpy 包,1.9.3 的 django 包迁移至 cnb 中
SRC_INCLUDE_PACKAGE: (requests|numpy:[1.5.1,1.10.4]|django:{1.8.13,1.9.3})
SRC_EXCLUDE_PACKAGE: (requests:[1.2.1,2.0.0],django:1.8.13)
# SRC_REGISTRY_TYPE == other 时,includePackageVersion .txt文件 支持具体包版匹配规则格式 # 示例: #单个版本号 monolog/monolog:0.37.0 #多个版本号 monolog/monolog:{0.37.0,0.38.0} # SRC_REGISTRY_TYPE != other 时,includePackageVersion .txt文件 支持所有匹配规则格式 # 示例: #配置 包名 迁移包下所有版本。示例: monolog/monolog #配置 包名:版本号 迁移具体版本,示例: monolog/monolog:0.37.0 #配置 包名:版本号批量 迁移具体版本,示例: monolog/monolog:{0.37.0,0.38.0} #配置 包名:[开始版本号,结束版本好] 迁移具体版本区间 0.0.1 <= 版本 <= 2.0.0,示例: monolog/monolog:[0.0.1,2.0.0] # excludePackageVersion .txt文件 支持所有匹配规则格式 # 示例: #配置 包名 迁移包下所有版本。示例: monolog/monolog #配置 包名:版本号 迁移具体版本,示例: monolog/monolog:0.37.0 #配置 包名:版本号批量 迁移具体版本,示例: monolog/monolog:{0.37.0,0.38.0} #配置 包名:[开始版本号,结束版本好] 迁移具体版本区间 0.0.1 <= 版本 <= 2.0.0,示例: monolog/monolog:[0.0.1,2.0.0]