cerbero: Never use cached cerbero git repo

Sometimes the git repo cached on the docker image gets corrupted on
Windows, in which case there is no way to clean things and resolve
that error. For example: https://gitlab.freedesktop.org/bilboed/gst-plugins-bad/-/jobs/5517037

```
++ cp -a C:/cerbero/.git .
cp: cannot create regular file `./.git/objects/pack/pack-cbdde9dc4dd07bff6761e6715e20d7c0abe62b9e.idx': Permission denied
cp: cannot create regular file `./.git/objects/pack/pack-cbdde9dc4dd07bff6761e6715e20d7c0abe62b9e.pack': Permission denied
```

Always delete the cached git repo and copy a pristine copy from the
image. This will also avoid accumulation of garbage in the git repo.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-ci/-/merge_requests/376>
This commit is contained in:
Nirbheek Chauhan 2020-11-12 14:03:26 +05:30
parent aead7b4eb7
commit c3b5693736

View file

@ -86,7 +86,15 @@ cerbero_before_script() {
pwd
ls -lha
# Copy cerbero git repo stored on the image
# Copy cerbero git repo stored on the image, delete an existing checkout if
# it exists. Sometimes the git dir gets corrupted on the Windows runner,
# and there's no way to clean it up because gitlab will keep trying to
# reuse the cached image.
if ! [[ -d ${CERBERO_HOST_DIR}/.git ]]; then
mv "${CERBERO_HOST_DIR}/.git" "${CERBERO_HOST_DIR}/.git-old"
# rm -rf is very slow on Windows, so do it in the background
rm -rf "${CERBERO_HOST_DIR}/.git-old" &
fi
cp -a "${CERBERO_HOST_DIR}/.git" .
git checkout .
git status
@ -114,6 +122,9 @@ cerbero_before_script() {
# a dirty builddir, or tarballs/pkg files, leftover files from an old
# cerbero commit, etc. Skip the things we actually need to keep.
time git clean -xdff -e cerbero_setup.sh -e manifest.xml -e localconf.cbc -e "${CERBERO_SOURCES}"
# Wait for the rm -rf from above if needed
[[ -n $(jobs -p) ]] && fg
}
cerbero_script() {