Interface ArtifactPathBuilder

  • All Known Implementing Classes:
    ArtifactPathBuilderFactoryImpl.ArtifactPathBuilderForTemporaryStorage, ArtifactPathBuilderImpl

    public interface ArtifactPathBuilder
    Builds artifact paths. Can build either relative paths (relative to an unknown root artifact storage directory) or absolute paths, depending on how the specific instance is configured. Objects implementing this interface can be obtained and configured using the StorageLocationService.

    An artifact path can have two formats, a plan-oriented format and a global format. The plan-oriented format groups artifacts by the plans that produced them. The global format is independent of the plan. The global format may be used when an artifact needs to survive longer than the plan that created it.

    The plan oriented format looks like this:

     [artifact-root] / [chain-storage-tag] / [job-part] / [build-part] / [label-part]
     

    Where:

    • [chain-storage-tag] is the chain's immutable storage tag (eg. "PROJA-PLAN1" or "plan-61257948" depending on when the plan was created).
    • [job-part] is either the partial job key (eg. "JOB14") or the value "shared" for shared artifacts.
    • [build-part] is the build number prefixed with the string "build-".
    • [label-part] is a sanitised version of the artifact label specified by the user in the artifact definition.

    Here are some examples of plan-oriented paths:

     PROJA-PLAN1/JOB14/build-00035/my-non-shared-artifact
     PROJA-PLAN1/shared/build-00035/my-shared-artifact
     plan-61257948/JOB14/build-00035/my-non-shared-artifact
     plan-61257948/shared/build-00035/my-shared-artifact
     

    The global format looks like this:

     [artifact-root] / globalStorage / [artifact-id]
     

    Where [artifact-id] is the plain database id of the artifact.

    for example:

     globalStorage/5898243
     
    • Method Detail

      • getRootPath

        String getRootPath()
        Returns the root artifact storage path that this instance is using to build absolute paths, or null if this instance is configured to build relative paths.
      • getTemporaryPath

        String getTemporaryPath()
        Returns a path that can be used for temporary storage underneath the artifact root storage path.
      • getArtifactPath

        String getArtifactPath​(Artifact artifact)
        Returns a plan-oriented or global storage path for the supplied artifact, based on the return value of artifact.isGloballyStored().
      • getPlanOrientedArtifactPath

        String getPlanOrientedArtifactPath​(PlanResultKey planResultKey,
                                           @Nullable
                                           @Nullable ImmutableArtifactDefinitionBase artifactDefinition)
        Always returns a plan-oriented path, never a global storage path. ie. returns [artifact-root] / [chain-storage-tag] / [job-part] / [build-part] / [label-part] [job-part] will be "shared" if the artifact is shared or if planResultKey points to a chain rather than a job. [label-part] will be omitted if artifactDefinition is null.
      • getEntityOrientedArtifactPath

        String getEntityOrientedArtifactPath​(ResultKey resultKey,
                                             @Nullable
                                             @Nullable ImmutableArtifactDefinitionBase artifactDefinition)
        Always returns a entity-oriented path, never a global storage path. ie. returns [artifact-root] / [chain-storage-tag] / [job-part] / [build-part] / [label-part] [job-part] will be "shared" if the artifact is shared or if planResultKey points to a chain rather than a job. [label-part] will be omitted if artifactDefinition is null.
      • getChainPath

        String getChainPath​(PlanKey planKey)
        Returns [artifact-root] / [chain-storage-tag]
      • getJobOrSharedPath

        String getJobOrSharedPath​(PlanKey planKey)
        Returns [artifact-root] / [chain-storage-tag] / [job-part] [job-part] will be "shared" if the parameter points to a chain rather than a job.
      • getBuildPath

        String getBuildPath​(PlanResultKey planResultKey)
        Returns [artifact-root] / [chain-storage-tag] / [job-part] / [build-part] [job-part] will be "shared" if the parameter points to a chain rather than a job.