Storage

The storage service stores artifacts that have been built. Storage is typically handled by an S3-compatible storage provider. Currently, we are using Wasabi for this, because they do not charge a fee for egress. Depending on configuration, artifacts may be served directly from the storage service.

The storage interactions are implemented in the buildsrs_storage crate.

Interactions

graph BT
    storage[Storage]
    backend[Backend]

    backend --> storage

    click backend "./backend.html"

The storage crate itself is not a component that can be deployed, it is merely library which allows for connecting to a storage provider.

The only component that directly interacts with the storage service is the backend. However, when clients retrieve crate artifacts, they may be served directly from storage.

Dependencies

graph BT
    storage[buildsrs_storage]
    common[buildsrs_common]
    backend[buildsrs_backend]

    backend-->storage
    storage-->common

    click storage "/rustdoc/buildsrs_storage"
    click common "/rustdoc/buildsrs_common"
    click backend "/rustdoc/buildsrs_backend"

Features

NameDescription
s3Allows using a S3-compatible storage.
filesystemAllows using a filesystem-backed storage.
cacheEnables an in-memory cache layer for storage assets.
optionsCommand-line options parser for storage.
tempTemporary storage creation.

By default, the filesystem, s3, options and cache features are enabled.