- Published on
Reposilite - Repository Manager
- Authors
- Name
- Bharath
Reposilite
What is a Repository Manager?
A repository manager is a server application designed to manage repositories of binary components. To publish build dependencies to a central repository and have it hosted in internal network, we will need a Repository Manager.
There are many repository managers in the market. JFrog Artifactory and Nexus are most used tools.
How to choose?
My requirement for Repository Manager is as follows,
- Hosting automation framework dependency
- Support build output of around 6 jars
- Allow versioning of dependency
- Offer snapshots and releases
- Have admin and user level privileges
- Offer dockerized setup
Reposilite checked all of my items. It is a lightweight repository manager for Java based projects.
Reposilite Setup
Installation is easy with minimal steps. I performed setup using Docker.
Ensure to link data folder as externally mounted volume to avoid data loss.
docker run -it -v reposilite-data:/app/data -p 80:80 dzikoysk/reposilite
It is better to configure the server using a cdn file. This allows user to pre-define the configuration with minimal command-line updates.
User Management
We can access the CLI either via interactive mode or browser. Logged in user needs to have relevant privileges.
Generate token for new users and save them locally. If you wish to revoke token, it can be done as well.
Private Repositories
We can make certain repositories private and access driven. And have other repositories public. This will be particularly helpful to mask unauthorized access.
Refer private and hidden repositories setup
Deploy
I've used maven to deploy by creating settings.xml with required access token. Ensure to update the release version prior to deploy phase.
mvn deploy
Access
After publishing version to server, we can share user token with read level access to team members. Version needs to be updated in client project. The username and access token needs be updated on settings.xml for dependencies to be resolved.
mvn -s settings.xml dependency:resolve