cache compose tests

This commit is contained in:
Elio Bischof
2025-06-19 12:00:35 +02:00
parent 3704a7e19a
commit 7de0417e76

View File

@@ -3,7 +3,7 @@
# Usage: ./run_or_skip.sh <Make target> <images> # Usage: ./run_or_skip.sh <Make target> <images>
# Example: ./run_or_skip.sh lint-force "img1;img2" # Example: ./run_or_skip.sh lint-force "img1;img2"
set -euox pipefail set -euo pipefail
if [ -z "$CACHE_DIR" ]; then if [ -z "$CACHE_DIR" ]; then
echo "CACHE_DIR is not set. Please set it to a valid directory." echo "CACHE_DIR is not set. Please set it to a valid directory."
@@ -23,10 +23,10 @@ get_image_ids() {
local id=$(docker image inspect "$img" --format='{{.Id}}' 2>/dev/null || true) local id=$(docker image inspect "$img" --format='{{.Id}}' 2>/dev/null || true)
if [[ -z $id ]]; then if [[ -z $id ]]; then
docker pull "$img" >/dev/null 2>&1 || true docker pull "$img" >/dev/null 2>&1 || true
id="$(docker image inspect "$img" --format='{{.Id}}' 2>/dev/null || true)" id=$(docker image inspect "$img" --format='{{.Id}}' 2>/dev/null || true)
fi fi
if [[ -z $id ]]; then if [[ -z $id ]]; then
id="$(docker image inspect "$img" --format='{{.Id}}' 2>/dev/null || true)" id=$(docker image inspect "$img" --format='{{.Id}}' 2>/dev/null || true)
fi fi
id=${id:-new-and-not-pullable-or-failed-to-build} id=${id:-new-and-not-pullable-or-failed-to-build}
id="${img}@${id}" id="${img}@${id}"
@@ -36,20 +36,28 @@ get_image_ids() {
echo "$ids" echo "$ids"
} }
OLD_DIGEST=$(cat "$DIGEST_FILE" 2>/dev/null || echo "") PREVIOUS_DIGEST=$(cat "$DIGEST_FILE" 2>/dev/null || echo "")
OLD_STATUS=$(echo "$OLD_DIGEST" | cut -d ';' -f1) PREVIOUS_STATUS=$(echo "$PREVIOUS_DIGEST" | cut -d ';' -f1)
OLD_IDS=$(echo "$OLD_DIGEST" | cut -d ';' -f2-99) PREVIOUS_IMAGE_IDS=$(echo "$PREVIOUS_DIGEST" | cut -d ';' -f2-99)
CURRENT_IMAGE_IDS=$(get_image_ids) CURRENT_IMAGE_IDS="$(get_image_ids)"
docker images if [[ "$PREVIOUS_IMAGE_IDS" == "$CURRENT_IMAGE_IDS" ]]; then
echo $CURRENT_IMAGE_IDS
if [[ "$OLD_IDS" == "$CURRENT_IMAGE_IDS" ]]; then
if [[ "$FORCE" == "true" ]]; then if [[ "$FORCE" == "true" ]]; then
echo "\$FORCE=$FORCE - Running $MAKE_TARGET despite unchanged images." echo "\$FORCE=$FORCE - Running $MAKE_TARGET despite unchanged images."
else else
echo "Skipping $MAKE_TARGET all images unchanged, returning cached status $OLD_STATUS" echo "Skipping $MAKE_TARGET all images unchanged, returning cached status $PREVIOUS_STATUS"
exit $OLD_STATUS exit $PREVIOUS_STATUS
fi fi
fi fi
echo "Images have changed"
echo
echo "PREVIOUS_IMAGE_IDS does not match CURRENT_IMAGE_IDS"
echo
echo "$PREVIOUS_IMAGE_IDS"
echo
echo "$CURRENT_IMAGE_IDS"
echo
docker images
echo
echo "Running $MAKE_TARGET..." echo "Running $MAKE_TARGET..."
set +e set +e
make -j $MAKE_TARGET make -j $MAKE_TARGET