Artifact Repository
An Artifact Repository
stores Versioned artifacts (or: packages), that are generally the output of a CI built. CD retrieves these artifacts to deploy them.
Artifact Repositories
should be Immutable, which means that once a specific Version of an artifact has been stored, that it cannot be replaced by another artifact with the same Version. After all, that would defeat the purpose of Versioning.
By Convention the structure of an Artifact Repository
is:
Groups
Artifacts
- Versions
- (Binary)
- Versions
Or in words:
- The
Group
generally refers to the organization that created the artifact, for example “com.oracle”, or “org.apache”. - A
Group
can have multipleArtifacts
, which refers to a specific component. To illustrate, for the group “org.apache” the name of the artifact could be “log4j”. - Every
Artifact
can have a number of versions, that should follow the Semantic Versioning guidelines. - Lastly, every
Version
contains the binary / package.
From the Group
, Artifact
, and Version
one can construct the [[URL]] to download the artifact, for example:
- `https://{RepositoryRoot}/{group.name1}/{artifact}/{version}/{group.name2}-{artifact}-{version}.zip
… where some implementations {group.name1}
use dots (.
), while others replace the dots with slashes. {group.name2}
always uses dots.