如何从ARTIFACTORY UI中强制删除构建
问题描述:
在一些罕见的情况下,当构建信息文件被损坏或从文件存储中删除时,不可能从UI中删除构建。(rtfact - 21101)
解决步骤:
- 如果一个构建在DB中已经存在,可以通过将下面的system属性添加到artificial .system.properties(在$JFROG_HOME/artifactory/var/etc/artifactory下)并重新启动artifactory来启用强制保存:
artifactory.builds.db.force.override.enabled = true - 接下来的步骤是创建模拟原始构建信息的JSON内容。json文件。为此,您需要尝试删除构建,并在构件服务日志中获得警告消息:
2022-03-22T12:14:47.267Z [jfrt][警告][7336e8415738eb58] [o.a.s.f.l。SessionLockEntry:134] [http-nio-8081-exec-7] -可变项目的artifactory-build-info:maven- sample -2/104-1632391567030。Json的局部修改将被丢弃。 - 如上项所示,原始json文件被命名为
/ - 。Json(时间戳是epoch时间),我们将需要所有3个参数。
在上面的例子中,构建名称是“maven-example-2”,构建号是“104”,时间戳是“1632391567030”
为了简单起见,时间戳参数可以从UI的“Build Time”选项卡下检索,但是它应该根据以下格式进行修改:yyyy-MM-dd 'HH: mm: ss。SSSZ
(注意,毫秒不会显示在UI中,它们是epoch时间的最后3个数字)
- 最后,使用REST API部署构建信息,它将覆盖现有的缺失的构建,并允许它被删除:
curl -X PUT "http://localhost:8081/artifactory/api/build" -H "Content-Type: application/json" -d '{"name": "maven-example-2", "number": "104", "started": "2021-09-23T13:06:07.030+0300"}' -uadmin:密码注意“。030”取自原始文件名(104-1632391567030.json),“+0300”与UI中看到的相同。
在' artifactory-service.log '中,你也可以看到构建被覆盖了,例如:2022-03-22T13:07:54.623Z [jfrt] [INFO] [4703c4daebcba9a1] [a.r.i.。BuildInfoInterceptor:105] [http-nio-8081-exec-5] -覆盖构建路径'artifactory-build-info/maven-example-2/104-1632391567030。json的检测。 - 从‘artifact .system’中删除添加的system属性。然后重新启动Artifactory。