知识库

个人知识管理

用户工具

站点工具


如何批量上传pip包到nexus3搭建的pypi仓库

如何批量上传pip包到nexus3搭建的pypi仓库

前言

在内网搭建nexus3服务后,可以很容易的建立一个pypi仓库,默认管理页面上有上传pip包的按钮,但是一次只能传入一个包。

当我们使用python下载pip包用于离线开发的方法中提供命令缓存依赖包时,会发现其中可能有上百个依赖文件,一个一个上传不现实,好在我们可以通过编写脚本利用nexus3提供的api实现批量上传。

如下操作使用 nexus3 3.18.0 版本进行测试。

操作步骤

我们在ubuntu18.04下进行测试,利用bash和curl工具,编写脚本扫描特定目录下的所有pip包并上传。

确保安装curl

sudo apt install curl

nexus3上传的接口如下

POST /service/rest/v1/components

我们可以在nexus3的管理页面查看到API接口文档,在接口文档页面中测试上传接口,会显示完整的上传命令。

假设搭建的服务地址域名为 http://nexus3.developer.com(也可以是IP:端口号)

用户名为 admin, 密码为 admin123

对应的仓库名为 python

我们上传包的命令就是

curl -v -X POST -u $USERNAME:$PASSWORD $URL -H "accept: application/json" -H "Content-Type: multipart/form-data" -F "pypi.asset=@$FILE"

根据这个命令,我们编写脚本 nexus3-upload-pip.sh 脚本实现批量上传。

nexus3-upload-pip.sh
#!/bin/bash
#
# Usage:
#    ./nexus3-upload-pip.sh dir-to-upload
#
USERNAME=admin
PASSWORD=admin123
URL=http://nexus3.developer.com/service/rest/v1/components?repository=python
 
if [ ! -d $1 ];then
    echo "Error: $1 is not a directory"
fi
 
for pkg in `ls $1`
do
    FILE=$1/$pkg
    curl -v -X POST -u $USERNAME:$PASSWORD $URL -H "accept: application/json" -H "Content-Type: multipart/form-data" -F "pypi.asset=@$FILE"
done

参考引用

如何批量上传pip包到nexus3搭建的pypi仓库.txt · 最后更改: 2019/09/11 00:49 (外部编辑)