A repository is the basic unit of storage in Galleon. Every repository has a name, a format, and a type.

Formats

The format defines which artifacts a repository stores and which protocol clients use to work with it.

FormatContentsTypical client
Docker (OCI)Container images, OCI artifacts (such as Helm charts)docker, crane, skopeo, helm
MavenJava libraries and other build artifactsmvn, gradle
GoGo modulesgo
npmnpm packagesnpm, yarn, pnpm
PyPIPython packagespip, uv, twine
RubyGemsRuby gemsgem, bundle
CargoRust cratescargo
rawArbitrary filescurl, a browser

Repository types

Two repository types are supported: hosted and proxy.

Hosted

A hosted repository stores the artifacts you publish: build results, internal libraries, release archives. The repository write policy defines what is allowed: overwriting published versions, first publication of each version only (what is published cannot be overwritten), or a complete write ban (the repository is read-only).

Proxy

A proxy repository is a caching mirror of an external registry, such as Maven Central or Docker Hub. On the first request an artifact is downloaded from the external registry and stored; subsequent requests are served from the cache. A proxy repository is read-only; use a hosted repository for publishing. See Proxying and caching for details.

Group repositories (several repositories under a single address) are not supported yet.

Repository address

Galleon works with the standard clients of each format. The client is configured with a repository address of the form:

https://<GALLEON_HOST>/repository/<REPOSITORY>/...

The exception is Docker (OCI) repositories: container clients access them without the /repository/ prefix, and an image address looks like <GALLEON_HOST>/<REPOSITORY>/<IMAGE>:<TAG>.

How to configure the client for each format is described in the User guide.

Components and assets

Repository content consists of components and assets:

  • Component — the unit of versioning: a package version, a tagged image, a Go module of a specific version.
  • Asset — an individual file belonging to a component: a package archive, a POM file, an image layer.

In raw repositories every individual file is a component of its own — its name is the full file path.

A container image follows the same model: the component is the tagged image, and its assets are the manifest and the layers. Layers are shared between images: a base layer of several images is stored once. Besides tagged images, a repository may hold manifests referenced only by their checksum — the content tree marks them as digest.

Identical content is stored only once: a file is identified by its checksum, and the same archive published to two repositories occupies space once. Space is freed once no reference to the content is left.

The web interface shows repository content as a tree of components and assets. Deleting artifacts is available there as well, subject to permissions, and for the Maven, npm, RubyGems, PyPI, and raw formats — uploading.

Starter set of repositories

On the first start with an empty database, Galleon creates a starter set of repositories: proxy mirrors of public registries (Maven Central, proxy.golang.org, the Go checksum database, Docker Hub) and hosted repositories for Maven (separate ones for releases without overwriting and for snapshot versions), Go, and container images.

The set is created only when the repository list is empty: a repository deleted from it does not reappear on restart. The proxy mirrors of public registries have anonymous read rights; they take effect once anonymous access is enabled (see Access control).

The exact contents of the set and the settings of each repository are described in Repositories of the Administration guide.