我知道artifactory使用基于校验和的存储,并且只存储一个工件的副本,即使我以不同的名称上传多个相同的副本。
由于我有许多版本匿名但可能相同的罐子的项目,我想知道是否有任何方法可以告诉我在多个ID下引用了哪些工件。
答案 0 :(得分:4)
虽然Artifactory没有提供此信息的现有功能,但使用Artifactory的REST-API的小脚本实际上很容易实现。
例如,您可以编写一个将校验和映射到文件的树步行器(使用Folder Info resource)(可以使用File Info resource获取文件校验和)。
或者如果您使用专业版Artifactory,您可以使用File List resource
检索存储库中所有工件的列表答案 1 :(得分:1)
这是针对PostGreSQL数据库运行的SQL。我还没有尝试过任何其他数据库。
select sha1_actual, node_name, node_path, repo, *
from nodes
where sha1_actual in
(
select sha1_actual
from nodes
where node_type != 0
group by sha1_actual
having count(1) > 1
)
order by sha1_actual
答案 2 :(得分:0)
#!/bin/bash
#
# search in artifactory, lists duplicates angelos@unix.gr
#
search=$1
if [ "X$search" == "X" ]
then
echo "$0 <search item>"
exit 1
else
search=`echo $search |sed -e 's/ /\%20/gi' `
search="*${search}*"
fi
USER=`whoami`
PASS=${PASS:-somepass}
CREDS=${USER}:${PASS}
ARTIFACTORY=https://artifactory.somesite.com/artifactory
curl -s -u ${CREDS} -o search.txt ${ARTIFACTORY}/api/search/artifact\?name=${search}
echo "List of all uris is in search.txt"
echo "All instances of $search follow"
echo "---------------------------------"
grep $search search.txt | grep -v pom | awk '{ print $3}' | xargs -i basename {} | sort | uniq -c | sort -rn