用于使用 Synopsys Black Duck Hub REST API 的软件包。
项目描述
概述
hub-rest-api-python 为 Hub REST API 提供 Python 绑定。
:warning: 最近在blackduck PyPi库中发现了CVE-2020-27589,这是一个中等严重性的安全缺陷,它影响版本 0.0.25 – 0.0.52,如果调用代码使用 upload_scan 或 download_project_scans 方法,可能会抑制证书验证。这些方法不强制执行证书验证。库中的其他方法不受影响。该缺陷已在版本 0.0.53 中修复。
使用blackduck 库的客户应升级到 0.0.53 或更高版本以实施修复。
寻呼和黑鸭 v2022.2
在 Black Duck v2022.2 中,REST API 引入了最大页面大小以保护系统资源使用。有关受影响的 API 端点的详细信息,请参阅 Synopsys 社区上的 Black Duck发行说明。这里 python 绑定的用户应该利用提供自动分页支持的客户端接口来充分利用这些端点。
旧的 HubInstance 接口和许多使用它的示例不执行分页,并且会由于 v2022.2 中的更改而中断。
1.0.0 中的新功能
引入新的客户端类。
为了提供更强大的长期连接、更快的性能和更好的整体体验,设计了一个新的客户端类。
它由Requests 会话 对象支持。用户在初始化时指定基本 URL、超时、重试、代理和 TLS 验证,并且这些属性在所有请求中保持不变。
在 REST API 级别,Client 类提供了一种一致的方式来发现和遍历公共资源,使用 生成器通过分页获取所有项目,并自动更新不记名令牌。
请参阅客户端与 HubInstance 比较 并阅读Hub REST API Python Wiki 上的客户端用户指南。
重要笔记
旧的 HubInstance(在 HubRestApi.py 中)保留其现有功能以实现向后兼容性,因此目前不利用 Client 类中的任何新功能。
我们相信新功能足够引人注目,可以强烈鼓励用户考虑从 HubInstance 迁移到 Client。请参阅客户端与 HubInstance 比较。
请试一试,让我们知道您的想法!
使用
pip3 install blackduck
from blackduck import Client
import logging
import os
logging.basicConfig(
level=logging.INFO,
format="[%(asctime)s] {%(module)s:%(lineno)d} %(levelname)s - %(message)s"
)
bd = Client(
token=os.environ.get('blackduck_token'),
base_url="https://your.blackduck.url",
# verify=False # TLS certificate verification
)
for project in bd.get_resource(name='projects'):
print(project.get('name'))
例子
显示如何使用新客户端的示例代码可以在示例/客户端文件夹中找到。
测试
使用pytest
git clone https://github.com/blackducksoftware/hub-rest-api-python.git
cd hub-rest-api-python
# optional but advisable: create/use virtualenv
# you should have 3.x+, e.g. Python 3.8.0+
pip3 install -r requirements.txt
pip3 install .
cd test
pytest
本地安装包
在测试新版本时执行此操作。
git clone https://github.com/blackducksoftware/hub-rest-api-python.git
cd hub-rest-api-python
pip3 install -r requirements.txt
pip3 install .
要卸载:
pip3 uninstall blackduck
我在哪里可以获得最新版本?
这个包在 PyPi 上可用:
pip3 install blackduck
文档
hub-rest-api-python 的文档可以在基础项目中找到: Hub REST API Python Wiki