2011-09-16 11 views
3

アーティファクトはチェックサムベースのストレージを使用し、異なる名前で複数の同一のアーティファクトをアップロードしてもアーティファクトのコピーを1つだけ保存します。アーティファクトで重複したアーティファクトを検出する方法

私はバージョン匿名ではあるがおそらく同一のジャーを持つ多くのプロジェクトを持っているので、複数のIDの中でどのアーティファクトが参照されているか教えてくれるアーティファクトを得る方法があるかどうかを知りたい。

答えて

4

Artifactoryにはこの情報を提供する既存の機能はありませんが、ArtifactoryのREST-APIを使用する小さなスクリプトでは、実際には非常に簡単です。

例えば、チェックサムをファイルにマップするツリーウォーカー(Folder Info resourceを使用)を書くことができます(ファイルチェックサムはFile Info resourceを使用して取得できます)。

それとも、Artifactoryのプロバージョンを使用している場合、あなたはFile List resource

0
#!/bin/bash 

# 
# search in artifactory, lists duplicates [email protected] 
# 

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 
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 
関連する問題