アーティファクトはチェックサムベースのストレージを使用し、異なる名前で複数の同一のアーティファクトをアップロードしてもアーティファクトのコピーを1つだけ保存します。アーティファクトで重複したアーティファクトを検出する方法
私はバージョン匿名ではあるがおそらく同一のジャーを持つ多くのプロジェクトを持っているので、複数のIDの中でどのアーティファクトが参照されているか教えてくれるアーティファクトを得る方法があるかどうかを知りたい。
アーティファクトはチェックサムベースのストレージを使用し、異なる名前で複数の同一のアーティファクトをアップロードしてもアーティファクトのコピーを1つだけ保存します。アーティファクトで重複したアーティファクトを検出する方法
私はバージョン匿名ではあるがおそらく同一のジャーを持つ多くのプロジェクトを持っているので、複数のIDの中でどのアーティファクトが参照されているか教えてくれるアーティファクトを得る方法があるかどうかを知りたい。
Artifactoryにはこの情報を提供する既存の機能はありませんが、ArtifactoryのREST-APIを使用する小さなスクリプトでは、実際には非常に簡単です。
例えば、チェックサムをファイルにマップするツリーウォーカー(Folder Info resourceを使用)を書くことができます(ファイルチェックサムはFile Info resourceを使用して取得できます)。
それとも、Artifactoryのプロバージョンを使用している場合、あなたはFile List resource
#!/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
を使用して、リポジトリ内のすべての成果物のリストを取得することができますここでは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