handle auto push errors

This commit is contained in:
dberenbaum
2024-03-05 09:44:48 -05:00
committed by Dave Berenbaum
parent 0001cc3a4b
commit cf9855af45
2 changed files with 29 additions and 7 deletions
+15 -6
View File
@@ -677,7 +677,13 @@ class BaseExecutor(ABC):
git_remote = os.getenv(
DVC_EXP_GIT_REMOTE, exp_config.get("git_remote", "origin")
)
try:
cls._validate_remotes(dvc, git_remote)
except DvcException as exc:
logger.warning("Failed to validate remotes. Disabling auto push: %s", exc)
yield
return
yield
cls._auto_push(dvc, git_remote)
@@ -689,21 +695,24 @@ class BaseExecutor(ABC):
run_cache=True,
):
from dvc.ui import ui
from dvc.utils import format_link
branch = dvc.scm.get_ref(EXEC_BRANCH, follow=False)
try:
ui.write(
f"Auto pushing experiment to '{git_remote}'. You can cancel the push "
"with CTRL+C. If you need to push your experiment again, you can "
f"retry later using `dvc exp push`",
link = format_link(
"https://dvc.org/doc/user-guide/experiment-management/sharing-experiments"
)
ui.write(
f"Pushing experiment to '{git_remote}'. Cancel with CTRL+C. "
f"See {link} for more info."
)
try:
dvc.experiments.push(
git_remote,
branch,
push_cache=push_cache,
run_cache=run_cache,
)
except BaseException as exc: # noqa: BLE001
except DvcException as exc:
logger.warning(
(
"Something went wrong while auto pushing experiment "
+13
View File
@@ -409,3 +409,16 @@ def test_auto_push_on_save(
dvc.experiments.save(name=exp_name, force=True)
assert first(dvc.experiments.push(name=exp_name, git_remote=remote)) == expected_key
def test_auto_push_misconfigured(
tmp_dir, scm, dvc, git_upstream, local_remote, exp_stage, caplog
):
with dvc.config.edit() as conf:
conf["exp"]["auto_push"] = True
conf["exp"]["git_remote"] = "notfound"
exp_name = "foo"
with caplog.at_level(logging.WARNING, logger="dvc"):
dvc.experiments.run(exp_stage.addressing, params=["foo=2"], name=exp_name)
assert "Failed to validate remotes" in caplog.text