Normalize dockerfile paths for build and bake
This commit is contained in:
27
.github/workflows/docker-build-publish.yml
vendored
27
.github/workflows/docker-build-publish.yml
vendored
@@ -148,10 +148,33 @@ jobs:
|
|||||||
done <<< "$BUILD_ARGS"
|
done <<< "$BUILD_ARGS"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
normalize_path() {
|
||||||
|
local p="$1"
|
||||||
|
while [[ "$p" == ./* ]]; do
|
||||||
|
p="${p#./}"
|
||||||
|
done
|
||||||
|
if [ "$p" != "/" ]; then
|
||||||
|
p="${p%/}"
|
||||||
|
fi
|
||||||
|
printf '%s' "$p"
|
||||||
|
}
|
||||||
|
|
||||||
while read -r group; do
|
while read -r group; do
|
||||||
GROUP_COUNT=$(echo "$group" | jq 'length')
|
GROUP_COUNT=$(echo "$group" | jq 'length')
|
||||||
CONTEXT=$(echo "$group" | jq -r '.[0].context')
|
CONTEXT=$(echo "$group" | jq -r '.[0].context')
|
||||||
DOCKERFILE=$(echo "$group" | jq -r '.[0].dockerfile')
|
DOCKERFILE=$(echo "$group" | jq -r '.[0].dockerfile')
|
||||||
|
context_norm="$(normalize_path "$CONTEXT")"
|
||||||
|
dockerfile_norm="$(normalize_path "$DOCKERFILE")"
|
||||||
|
DOCKERFILE_FOR_BAKE="$DOCKERFILE"
|
||||||
|
DOCKERFILE_FOR_BUILD="$DOCKERFILE"
|
||||||
|
if [ -n "$context_norm" ] && [ "$context_norm" != "." ]; then
|
||||||
|
if [[ "$dockerfile_norm" == "$context_norm/"* ]]; then
|
||||||
|
DOCKERFILE_FOR_BAKE="${dockerfile_norm#$context_norm/}"
|
||||||
|
DOCKERFILE_FOR_BUILD="$dockerfile_norm"
|
||||||
|
elif [[ "$dockerfile_norm" != /* ]]; then
|
||||||
|
DOCKERFILE_FOR_BUILD="${context_norm}/${dockerfile_norm}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$GROUP_COUNT" -gt 1 ]; then
|
if [ "$GROUP_COUNT" -gt 1 ]; then
|
||||||
echo "==== Building $GROUP_COUNT images from $DOCKERFILE (bake) ===="
|
echo "==== Building $GROUP_COUNT images from $DOCKERFILE (bake) ===="
|
||||||
@@ -191,7 +214,7 @@ jobs:
|
|||||||
|
|
||||||
TARGET_OBJ=$(jq -n \
|
TARGET_OBJ=$(jq -n \
|
||||||
--arg context "$CONTEXT" \
|
--arg context "$CONTEXT" \
|
||||||
--arg dockerfile "$DOCKERFILE" \
|
--arg dockerfile "$DOCKERFILE_FOR_BAKE" \
|
||||||
--arg target "$TARGET" \
|
--arg target "$TARGET" \
|
||||||
--argjson tags "$TAGS_JSON" \
|
--argjson tags "$TAGS_JSON" \
|
||||||
--argjson args "$BUILD_ARGS_JSON" \
|
--argjson args "$BUILD_ARGS_JSON" \
|
||||||
@@ -264,7 +287,7 @@ jobs:
|
|||||||
echo "==== Building $FULL_IMAGE ===="
|
echo "==== Building $FULL_IMAGE ===="
|
||||||
|
|
||||||
docker buildx build \
|
docker buildx build \
|
||||||
--file "$DOCKERFILE" \
|
--file "$DOCKERFILE_FOR_BUILD" \
|
||||||
"${TARGET_FLAGS[@]}" \
|
"${TARGET_FLAGS[@]}" \
|
||||||
"${CACHE_FLAGS[@]}" \
|
"${CACHE_FLAGS[@]}" \
|
||||||
"${SSH_FLAGS[@]}" \
|
"${SSH_FLAGS[@]}" \
|
||||||
|
|||||||
Reference in New Issue
Block a user