更新时间:2024-11-06 GMT+08:00
批量迁移Maven/NPM/PyPI组件至私有依赖库
背景信息
制品仓库服务的私有依赖库支持通过页面手动上传下载私有组件,还支持与本地开发环境对接,通过本地开发环境上传下载私有组件。通过私有依赖库上传组件的操作请参考通过私有依赖库页面上传/下载私有组件。
如果待上传的包太多,单个上传会很繁琐。通过私有依赖库提供的批量迁移工具可以提高上传效率,在易用性上能够更加便捷地从Nexus或其他类型仓库批量上传组件至私有依赖库。
准备工作
- 已创建对应格式的私有依赖库。
- 运行环境为Python3。
- 若使用Nexus,迁移工具必须和Nexus运行在同一台Linux主机上,且必须和CodeArts服务网络连通,该主机必须安装Python3。
迁移Maven组件
- 从Maven本地仓库(例如:C:\Users\xxxxx\.m2\repository)找到需迁移的组件,复制到指定目录(用户自己指定)。
- 进入私有依赖库,在左侧边栏中选择目标Maven私有依赖库。
- 单击仓库名称,页面中仓库的详细信息显示“仓库地址”,单击即可复制该地址。
- 单击页面右上方“操作指导”,在弹框中单击“下载配置文件”,将配置文件settings.xml下载到本地。
在本地打开配置文件,在文件中搜索并找到用户名与密码。
- 单击页面右上方,单击“下载迁移工具”将迁移工具压缩包(脚本uploadArtifact2.py、配置文件artifact.conf)下载到本地。
- 配置artifact.conf。
[artifact] packageType = 组件类型,设置为Maven userInfo = username:password(步骤4中获取的用户名与密码) repoRelease = 仓库类型为 Release地址(步骤3中获取的仓库地址) repoSnapshot = 仓库类型为 Snapshot地址(步骤3中获取的仓库地址) srcDir = 组件的目录路径(用户自己指定),如存放在步骤1下载组件的目标路径。 [nexus] nexusAddr=nexus地址 nexusPort=nexus端口 repoName=待迁移的nexus仓库名称 userName=nexus用户名 passwd=nexus密码
- 执行迁移脚本python uploadArtifact2.py。
- 进入对应的私有依赖库,查看组件包是否上传成功。
迁移npm组件
- 进入私有依赖库,在左侧边栏中选择目标npm私有依赖库。
- 单击仓库名称,页面中仓库的详细信息显示“仓库地址”,单击即可复制该地址。
- 单击页面右上方“操作指导”,在弹框中单击“下载配置文件”,将npmrc文件下载到本地。
在本地打开配置文件,在文件中找到“_auth”字段的值并进行base64解码。
- 单击页面右上方,单击“下载迁移工具”将迁移工具压缩包(脚本uploadArtifact2.py、配置文件artifact.conf)下载到本地。
- 配置artifact.conf。
[artifact] packageType = 组件类型,设置为npm userInfo = npm仓库下的配置文件npmrc中通过base64 解密后的_auth字段的值(参考步骤3) repoRelease = 私有依赖库地址(步骤2中获取的仓库地址) repoSnapshot = 保留为空 srcDir = 组件的目录路径,例如:C:\Users\xxxxxx\repository,用户自己指定 [nexus] nexusAddr=nexus地址 nexusPort=nexus端口 repoName=待迁移的nexus仓库名称 userName=nexus用户名 passwd=nexus密码
- 检查对应npm仓是否配置了路径白名单。
请确认package.json中私有二进制包是否在白名单内,只有与白名单内匹配的二进制包才能上传成功;没有配置白名单,则package.json中私有二进制包都可以上传成功。
- 执行迁移脚本python uploadArtifact2.py。
- 进入对应的私有依赖库,查看组件包是否上传成功。
迁移PyPI组件
- 进入私有依赖库,在左侧边栏中选择目标PyPI私有依赖库。
- 单击仓库名称,页面中仓库的详细信息显示“仓库地址”,单击即可复制该地址。
- 单击页面右上方“操作指导”,在弹框中单击“下载配置文件”,将配置文件pypirc下载到本地。
在本地打开配置文件,在文件中搜索并找到用户名与密码。
- 单击页面右上方,单击“下载迁移工具”将迁移工具压缩包(脚本uploadArtifact2.py、配置文件artifact.conf)下载到本地。
- 配置artifact.conf。
[artifact] packageType = 组件类型,设置为pypi userInfo = username:password(步骤3中获取的用户名与密码) repoRelease = 私有依赖库地址(步骤2中获取的仓库地址) repoSnapshot = 保留为空 srcDir = 组件的目录路径,例如:C:\Users\xxxxxx\repository,用户自己指定 [nexus] nexusAddr=nexus地址 nexusPort=nexus端口 repoName=待迁移的nexus仓库名称 userName=nexus用户名 passwd=nexus密码
- 执行迁移脚本python uploadArtifact2.py。
- 进入私有库页面查看二进制包是否上传成功。