| Nexus |
MegaRepo |
|
| | |
| Blob store (file) | Blob store (file) | |
| Realms | JWT + RBAC | |
| | |
| Routing / Cleanup | Routing / Cleanup | |
| LDAP | LDAP | |
NEXUS=https://nexus.example.com
REPO=maven-releases
CT=""
while true; do
R=$(curl -s -u admin:pass "$NEXUS/service/rest/v1/components?repository=$REPO&continuationToken=$CT")
echo "$R" | jq -r '.items[].assets[].downloadUrl' >> urls.txt
CT=$(echo "$R" | jq -r '.continuationToken // empty')
[ -z "$CT" ] && break
done
while read -r url; do
path="${url#$NEXUS/repository/$REPO/}"
mkdir -p "export/$REPO/$(dirname "$path")"
curl -s -u admin:pass -o "export/$REPO/$path" "$url"
done < urls.txt
find export/maven-releases -type f | while read -r file; do
path="${file#export/maven-releases/}"
curl -s -u admin:admin123 -X PUT \
"http://megarepo:8080/repository/maven-releases/$path" \
--upload-file "$file"
done
npm publish my-package-1.0.0.tgz --registry http://megarepo:8080/repository/npm-hosted/
twine upload --repository-url http://megarepo:8080/repository/pypi-hosted/ dist/*
curl -u admin:admin123 -X PUT \
"http://megarepo:8080/repository/raw-hosted/path/to/file.zip" \
--upload-file file.zip
Maven (settings.xml)
<mirrors>
<mirror>
<id>megarepo</id>
<mirrorOf>*</mirrorOf>
<url>http://megarepo:8080/repository/maven-public/</url>
</mirror>
</mirrors>
npm (.npmrc)
registry=http://megarepo:8080/repository/npm-public/
pip (pip.conf)
[global]
index-url = http://megarepo:8080/repository/pypi-public/simple/
Docker
docker login megarepo.example.com:8080
docker push megarepo.example.com:8080/myimage:latest