A python-based CLI for Sonatype Nexus OSS 3
A python-based command-line interface and API client for Sonatype's Nexus OSS 3.
- Compatible with Nexus 3 OSS
- Python API and command-line support.
- Artefact management: list, delete, bulk upload and download.
- Repository management:
- Create hosted and proxy.
- Create apt, bower, docker, maven, npm, nuget, pypi, raw, rubygems, yum.
- Content type validation, version and write policy.
- Groovy script management: list, upload, delete, run.
- Clean-up policy management: create, list.
- Task management: list, run, show stop.
- Security management: realms.
- Blob store management: list, show, create, delete, update (API only).
The actions above are performed using the Nexus REST API if the endpoint is available, otherwise a groovy script is used.
The nexus3-cli package is available on PyPi. You can install using pip/pip3:
pip install nexus3-cli
There's also a docker image with nexus3-cli pre-installed.
Enable Groovy scripts
Some of the functionality in this client was written before the Nexus REST API exposed the necessary endpoints. For this reason, you may need to enable Groovy script execution in your instance.
If you decide to leave groovy scripts disabled in your Nexus 3 instance, you need to disable its
use in this client. This can be done by editing the
~/.nexus-cli configuration and changing
false. Alternatively, you can export the
For a quick start, use the sonatype/nexus3 Docker image:
docker run -d --rm -p 127.0.0.1:8081:8081 --name nexus sonatype/nexus3
Nexus will take a little while to start-up the first time you run it. You can tell when it's available by looking at the Docker instance logs or browsing to http://localhost:8081.
On older versions of the nexus3 Docker image, the default
admin password is
admin123; on newer versions it's automatically generated and you can find it
docker exec nexus cat /nexus-data/admin.password.
login command will store the service URL and your credentials in
~/.nexus-cli (warning: restrictive file permissions are set but the contents
are saved in plain-text).
Setup CLI credentials:
$ nexus3 login Nexus OSS URL (http://localhost:8081): Nexus admin username (admin): Nexus admin password (admin123): Verify server certificate (True): Configuration saved to /Users/thiago/.nexus-cli
$ nexus3 repository list Name Format Type URL maven-snapshots maven2 hosted http://localhost:8081/repository/maven-snapshots maven-central maven2 proxy http://localhost:8081/repository/maven-central nuget-group nuget group http://localhost:8081/repository/nuget-group nuget.org-proxy nuget proxy http://localhost:8081/repository/nuget.org-proxy maven-releases maven2 hosted http://localhost:8081/repository/maven-releases nuget-hosted nuget hosted http://localhost:8081/repository/nuget-hosted maven-public maven2 group http://localhost:8081/repository/maven-public
Create a repository:
nexus3 repository create hosted raw reponame
Do a recursive directory upload:
$ mkdir -p /tmp/some/deep/test/path $ touch /tmp/some/deep/test/file.txt /tmp/some/deep/test/path/other.txt $ cd /tmp; nexus3 up some/ reponame/path/ Uploading some/ to reponame/path/ [################################] 2/2 - 00:00:00 Uploaded 2 files to reponame/path/
Nota Bene: nexus3-cli interprets a path ending in
/ as a directory.
List repository contents:
$ nexus3 ls reponame/path/ path/some/deep/test/path/other.txt path/some/deep/test/file.txt
For all commands, subcommands and options, run
See API documentation.
The automated tests are configured in
.gitlab-ci.yml. To run tests locally,
install the package with test dependencies and run pytest:
pip install [--user] -e .[test] pip install [--user] pytest faker pytest -m 'not integration'
Integration tests require a local Nexus instance listening on 8081 or as
~/.nexus-cli. The configuration file can be created using
docker run -d --rm -p 127.0.0.1:8081:8081 --name nexus sonatype/nexus3 ./tests/wait-for-nexus.sh # the Nexus instance takes a while to be ready # use the random admin password generated by the Nexus container to login ./tests/nexus-login $(docker exec nexus cat /nexus-data/admin.password) pytest -m integration docker kill nexus
Nota Bene: if you re-run integration tests without re-creating or cleaning-up the dev Nexus instance, test will fail because some objects created during tests will already exist.
Pull requests are welcome; please see CONTRIBUTING.md.
Release history Release notifications | RSS feed
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Hashes for nexus3_cli-4.1.9-py3-none-any.whl