This is a lightweight artifacts repository with low memory footprint which can be used as a minimal replacement for
Nexus. It is able to cache artifacts from a remote repository
on a local filesystem volume and also to store them on a cloud storage bucket via go-cloud.
It can be deployed either as a side-car container to a Kubernetes build pod or as a standalone service.
The clean interval of 24 hours is the default, while the cache time doesn’t have a default. This means
that cleaning of the cache isn’t enabled by default.
[!NOTE]
For this to work the access times needs to be recorded in the file system used for caching. Typically it is.
If you do want cloud storage to be cleaned you can for example in the case of s3 add a lifecycle policy to
the bucket.
Supported Artifacts
This repository has been tested with maven and helm tools, but it can also store other artifacts.
Installing
Kubernetes
The repository service can be installed in a Kubernetes cluster using helm. First, you need to add the jenkins-x chart repository to your helm repositories:
When using an S3 compatible bucket deployed locally (like Minio, Ceph…) you might need to configure bucketrepo to trust the SSL certificate for the bucket.
In order to that, you can add AWS_CA_BUNDLE to envSecrets with path of the CA file, and mount that file using extraConfig that looks like this:
Bucket Repo
This is a lightweight artifacts repository with low memory footprint which can be used as a minimal replacement for Nexus. It is able to cache artifacts from a remote repository on a local filesystem volume and also to store them on a cloud storage bucket via go-cloud.
It can be deployed either as a side-car container to a Kubernetes build pod or as a standalone service.
Getting Started
Configuration
The default configuration enables only the local file cache:
The header (for example Bearer token authentication) and timeout can be modified for every remote repository:
The cloud storage can be enabled by providing a bucket URL:
Also the TLS and basic authentication can be configured with:
Note that the basic authentication is turned off when HTTPS is disabled.
You can make artifacts not used in a while be removed from disk storage (cloud storage is not touched):
The clean interval of 24 hours is the default, while the cache time doesn’t have a default. This means that cleaning of the cache isn’t enabled by default.
If you do want cloud storage to be cleaned you can for example in the case of s3 add a lifecycle policy to the bucket.
Supported Artifacts
This repository has been tested with
mavenandhelmtools, but it can also store other artifacts.Installing
Kubernetes
The repository service can be installed in a Kubernetes cluster using helm. First, you need to add the jenkins-x chart repository to your helm repositories:
You can now install the chart with:
S3 compatible buckets
When using an S3 compatible bucket deployed locally (like Minio, Ceph…) you might need to configure bucketrepo to trust the SSL certificate for the bucket.
In order to that, you can add
AWS_CA_BUNDLEto envSecrets with path of the CA file, and mount that file using extraConfig that looks like this:the certificate can be retrieved using:
the bucketUrl should look like this:
Locally
The repository can be started in a docker container usinged the latest released image:
Or it can be built and run with:
Maven Configuration
bucketrepocan be configured as a mirror by adding the following in~/.m2/settings.xmlfile:And as a repository by adding the following in the
pom.xmlfile:Acknowledgments
This project is originally based on nexus-minimal. Thank you atsman for creating that project.
License
MIT