99 lines
3.0 KiB
Bash
99 lines
3.0 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# ====== 여기만 네 환경에 맞게 ======
|
|
NEXUS="http://localhost:18100" # 또는 http://localhost:18100 http://172.16.4.56:18100
|
|
REPO="maven-releases" # 가능하면 seed 전용 repo로 바꿔라 (maven-seed)
|
|
USER="admin"
|
|
PASS="Kamco2026!" # 실제 비번
|
|
# ===================================
|
|
|
|
# 압축 풀기
|
|
rm -rf m2repo offline-seed/m2repo
|
|
tar -xzf m2repo-seed.tgz
|
|
|
|
ROOT="./m2repo"
|
|
[ -d "$ROOT" ] || ROOT="./offline-seed/m2repo"
|
|
[ -d "$ROOT" ] || { echo "m2repo not found"; exit 1; }
|
|
|
|
LOGDIR="./upload-logs"
|
|
mkdir -p "$LOGDIR"
|
|
OKLOG="$LOGDIR/ok.txt"
|
|
FAILLOG="$LOGDIR/fail.txt"
|
|
RESP="$LOGDIR/resp.tmp"
|
|
LIST="$LOGDIR/version_dirs.txt"
|
|
: > "$OKLOG"
|
|
: > "$FAILLOG"
|
|
|
|
# 핵심: "버전 디렉토리(끝이 숫자/버전)"만 잡기 = m2repo/**/<artifact>/<version>
|
|
# depth 고정 대신: 'pom/jar/module'이 존재하는 디렉토리만 수집
|
|
find "$ROOT" -type f \( -name "*.pom" -o -name "*.jar" -o -name "*.module" \) -print0 \
|
|
| xargs -0 -n1 dirname \
|
|
| sort -u > "$LIST"
|
|
|
|
count="$(wc -l < "$LIST" | tr -d ' ')"
|
|
echo "Version dirs = $count"
|
|
[ "$count" -gt 0 ] || { echo "No version dirs found"; exit 1; }
|
|
|
|
upload_dir() {
|
|
local verDir="$1"
|
|
local rel="${verDir#${ROOT}/}"
|
|
|
|
# rel = group/path/artifact/version
|
|
local groupPath artifact version groupId
|
|
groupPath="$(echo "$rel" | awk -F/ '{for(i=1;i<=NF-2;i++) printf (i==NF-2? $i : $i "/")}')"
|
|
artifact="$(echo "$rel" | awk -F/ '{print $(NF-1)}')"
|
|
version="$(echo "$rel" | awk -F/ '{print $NF}')"
|
|
groupId="${groupPath//\//.}"
|
|
|
|
local pom jar mod
|
|
pom="$(ls -1 "$verDir"/*.pom 2>/dev/null | head -n 1 || true)"
|
|
jar="$(ls -1 "$verDir"/*.jar 2>/dev/null | head -n 1 || true)"
|
|
mod="$(ls -1 "$verDir"/*.module 2>/dev/null | head -n 1 || true)"
|
|
|
|
[ -z "$pom" ] && [ -z "$jar" ] && return 0
|
|
|
|
echo "UPLOAD: $groupId:$artifact:$version"
|
|
|
|
args=(
|
|
-sS -u "$USER:$PASS"
|
|
-X POST "$NEXUS/service/rest/v1/components?repository=$REPO"
|
|
-F "maven2.groupId=$groupId"
|
|
-F "maven2.artifactId=$artifact"
|
|
-F "maven2.version=$version"
|
|
)
|
|
|
|
n=1
|
|
if [ -n "$pom" ]; then
|
|
args+=( -F "maven2.asset${n}=@${pom}" -F "maven2.asset${n}.extension=pom" ); n=$((n+1))
|
|
fi
|
|
if [ -n "$jar" ]; then
|
|
args+=( -F "maven2.asset${n}=@${jar}" -F "maven2.asset${n}.extension=jar" ); n=$((n+1))
|
|
fi
|
|
if [ -n "$mod" ]; then
|
|
args+=( -F "maven2.asset${n}=@${mod}" -F "maven2.asset${n}.extension=module" ); n=$((n+1))
|
|
fi
|
|
|
|
http_code="$(curl -w "%{http_code}" -o "$RESP" "${args[@]}" || true)"
|
|
if [ "$http_code" = "204" ] || [ "$http_code" = "201" ]; then
|
|
echo "$groupId:$artifact:$version" >> "$OKLOG"
|
|
return 0
|
|
else
|
|
echo "FAIL $http_code $groupId:$artifact:$version" >> "$FAILLOG"
|
|
sed -e 's/\r$//' "$RESP" >> "$FAILLOG" || true
|
|
echo >> "$FAILLOG"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
fails=0
|
|
while IFS= read -r d; do
|
|
if ! upload_dir "$d"; then
|
|
fails=$((fails+1))
|
|
fi
|
|
done < "$LIST"
|
|
|
|
echo "DONE. ok=$(wc -l < "$OKLOG" | tr -d ' ') fail=$fails"
|
|
echo "OKLOG : $OKLOG"
|
|
echo "FAILLOG: $FAILLOG"
|