Artifactory开源版Jenkins构建留存规则失效:构建未自动删除如何解决
解决Jenkins+Artifactory开源版构建无法自动删除的问题
我来帮你排查下这个问题哈!你遇到的构建没被自动删除的情况,核心原因和Artifactory开源版的功能限制有关,咱们一步步来解决:
1. 先搞清楚核心限制:Artifactory开源版不支持自动构建清理
你在代码里配置的buildInfo.retention是给Artifactory传递构建保留规则,但只有Artifactory企业版才会自动执行这些规则,开源版没有内置的自动构建清理能力,所以即使你把规则发过去了,也不会触发删除动作。
2. 开源版下的可行解决方案
方式一:用Artifactory REST API手动/半自动删除
你可以通过调用Artifactory的API来删除指定构建,还能同时删除对应的产物。把这个命令加到Jenkins构建的后续步骤里(比如Shell脚本步骤),就能实现半自动清理:
# 删除指定构建并同时删除关联产物 curl -X DELETE "http://<你的Artifactory地址>/api/build/<你的构建名称>/<构建编号>?deleteArtifacts=true" -u <Artifactory用户名>:<密码>
如果想批量删除旧构建,还可以用API的builds端点来筛选删除,比如删除3天前的构建:
curl -X DELETE "http://<你的Artifactory地址>/api/build/<你的构建名称>?deleteArtifacts=true&days=3" -u <用户名>:<密码>
方式二:结合Jenkins自身的构建保留策略
让Jenkins自己管理构建的保留,同时同步删除Artifactory里的对应内容:
- 第一步:在Jenkins任务的配置页面,找到「构建后操作」,添加「Discard old builds」,设置你需要的保留规则(比如最大构建数2、保留天数2)。
- 第二步:在同一个「构建后操作」里,添加一个「Execute shell」(或Windows批处理)步骤,调用上面的Artifactory删除API,把当前构建的编号传入,这样Jenkins删除自身旧构建时,也同步删掉Artifactory里的对应构建和产物。
3. 检查现有代码的调整点
你当前的buildInfo.retention配置在开源版里是无效的,可以考虑移除或者保留(不影响,但也不会起作用)。另外,要确保执行删除操作的账号拥有Artifactory的delete和build_delete权限,否则API调用会失败。
内容的提问来源于stack exchange,提问作者ram dev
相关产品推荐
相关产品推荐

