我正在研究监视我的 Artifactory 是否有无效的许可证信息。换句话说,我想知道存储库是否上传了带有与注册许可证之一不匹配的许可证信息(属性artifactory.licenses )的项目( Admin -> Configuration > Licenses)
使用工件客户端 api 创建这样的工件的简单测试用例是:
File result = artifactory
.repository("sandbox")
.upload("com/google/guava/guava/14.0.1/guava-14.0.1.jar", jarFile)
.withProperty("artifactory.licenses", "NOTaLICENSE-1.0")
.doUpload()
有一个公共 REST API 可用于搜索许可证信息,该 API 可用于检测未批准或未批准的许可证信息,它似乎符合要求并找到不正确的工件:
curl -u "admin:password" -X GET "http://artifactory_server/artifactory/api/search/license?unapproved=0&approved=0"
{
"results" : [ {
"uri" : "http://artifactory_server/artifactory/sandbox/com/google/guava/guava/14.0.1/guava-14.0.1.jar",
"license" : "Unknown",
"found" : "",
"status" : "Unapproved"
} ]
}
但是,我宁愿使用用户插件来执行此操作(请参阅https://www.jfrog.com/confluence/display/RTF/User+Plugins),但我看不到如何从 Artifactory 获取相同的信息公共 API。
经过一些测试,我目前对公共 API(artifactory-papi)的理解是:
- 使用 Searches 服务http://repo.jfrog.org/artifactory/oss-releases-local/org/artifactory/artifactory-papi/5.4.4/artifactory-papi无法使用类似于 REST 上可用的许可证搜索-5.4.4-javadoc.jar!/org/artifactory/search/Searches.html )。
使用 Searches 服务中的 AQL 功能只能访问底层属性,无法确定它是否为“未知”。
items.find({"@artifactory.licenses" : "NOTaLICENSE-1.0"})
将返回我们不正确的工件,而
items.find({"@artifactory.licenses" : "Unknown"})
不会退回我们不正确的工件
- 没有返回注册许可证列表的 API。因此,没有可编写脚本的方法来将属性artifactory.licenses的值与注册的许可证相匹配
我正在考虑从用户插件调用 REST API,但这不可能:-)
欢迎任何想法。这是 Artifactory 5.4.6。