Skip to main content

A python-based CLI for Sonatype Nexus OSS 3

Project description

nexus3-cli

A python-based command-line interface and API client for Sonatype's Nexus OSS 3.

Build Status CodeFactor codecov Documentation Status

Features

  1. Compatible with Nexus 3 OSS
  2. Python API and command-line support
  3. Artefact management: list, upload, download, delete.
  4. Repository management:
    1. Create hosted and proxy.
    2. Create bower, maven, npm, nuget, pypi, raw, rubygems, yum.
    3. Content type validation, version and write policy.
    4. Delete.
  5. Groovy script management: list, upload, delete, run.

The actions above are performed using the Nexus REST API if the endpoint is available, otherwise a groovy script is used.

Please note that some Nexus 3 features are not currently supporter. Assistance implementing missing support is very welcome. Please have a look at the issues and contribution guidelines.

Installation

The nexus3-cli package is available on PyPi. You can install using pip/pip3:

pip install nexus3-cli

Usage

Command line

For a quick start, use the sonatype/nexus3 Docker image:

docker run -d --rm -p 8081:8081 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.

If you haven't changed the default Nexus credentials, you can use it straight away; here's the list of default repositories:

$ nexus3 repo 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

The 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).

$ nexus3 login
Nexus OSS URL (http://localhost:8081):
Nexus admin username (admin):
Nexus admin password (admin123):

Create a Yum repository with read-only access:

$ nexus3 repo create hosted yum my-yum-repository --write=deny
Created repository: my-yum-repository

The CLI output can be filtered using standard *nix tools, e.g. using grep:

$ nexus3 repo list | grep my-yum-repository
Name                                     Format  Type    URL
----                                     ------  ----    ---
my-yum-repository                        yum     hosted  http://localhost:8081/repository/my-yum-repository

For all commands and options, run nexus3 -h.

API

See API documentation.

Development

The automated tests are configured in .travis.yml. To run tests locally, install the package with test dependencies and run pytest:

pip install -e .[test]
pytest -m 'not integration'

Integration tests require a local Nexus instance listening on 8081 or as configured in ~/.nexus-cli; the example configuration used for tests is in tests/fixtures/dot-nexus-cli.

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
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 objects created during tests will already exist.

Pull requests are welcome; please see CONTRIBUTING.md.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for nexus3-cli, version 1.0.2
Filename, size & hash File type Python version Upload date
nexus3_cli-1.0.2-py2.py3-none-any.whl (25.5 kB) View hashes Wheel py2.py3
nexus3-cli-1.0.2.tar.gz (21.3 kB) View hashes Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page