Filesystem Design - Local/Remote

resources works with 3 filesystem target types:

  1. LOCAL_RELATIVE

  2. LOCAL_CDN

  3. REMOTE_CDN

Most operations allow the user to specify which filesystem type the source/target files adhere to.

Operations also allow lots of mixing and matching for different inputs. For example patches may source previous build resources using LOCAL_RELATIVE but source latest from REMOTE_CDN.

LOCAL_RELATIVE

Reading/Writing resources using LOCAL_RELATIVE type will read/write files by following the resources RelativePath field specified in the ResourceGroup.

This is a regular file path:

e.g. A file at c:/build/folder1/hello.txt

If build is thought of as the base path would get a relative path in the form:

folder1/hello.txt

LOCAL_CDN

Reading/Writing resources using LOCAL_CDN type will read/write files by following the resources Location field specified in the ResourceGroup.

The location field is generated form checksums of the relative path and its data.

[First two chars of hashed name]/[Hashed Name]_[Data Checksum]

Hashed Name is generated from the Relative Path entry using Fowler-Noll-Vo hash function.

Data checksum is an md5 of the resource data

e.g. cc/cc00d34500ea7a31_f32613169b3491afb5d029828d269ff3

Files created this way mean that if a files content changes the filename also changes, even if the files relative path stayed the same.

REMOTE_CDN

Reading/Writing file resources using REMOTE_CDN do slightly different things, however in the future this may change if uploading is added to resources.

Reading resources using REMOTE_CDN will download the resource following the same naming rules as LOCAL_CDN.

Writing resources using REMOTE_CDN will save the resource in the same form as LOCAL_CDN but also carries out a compression. Resources are then ready to upload to a CDN.