Skip to content
  • Scott Wittenburg's avatar
    Pipelines: Temporary buildcache storage (#21474) · 5b0507cc
    Scott Wittenburg authored
    Before this change, in pipeline environments where runners do not have access
    to persistent shared file-system storage, the only way to pass buildcaches to
    dependents in later stages was by using the "enable-artifacts-buildcache" flag
    in the gitlab-ci section of the spack.yaml.  This change supports a second
    mechanism, named "temporary-storage-url-prefix", which can be provided instead
    of the "enable-artifacts-buildcache" feature, but the two cannot be used at the
    same time.  If this prefix is provided (only "file://" and "s3://" urls are
    supported), the gitlab "CI_PIPELINE_ID" will be appended to it to create a url
    for a mirror where pipeline jobs will write buildcache entries for use by jobs
    in subsequent stages.  If this prefix is provided, a cleanup job will be
    generated to run after all the rebuild jobs have finished that will delete the
    contents of the temporary mirror.  To support this behavior a new mirror
    sub-command has been added: "spack mirror destroy" which can take either a
    mirror name or url.
    
    This change also fixes a bug in generation of "needs" list for each job.  Each
    jobs "needs" list is supposed to only contain direct dependencies for scheduling
    purposes, unless "enable-artifacts-buildcache" is specified.  Only in that case
    are the needs lists supposed to contain all transitive dependencies.  This
    changes fixes a bug that caused the needs lists to always contain all transitive
    dependencies, regardless of whether or not "enable-artifacts-buildcache" was
    specified.
    5b0507cc