217 lines
5.7 KiB
Django/Jinja
217 lines
5.7 KiB
Django/Jinja
#!/bin/bash
|
|
|
|
# variable section
|
|
ADMIN_USERNAME={{ NEXUS_ADMIN_USERNAME }}
|
|
ADMIN_PASSWORD={{ NEXUS_ADMIN_PASSWORD }}
|
|
NEXUS_URL={{ NEXUS_SERVICE_URL }}
|
|
|
|
REPO_USERNAME={{ NEXUS_REPO_USERNAME }}
|
|
REPO_PASSWORD={{ NEXUS_REPO_PASSWORD }}
|
|
REPO_EMAIL={{ NEXUS_REPO_EMAIL }}
|
|
|
|
DOCKER_REPO_BLOBSTORE={{ DOCKER_REPO_BLOBSTORE }}
|
|
# -----------------------------------------------------
|
|
# writable state
|
|
curl -k -X 'GET' \
|
|
''${NEXUS_URL}'/service/rest/v1/status/writable' \
|
|
-H 'accept: application/json'
|
|
|
|
|
|
Nexus_Health=$(curl -k -X 'GET' ''${NEXUS_URL}'/service/rest/v1/status/writable' -H 'accept: application/json' 2>/dev/null)
|
|
echo ${Nexus_Health}
|
|
|
|
until [ -z "$Nexus_Health" ]
|
|
do
|
|
Nexus_Health=$(curl -k -X 'GET' ''${NEXUS_URL}'/service/rest/v1/status/writable' -H 'accept: application/json' 2>/dev/null)
|
|
echo ${Nexus_Health}
|
|
echo "Waiting for nexus starting..."
|
|
echo ${TIME}
|
|
TIME=$((TIME+1))
|
|
echo
|
|
sleep 1
|
|
done
|
|
echo "nexus writable state is ok"
|
|
|
|
# get bootstrap password
|
|
BOOTSTRAP_ADMIN_PASSWORD=$(docker exec -i nexus cat /nexus-data/admin.password)
|
|
echo ${BOOTSTRAP_ADMIN_PASSWORD}
|
|
|
|
# change password
|
|
curl -k -X 'PUT' \
|
|
''${NEXUS_URL}'/service/rest/v1/security/users/admin/change-password' \
|
|
-u "admin:${BOOTSTRAP_ADMIN_PASSWORD}" \
|
|
-H 'accept: application/json' \
|
|
-H 'Content-Type: text/plain' \
|
|
-d ''${ADMIN_PASSWORD}''
|
|
|
|
# delete default repository
|
|
curl -k -X 'DELETE' \
|
|
''${NEXUS_URL}'/service/rest/v1/repositories/maven-releases' \
|
|
-u "${ADMIN_USERNAME}:${ADMIN_PASSWORD}" \
|
|
-H 'accept: application/json'
|
|
|
|
curl -k -X 'DELETE' \
|
|
''${NEXUS_URL}'/service/rest/v1/repositories/maven-snapshots' \
|
|
-u "${ADMIN_USERNAME}:${ADMIN_PASSWORD}" \
|
|
-H 'accept: application/json'
|
|
|
|
curl -k -X 'DELETE' \
|
|
''${NEXUS_URL}'/service/rest/v1/repositories/maven-central' \
|
|
-u "${ADMIN_USERNAME}:${ADMIN_PASSWORD}" \
|
|
-H 'accept: application/json'
|
|
|
|
curl -k -X 'DELETE' \
|
|
''${NEXUS_URL}'/service/rest/v1/repositories/maven-public' \
|
|
-u "${ADMIN_USERNAME}:${ADMIN_PASSWORD}" \
|
|
-H 'accept: application/json'
|
|
|
|
curl -k -X 'DELETE' \
|
|
''${NEXUS_URL}'/service/rest/v1/repositories/nuget.org-proxy' \
|
|
-u "${ADMIN_USERNAME}:${ADMIN_PASSWORD}" \
|
|
-H 'accept: application/json'
|
|
|
|
curl -k -X 'DELETE' \
|
|
''${NEXUS_URL}'/service/rest/v1/repositories/nuget-group' \
|
|
-u "${ADMIN_USERNAME}:${ADMIN_PASSWORD}" \
|
|
-H 'accept: application/json'
|
|
|
|
curl -k -X 'DELETE' \
|
|
''${NEXUS_URL}'/service/rest/v1/repositories/nuget-hosted' \
|
|
-u "${ADMIN_USERNAME}:${ADMIN_PASSWORD}" \
|
|
-H 'accept: application/json'
|
|
|
|
# disable anonymous access
|
|
curl -k -X 'PUT' \
|
|
''${NEXUS_URL}'/service/rest/v1/security/anonymous' \
|
|
-u "${ADMIN_USERNAME}:${ADMIN_PASSWORD}" \
|
|
-H 'accept: application/json' \
|
|
-H 'Content-Type: application/json' \
|
|
-d '{
|
|
"enabled": false
|
|
}'
|
|
|
|
# activate realms
|
|
curl -k -X 'PUT' \
|
|
''${NEXUS_URL}'/service/rest/v1/security/realms/active' \
|
|
-u "${ADMIN_USERNAME}:${ADMIN_PASSWORD}" \
|
|
-H 'accept: application/json' \
|
|
-H 'Content-Type: application/json' \
|
|
-d '[
|
|
"DockerToken",
|
|
"NexusAuthenticatingRealm",
|
|
"NexusAuthorizingRealm"
|
|
]'
|
|
|
|
# create role
|
|
curl -k -X 'POST' \
|
|
''${NEXUS_URL}'/service/rest/v1/security/roles' \
|
|
-u "${ADMIN_USERNAME}:${ADMIN_PASSWORD}" \
|
|
-H 'accept: application/json' \
|
|
-H 'Content-Type: application/json' \
|
|
-d '{
|
|
"id": "repo-admin",
|
|
"name": "repo-admin",
|
|
"description": "all repository admin",
|
|
"privileges": [
|
|
"nx-repository-admin-*-*-*"
|
|
]
|
|
}'
|
|
|
|
# create user
|
|
curl -k -X 'POST' \
|
|
''${NEXUS_URL}'/service/rest/v1/security/users' \
|
|
-u "${ADMIN_USERNAME}:${ADMIN_PASSWORD}" \
|
|
-H 'accept: application/json' \
|
|
-H 'Content-Type: application/json' \
|
|
-d '{
|
|
"userId": "'${REPO_USERNAME}'",
|
|
"firstName": "'${REPO_USERNAME}'",
|
|
"lastName": "afranet",
|
|
"emailAddress": "'${REPO_EMAIL}'",
|
|
"password": "'${REPO_PASSWORD}'",
|
|
"status": "active",
|
|
"roles": [
|
|
"repo-admin",
|
|
"nx-anonymous"
|
|
]
|
|
}'
|
|
|
|
curl -k -X 'POST' \
|
|
''${NEXUS_URL}'/service/rest/v1/blobstores/file' \
|
|
-u "${ADMIN_USERNAME}:${ADMIN_PASSWORD}" \
|
|
-H 'accept: application/json' \
|
|
-H 'Content-Type: application/json' \
|
|
-d '{
|
|
"softQuota": {
|
|
"type": "spaceRemainingQuota",
|
|
"limit": 102400
|
|
},
|
|
"path": "'${DOCKER_REPO_BLOBSTORE}'",
|
|
"name": "'${DOCKER_REPO_BLOBSTORE}'"
|
|
}'
|
|
|
|
# create docker proxy repository
|
|
curl -k -X 'POST' \
|
|
''${NEXUS_URL}'/service/rest/v1/repositories/docker/proxy' \
|
|
-u "${ADMIN_USERNAME}:${ADMIN_PASSWORD}" \
|
|
-H 'accept: application/json' \
|
|
-H 'Content-Type: application/json' \
|
|
-d '{
|
|
"name": "hub",
|
|
"online": true,
|
|
"storage": {
|
|
"blobStoreName": "'${DOCKER_REPO_BLOBSTORE}'",
|
|
"strictContentTypeValidation": true
|
|
},
|
|
"cleanup": {
|
|
"policyNames": [
|
|
"string"
|
|
]
|
|
},
|
|
"proxy": {
|
|
"remoteUrl": "https://mirror.gcr.io",
|
|
"contentMaxAge": 1440,
|
|
"metadataMaxAge": 1440
|
|
},
|
|
"negativeCache": {
|
|
"enabled": true,
|
|
"timeToLive": 1440
|
|
},
|
|
"httpClient": {
|
|
"blocked": false,
|
|
"autoBlock": true
|
|
},
|
|
"routingRule": "string",
|
|
"docker": {
|
|
"v1Enabled": true,
|
|
"forceBasicAuth": false,
|
|
"httpPort": 8090
|
|
},
|
|
"dockerProxy": {
|
|
"indexType": "HUB"
|
|
}
|
|
}'
|
|
|
|
# check all repositories
|
|
curl -k -X 'GET' \
|
|
''${NEXUS_URL}'/service/rest/v1/repositories' \
|
|
-u "${ADMIN_USERNAME}:${ADMIN_PASSWORD}" \
|
|
-H 'accept: application/json'
|
|
|
|
# check all blobstore
|
|
curl -k -X 'GET' \
|
|
''${NEXUS_URL}'/service/rest/v1/blobstores' \
|
|
-u "${ADMIN_USERNAME}:${ADMIN_PASSWORD}" \
|
|
-H 'accept: application/json'
|
|
|
|
# check all users and roles
|
|
curl -k -X 'GET' \
|
|
''${NEXUS_URL}'/service/rest/v1/security/users' \
|
|
-u "${ADMIN_USERNAME}:${ADMIN_PASSWORD}" \
|
|
-H 'accept: application/json'
|
|
|
|
curl -k -X 'GET' \
|
|
''${NEXUS_URL}'/service/rest/v1/security/roles' \
|
|
-u "${ADMIN_USERNAME}:${ADMIN_PASSWORD}" \
|
|
-H 'accept: application/json'
|