基于python的sonatype nexus oss 3 cli

nexus3-cli的Python项目详细描述


nexus3客户端

sonatype的Nexus OSS 3的基于python的命令行接口和api客户端。

Build StatusCodeFactorcodecovDocumentation Status

notice:nexus3 cli的2.0.0版包含breaking changes,即将发布。如果您的应用程序使用nexuscli,我建议您:

  • 确定您的需求(例如:'nexus3-cli>=1.0.2,<2);和
  • 请查看2.0.0 branch上的更改以准备升级。

一旦2.0.0发布,1.0.x版本的开发和支持将停止。

功能

  1. 兼容Nexus 3 OSS
  2. python api和命令行支持
  3. 工艺品管理:列表,删除,批量上传和下载。
  4. 存储库管理:
    1. 创建托管和代理。
    2. 创建bower、maven、npm、nuget、pypi、raw、rubygems、yum。
    3. 内容类型验证、版本和写入策略。
    4. 删除。
  5. groovy脚本管理:列表、上传、删除、运行。

如果端点是 可用,否则使用groovy脚本。

请注意,某些Nexus3功能目前不受支持。援助 实施缺失的支持是非常受欢迎的。请看一下 issues 以及contribution guidelines

安装

pypi上提供了nexus3 cli包。您可以使用pip/pip3安装:

pip install nexus3-cli

用法

命令行

要快速开始,请使用sonatype/nexus3 Docker image

docker run -d --rm -p 127.0.0.1:8081:8081 --name nexus sonatype/nexus3

Nexus需要一段时间才能在第一次运行时启动。你可以 查看Docker实例日志或浏览 http://localhost:8081

在旧版本的nexus3 docker映像上,默认的admin密码是 admin123;在较新版本上,它是自动生成的,您可以找到它 通过运行docker exec nexus cat /nexus-data/admin.password

login命令将服务url和凭据存储在 ~/.nexus-cli(警告:已设置限制性文件权限,但内容 以纯文本保存)。

设置cli凭据:

$ nexus3 login
Nexus OSS URL (http://localhost:8081):
Nexus admin username (admin):
Nexus admin password (admin123):
Verify server certificate (True):

Configuration saved to /Users/thiago/.nexus-cli

列出存储库:

$ nexus3 repository list
Name              Format   Type     URL
maven-snapshots   maven2   hosted   http://localhost:8081/repository/maven-snapshots
maven-central     maven2   proxy    http://localhost:8081/repository/maven-central
nuget-group       nuget    group    http://localhost:8081/repository/nuget-group
nuget.org-proxy   nuget    proxy    http://localhost:8081/repository/nuget.org-proxy
maven-releases    maven2   hosted   http://localhost:8081/repository/maven-releases
nuget-hosted      nuget    hosted   http://localhost:8081/repository/nuget-hosted
maven-public      maven2   group    http://localhost:8081/repository/maven-public

创建存储库:

$ nexus3 repository create hosted raw reponame

执行递归目录上载:

$ mkdir -p /tmp/some/deep/test/path
$ touch /tmp/some/deep/test/file.txt /tmp/some/deep/test/path/other.txt
$ cd /tmp; nexus3 up some/ reponame/path/
Uploading some/ to reponame/path/
[################################] 2/2 - 00:00:00
Uploaded 2 files to reponame/path/

nota bene:nexus3 cli将以/结尾的路径解释为目录。

列出存储库内容:

$ nexus3 ls reponame/path/
path/some/deep/test/path/other.txt
path/some/deep/test/file.txt

对于所有命令、子命令和选项,请运行nexus3 -hCLI documentation

api

API documentation

从1.0.x升级

2.0.0版与1.0.0版相比有显著的API更改。总而言之:

  • 引入一个NexusConfig类来保持服务配置的独立性 从客户那里。
  • NexusClient没有long接受配置关键字参数;而是 获取一个NexusConfig实例。
  • 将所有cli代码移动到cli包,并将api代码移动到api包。
  • 已经重写了Repository类,以便于添加支持 对于所有存储库。请看上面链接的2.x的手册页。
  • 存储库上载方法已移动到其自己的模块中 nexuscli.api.repository.upload再次,使支持所有 储存库。
  • 已审阅文档以包含新主题并自动 在HTML输出中包含任何新类 read the docs
  • 单元测试已经过重构和重新组织,以便与 src结构。

开发

自动测试在.travis.yml中配置。要在本地运行测试, 安装带有测试依赖项的包并运行pytest:

pip install -e .[test]
pytest -m 'not integration'

集成测试需要本地nexus实例监听8081或 在~/.nexus-cli中配置;用于测试的示例配置位于 tests/fixtures/dot-nexus-cli

docker run -d --rm -p 127.0.0.1:8081:8081 --name nexus sonatype/nexus3
./tests/wait-for-nexus.sh  # the Nexus instance takes a while to be ready# use the random admin password generated by the Nexus container to login
./tests/nexus-login $(docker exec nexus cat /nexus-data/admin.password)
pytest -m integration
docker kill nexus

注意:如果您重新运行集成测试而不重新创建或清理 dev nexus实例,测试将失败,因为在测试期间创建的某些对象陆上通信线 已经存在。

欢迎拉取请求;请参见CONTRIBUTING.md

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java就是EJB2。0事务回滚撤消/还原数据库更改?   java密码编校记录器   java我应该如何格式化我的return语句,这样我就不会重复答案了?   java插入到二叉树中,无需对输入进行排序   java如何为安卓初始化instabug?   java是否可以在ApachePOIxWPF中设置默认表样式?   eclipse如何在java中获取字符的Unicode   java libDGX不绘制大尺寸的纹理   java一个线程可以在多个进程之间共享吗?如果是,怎么做?   windows 7 Java文件IO和“拒绝访问”错误   java为什么InstanceItem不调用而ViewPager不工作?   多线程如何在java中等待一组线程“真正”完成?   java(数组)中二进制到十进制转换的问题   在构造函数中将数组用作参数时出现java空指针错误   在Tomcat8中,java请求在高峰时间占用太多时间   java无法使用按钮实例化类   java如何在每个元素的末尾列出解析器组?   如何从Java中的字符串行提取特定术语?   获取运行时错误“java.lang.IllegalStateException:无法为安卓执行方法:onClick”