diff --git a/bob/devtools/ci.py b/bob/devtools/ci.py index 20577e80572a2d0c939916afad322b87c2a7d055..a92ee09067c6e24a6e72425c5e808dfe0917175a 100644 --- a/bob/devtools/ci.py +++ b/bob/devtools/ci.py @@ -4,7 +4,9 @@ """Tools to help CI-based builds and artifact deployment.""" +import contextlib import distutils.version +import os import git @@ -295,3 +297,26 @@ def cleanup(dry_run, username, password, includes): pyver=True, includes=includes, ) + + +@contextlib.contextmanager +def temporary_cwd(path): + """Temporarily changes the working directory to a given path + + A context manager that temporarily changes the path to the given directory. + The working directory changes the working directory back to the starting + directory when it exits. + + + Args: + + path: The directory to temporarily change to + + """ + + oldpwd = os.getcwd() + os.chdir(path) + try: + yield + finally: + os.chdir(oldpwd) diff --git a/bob/devtools/data/gitlab-ci/nightlies.yaml b/bob/devtools/data/gitlab-ci/nightlies.yaml index 2b2ab48af485901dd308c3f2a49730c0d9832e77..0939e810f5b3eca3d685d137b36bbd709a3b918e 100644 --- a/bob/devtools/data/gitlab-ci/nightlies.yaml +++ b/bob/devtools/data/gitlab-ci/nightlies.yaml @@ -6,7 +6,8 @@ variables: PYTHONUNBUFFERED: "1" CONDA_ROOT: "${CI_PROJECT_DIR}/miniconda" BOOTSTRAP: "https://gitlab.idiap.ch/bob/bob.devtools/raw/master/bob/devtools/bootstrap.py" - TORCH_HOME: "${CI_PROJECT_DIR}/torch" + TORCH_HOME: "${CI_PROJECT_DIR}/.cache/torch" + PRE_COMMIT_HOME: "${CI_PROJECT_DIR}/.cache/pre-commit" # Definition of our build pipeline order @@ -26,7 +27,9 @@ stages: - conda activate base cache: paths: - - torch + - miniconda.sh + - ${TORCH_HOME} + - ${PRE_COMMIT_HOME} # Build targets diff --git a/bob/devtools/scripts/ci.py b/bob/devtools/scripts/ci.py index 0b4bbd3cb114878e52fb2b9019720b17b0f15d67..87ee623f843d7ef66ee4edafe9daa31fa5108583 100644 --- a/bob/devtools/scripts/ci.py +++ b/bob/devtools/scripts/ci.py @@ -19,6 +19,7 @@ from ..ci import ( select_conda_build_config, select_conda_recipe_append, select_user_condarc, + temporary_cwd, ) from ..constants import BASE_CONDARC, SERVER from ..deploy import deploy_conda_package, deploy_documentation @@ -730,8 +731,9 @@ def nightlies(ctx, order, dry_run): ) logger.info("Conda build recipe-append file: %s", append_file) - logger.info("Running checks") - ctx.invoke(check, root=clone_to) + logger.info("Running checks...") + with temporary_cwd(clone_to): + ctx.invoke(check) logger.info("Building") ctx.invoke(