根据工件的年龄删除指定路径下工件中的工件
Delete artifacts in artifactory under specified path based on how old they are
我需要为我在 artifactory 中的一个回购协议删除超过特定天数的工件版本。我的意思是假设我的人工 url 回购是:-
https://artifactory.mycompany.com/artifactory/myrepo/
并且在该 repo 下有几个名称模式为 abc-*-xyz 的文件夹,这意味着这些文件夹的完全限定路径为:-
https://artifactory.mycompany.com/artifactory/myrepo/abc-1-xyz
https://artifactory.mycompany.com/artifactory/myrepo/abc-2-xyz
https://artifactory.mycompany.com/artifactory/myrepo/abc-3-xyz
现在每个文件夹下都存储了我只想删除的实际版本化工件文件夹,这意味着整个版本文件夹,例如 url 中的两个:-
https://artifactory.mycompany.com/artifactory/myrepo/abc-1-xyz/ver_11
https://artifactory.mycompany.com/artifactory/myrepo/abc-1-xyz/ver_12
https://artifactory.mycompany.com/artifactory/myrepo/abc-2-xyz/ver_3
https://artifactory.mycompany.com/artifactory/myrepo/abc-2-xyz/ver_5
因此,如果这些文件夹 ver_* 超过 30 天,我想删除它们。并且只有这些 ver_* 文件夹不是 abc-*-xyz 等
我可以看到下面的 Whosebug 问题,并且能够使该问题适用于该用例,但无法为我的用例构建 AQL,因此我可以相应地拥有可用于删除我需要的内容的规范文件这里。
如有任何帮助帮助我构建 AQL 文件,然后是可以调用以进行实际删除的规范文件,我们将一如既往地不胜感激。
以下文件规范可以满足您的需求:
{
"files": [
{
"aql": {
"items.find": {
"repo": "myrepo",
"path": {"$match":"abc-*-xyz"},
"name": {"$match":"ver_*"},
"type": "folder",
"$or": [
{
"$and": [
{
"created": { "$before":"7d" }
}
]
}
]
}
}
}
]
}
以上文件规范找到所有符合以下条件的文件夹:
- 它们在 my-repo 存储库下。
- 它们位于名称与 abc-*-xyz 匹配且位于存储库根目录的文件夹中。
- 他们的名字匹配ver_*
- 创建时间超过 7 天。
要删除此文件规范找到的所有文件夹,请执行以下操作。
- 创建文件规范并根据需要命名。为了这个例子,我们称它为 delete-folders-spec。
- 从您的终端,运行 以下 JFrog CLI 命令,同时位于与 delete-folders-spec
相同的目录中
jfrog rt del --spec delete-folders-spec
可以通过在命令中使用 --quiet=true 来解决,因为没有它它会卡住,如下图所示:
我需要为我在 artifactory 中的一个回购协议删除超过特定天数的工件版本。我的意思是假设我的人工 url 回购是:-
https://artifactory.mycompany.com/artifactory/myrepo/
并且在该 repo 下有几个名称模式为 abc-*-xyz 的文件夹,这意味着这些文件夹的完全限定路径为:-
https://artifactory.mycompany.com/artifactory/myrepo/abc-1-xyz
https://artifactory.mycompany.com/artifactory/myrepo/abc-2-xyz
https://artifactory.mycompany.com/artifactory/myrepo/abc-3-xyz
现在每个文件夹下都存储了我只想删除的实际版本化工件文件夹,这意味着整个版本文件夹,例如 url 中的两个:-
https://artifactory.mycompany.com/artifactory/myrepo/abc-1-xyz/ver_11
https://artifactory.mycompany.com/artifactory/myrepo/abc-1-xyz/ver_12
https://artifactory.mycompany.com/artifactory/myrepo/abc-2-xyz/ver_3
https://artifactory.mycompany.com/artifactory/myrepo/abc-2-xyz/ver_5
我可以看到下面的 Whosebug 问题,并且能够使该问题适用于该用例,但无法为我的用例构建 AQL,因此我可以相应地拥有可用于删除我需要的内容的规范文件这里。
如有任何帮助帮助我构建 AQL 文件,然后是可以调用以进行实际删除的规范文件,我们将一如既往地不胜感激。
以下文件规范可以满足您的需求:
{
"files": [
{
"aql": {
"items.find": {
"repo": "myrepo",
"path": {"$match":"abc-*-xyz"},
"name": {"$match":"ver_*"},
"type": "folder",
"$or": [
{
"$and": [
{
"created": { "$before":"7d" }
}
]
}
]
}
}
}
]
}
以上文件规范找到所有符合以下条件的文件夹:
- 它们在 my-repo 存储库下。
- 它们位于名称与 abc-*-xyz 匹配且位于存储库根目录的文件夹中。
- 他们的名字匹配ver_*
- 创建时间超过 7 天。
要删除此文件规范找到的所有文件夹,请执行以下操作。
- 创建文件规范并根据需要命名。为了这个例子,我们称它为 delete-folders-spec。
- 从您的终端,运行 以下 JFrog CLI 命令,同时位于与 delete-folders-spec 相同的目录中
jfrog rt del --spec delete-folders-spec
可以通过在命令中使用 --quiet=true 来解决,因为没有它它会卡住,如下图所示: