Artifact registry formats
- Tier: Premium, Ultimate
- Offering: GitLab.com
- Status: Beta
A format is the package type a repository serves. Artifact registry supports several formats and their clients.
Supported package formats and clients
| Format | Clients |
|---|---|
| Maven | mvn, gradle, sbt |
| npm | npm, yarn, pnpm |
| Docker | Docker CLI, Podman |
| OCI | oras, Docker CLI, Podman |
Docker and OCI formats and repositories
Docker and OCI repositories use the same registry endpoints. The registry applies different push rules depending on the format:
- A Docker repository accepts container image manifests and manifests that carry a subject, such as a signature or an attestation that refers to an image.
- A Docker repository rejects an artifact that is neither, such as a Helm chart or a WebAssembly
module with an empty configuration. The push fails with
400 MANIFEST_INVALID. - An OCI repository accepts any manifest type.
- Both formats reject Docker manifest schema 1.
Choose Docker when you store container images. Choose OCI when you store artifacts that are not container images. Because the format is fixed at creation, moving an artifact between the two means creating a new repository.
Repository types
| Type | Availability |
|---|---|
| Hosted | Available for all four formats. |
| Remote | Available for all four formats. Proxies and caches one upstream registry. |
| Virtual | Not available in beta. A create request fails with 422 for every format. |
A remote repository proxies any registry URL you give it, over HTTPS. It is not limited to a list of public registries.
A repository whose upstream is Maven Central (repo1.maven.org or repo.maven.apache.org),
registry.npmjs.org, or registry-1.docker.io caches indefinitely. Those registries do not allow
a published artifact to be overwritten.
Deleting artifacts
- The management API deletes artifacts in every format.
- Maven has no client delete command, so Maven deletion always goes through the API.
- npm, Docker, and OCI can also delete from their own clients.
Republishing the same version
Behavior on a repeated version differs by format.
- npm rejects a version that already exists, with
409. - Maven accepts a re-upload when the content is byte-for-byte identical, and returns
409once it differs. A rebuilt JAR usually differs, so a repeated deploy of the same version usually fails. - Container tags can be pushed again. The tag moves to the new manifest.