ci: restore ability to reproduce gitlab job failures (#33953)
This commit is contained in:
parent
8ea366b33f
commit
6411cbd803
1 changed files with 18 additions and 3 deletions
|
@ -1777,9 +1777,9 @@ def reproduce_ci_job(url, work_dir):
|
||||||
download_and_extract_artifacts(url, work_dir)
|
download_and_extract_artifacts(url, work_dir)
|
||||||
|
|
||||||
lock_file = fs.find(work_dir, "spack.lock")[0]
|
lock_file = fs.find(work_dir, "spack.lock")[0]
|
||||||
concrete_env_dir = os.path.dirname(lock_file)
|
repro_lock_dir = os.path.dirname(lock_file)
|
||||||
|
|
||||||
tty.debug("Concrete environment directory: {0}".format(concrete_env_dir))
|
tty.debug("Found lock file in: {0}".format(repro_lock_dir))
|
||||||
|
|
||||||
yaml_files = fs.find(work_dir, ["*.yaml", "*.yml"])
|
yaml_files = fs.find(work_dir, ["*.yaml", "*.yml"])
|
||||||
|
|
||||||
|
@ -1802,6 +1802,20 @@ def reproduce_ci_job(url, work_dir):
|
||||||
if pipeline_yaml:
|
if pipeline_yaml:
|
||||||
tty.debug("\n{0} is likely your pipeline file".format(yf))
|
tty.debug("\n{0} is likely your pipeline file".format(yf))
|
||||||
|
|
||||||
|
relative_concrete_env_dir = pipeline_yaml["variables"]["SPACK_CONCRETE_ENV_DIR"]
|
||||||
|
tty.debug("Relative environment path used by cloud job: {0}".format(relative_concrete_env_dir))
|
||||||
|
|
||||||
|
# Using the relative concrete environment path found in the generated
|
||||||
|
# pipeline variable above, copy the spack environment files so they'll
|
||||||
|
# be found in the same location as when the job ran in the cloud.
|
||||||
|
concrete_env_dir = os.path.join(work_dir, relative_concrete_env_dir)
|
||||||
|
os.makedirs(concrete_env_dir, exist_ok=True)
|
||||||
|
copy_lock_path = os.path.join(concrete_env_dir, "spack.lock")
|
||||||
|
orig_yaml_path = os.path.join(repro_lock_dir, "spack.yaml")
|
||||||
|
copy_yaml_path = os.path.join(concrete_env_dir, "spack.yaml")
|
||||||
|
shutil.copyfile(lock_file, copy_lock_path)
|
||||||
|
shutil.copyfile(orig_yaml_path, copy_yaml_path)
|
||||||
|
|
||||||
# Find the install script in the unzipped artifacts and make it executable
|
# Find the install script in the unzipped artifacts and make it executable
|
||||||
install_script = fs.find(work_dir, "install.sh")[0]
|
install_script = fs.find(work_dir, "install.sh")[0]
|
||||||
st = os.stat(install_script)
|
st = os.stat(install_script)
|
||||||
|
@ -1857,6 +1871,7 @@ def reproduce_ci_job(url, work_dir):
|
||||||
if repro_details:
|
if repro_details:
|
||||||
mount_as_dir = repro_details["ci_project_dir"]
|
mount_as_dir = repro_details["ci_project_dir"]
|
||||||
mounted_repro_dir = os.path.join(mount_as_dir, rel_repro_dir)
|
mounted_repro_dir = os.path.join(mount_as_dir, rel_repro_dir)
|
||||||
|
mounted_env_dir = os.path.join(mount_as_dir, relative_concrete_env_dir)
|
||||||
|
|
||||||
# We will also try to clone spack from your local checkout and
|
# We will also try to clone spack from your local checkout and
|
||||||
# reproduce the state present during the CI build, and put that into
|
# reproduce the state present during the CI build, and put that into
|
||||||
|
@ -1940,7 +1955,7 @@ def reproduce_ci_job(url, work_dir):
|
||||||
inst_list.append(" $ source {0}/share/spack/setup-env.sh\n".format(spack_root))
|
inst_list.append(" $ source {0}/share/spack/setup-env.sh\n".format(spack_root))
|
||||||
inst_list.append(
|
inst_list.append(
|
||||||
" $ spack env activate --without-view {0}\n\n".format(
|
" $ spack env activate --without-view {0}\n\n".format(
|
||||||
mounted_repro_dir if job_image else repro_dir
|
mounted_env_dir if job_image else repro_dir
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
inst_list.append(" - Run the install script\n\n")
|
inst_list.append(" - Run the install script\n\n")
|
||||||
|
|
Loading…
Reference in a new issue