mirror of
https://git.yoctoproject.org/meta-arm
synced 2026-04-20 11:29:54 +00:00
CI: add CI_CLEAN_REPOS variable to allow cleaning the repo reference cache
If the repository reference directory gets corrupted it's not easy to wipe it, so add a variable CI_CLEAN_REPOS that if set in the pipeline will clean the clones and re-fetch them. Also, stop the fetch from detaching during the garbage collection, just in case it was a long-running GC that got killed that caused the corruption in the first place. Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Jon Mason <jon.mason@arm.com>
This commit is contained in:
@@ -58,7 +58,8 @@ stages:
|
||||
- $CI_PROJECT_DIR/work/build/tmp/work*/**/testimage/*
|
||||
|
||||
#
|
||||
# Prep stage, update repositories once
|
||||
# Prep stage, update repositories once.
|
||||
# Set the CI variable CI_CLEAN_REPOS=1 to refetch the respositories from scratch
|
||||
#
|
||||
update-repos:
|
||||
extends: .setup
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
|
||||
import sys
|
||||
import os
|
||||
import shutil
|
||||
import subprocess
|
||||
import pathlib
|
||||
|
||||
@@ -34,9 +35,14 @@ if __name__ == "__main__":
|
||||
|
||||
for repo in repositories:
|
||||
repodir = base_repodir / repo_shortname(repo)
|
||||
|
||||
if "CI_CLEAN_REPOS" in os.environ:
|
||||
print("Cleaning %s..." % repo)
|
||||
shutil.rmtree(repodir, ignore_errors=True)
|
||||
|
||||
if repodir.exists():
|
||||
print("Updating %s..." % repo)
|
||||
subprocess.run(["git", "-C", repodir, "fetch"], check=True)
|
||||
subprocess.run(["git", "-C", repodir, "-c", "gc.autoDetach=false", "fetch"], check=True)
|
||||
else:
|
||||
print("Cloning %s..." % repo)
|
||||
subprocess.run(["git", "clone", "--bare", repo, repodir], check=True)
|
||||
|
||||
Reference in New Issue
Block a user