ci: remove --keep-stage flag (#49467)

logs are now copied from the install dir
This commit is contained in:
Ryan Krattiger 2025-03-15 03:41:25 -05:00 committed by GitHub
parent e35c5ec104
commit f32b5e572a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 22 additions and 29 deletions

View File

@ -6,6 +6,7 @@
import codecs import codecs
import json import json
import os import os
import pathlib
import re import re
import shutil import shutil
import stat import stat
@ -23,7 +24,6 @@
import spack import spack
import spack.binary_distribution as bindist import spack.binary_distribution as bindist
import spack.builder
import spack.concretize import spack.concretize
import spack.config as cfg import spack.config as cfg
import spack.environment as ev import spack.environment as ev
@ -33,6 +33,7 @@
import spack.paths import spack.paths
import spack.repo import spack.repo
import spack.spec import spack.spec
import spack.store
import spack.util.git import spack.util.git
import spack.util.gpg as gpg_util import spack.util.gpg as gpg_util
import spack.util.spack_yaml as syaml import spack.util.spack_yaml as syaml
@ -581,22 +582,25 @@ def copy_stage_logs_to_artifacts(job_spec: spack.spec.Spec, job_log_dir: str) ->
tty.debug(f"job spec: {job_spec}") tty.debug(f"job spec: {job_spec}")
try: try:
pkg_cls = spack.repo.PATH.get_pkg_class(job_spec.name) package_metadata_root = pathlib.Path(spack.store.STORE.layout.metadata_path(job_spec))
job_pkg = pkg_cls(job_spec) except spack.error.SpackError as e:
tty.debug(f"job package: {job_pkg}") tty.error(f"Cannot copy logs: {str(e)}")
except AssertionError:
msg = f"Cannot copy stage logs: job spec ({job_spec}) must be concrete"
tty.error(msg)
return return
stage_dir = job_pkg.stage.path # Get the package's archived files
tty.debug(f"stage dir: {stage_dir}") archive_files = []
for file in [ archive_root = package_metadata_root / "archived-files"
job_pkg.log_path, if archive_root.is_dir():
job_pkg.env_mods_path, archive_files = [f for f in archive_root.rglob("*") if f.is_file()]
*spack.builder.create(job_pkg).archive_files, else:
]: msg = "Cannot copy package archived files: archived-files must be a directory"
copy_files_to_artifacts(file, job_log_dir) tty.warn(msg)
build_log_zipped = package_metadata_root / "spack-build-out.txt.gz"
build_env_mods = package_metadata_root / "spack-build-env.txt"
for f in [build_log_zipped, build_env_mods, *archive_files]:
copy_files_to_artifacts(str(f), job_log_dir)
def copy_test_logs_to_artifacts(test_stage, job_test_dir): def copy_test_logs_to_artifacts(test_stage, job_test_dir):

View File

@ -427,7 +427,7 @@ def ci_rebuild(args):
# Arguments when installing the root from sources # Arguments when installing the root from sources
deps_install_args = install_args + ["--only=dependencies"] deps_install_args = install_args + ["--only=dependencies"]
root_install_args = install_args + ["--keep-stage", "--only=package"] root_install_args = install_args + ["--only=package"]
if cdash_handler: if cdash_handler:
# Add additional arguments to `spack install` for CDash reporting. # Add additional arguments to `spack install` for CDash reporting.
@ -464,8 +464,7 @@ def ci_rebuild(args):
job_spec.to_dict(hash=ht.dag_hash), job_spec.to_dict(hash=ht.dag_hash),
) )
# We generated the "spack install ..." command to "--keep-stage", copy # Copy logs and archived files from the install metadata (.spack) directory to artifacts now
# any logs from the staging directory to artifacts now
spack_ci.copy_stage_logs_to_artifacts(job_spec, job_log_dir) spack_ci.copy_stage_logs_to_artifacts(job_spec, job_log_dir)
# If the installation succeeded and we're running stand-alone tests for # If the installation succeeded and we're running stand-alone tests for

View File

@ -867,7 +867,7 @@ def test_push_to_build_cache(
logs_dir = scratch / "logs_dir" logs_dir = scratch / "logs_dir"
logs_dir.mkdir() logs_dir.mkdir()
ci.copy_stage_logs_to_artifacts(concrete_spec, str(logs_dir)) ci.copy_stage_logs_to_artifacts(concrete_spec, str(logs_dir))
assert "spack-build-out.txt" in os.listdir(logs_dir) assert "spack-build-out.txt.gz" in os.listdir(logs_dir)
dl_dir = scratch / "download_dir" dl_dir = scratch / "download_dir"
buildcache_cmd("download", "--spec-file", json_path, "--path", str(dl_dir)) buildcache_cmd("download", "--spec-file", json_path, "--path", str(dl_dir))

View File

@ -1,5 +1,3 @@
config: config:
build_stage:
- $spack/tmp/stage
install_tree: install_tree:
root: $spack/opt/spack root: $spack/opt/spack

View File

@ -8,13 +8,5 @@ ci:
tags: [spack] tags: [spack]
- build-job: - build-job:
tags: [ "macos-sequoia", "apple-clang-16", "aarch64-macos" ] tags: [ "macos-sequoia", "apple-clang-16", "aarch64-macos" ]
# after_script intended to ensure all stage files are properly cleaned up,
# including those that may have been created as read-only by `go mod`
# as part of installation of a golang package
# see: https://github.com/spack/spack/issues/49147
after_script-:
- - if [[ -d tmp ]] ; then chmod -R u+w tmp ; else echo tmp not found ; fi
- ./bin/spack clean -a
- build-job-remove: - build-job-remove:
image:: macos-run-on-metal image:: macos-run-on-metal