Add some hardening to the build script. Check if system has docker buildx installed. When using custom branches, check they actuall exist before proceeding with the build

Signed-off-by: Adam Warner <me@adamwarner.co.uk>
This commit is contained in:
Adam Warner
2024-09-11 22:24:18 +01:00
parent 4c058620bf
commit 563179499c

View File

@@ -22,6 +22,34 @@ TAG="pihole:local"
DOCKER_BUILD_CMD="docker buildx build src/. --tag ${TAG} --load --no-cache" DOCKER_BUILD_CMD="docker buildx build src/. --tag ${TAG} --load --no-cache"
FTL_FLAG=false FTL_FLAG=false
# Check if buildx is installed
docker buildx version >/dev/null 2>&1
if [ $? -ne 0 ]; then
echo "Error: Docker buildx is required to build this image. For installation instructions, see:"
echo " https://github.com/docker/buildx#installing"
exit 1
fi
# Function to check if a custom branch entered by the user is valid
check_branch_exists() {
local repo=$1
local branch=$2
local url
if [ "$repo" == "ftl" ]; then
# Special case for FTL - we check for the binary instead of just the branch - in case it is not yet built.
url="https://ftl.pi-hole.net/${branch}/pihole-FTL-amd64"
else
url="https://github.com/pi-hole/${repo}/blob/${branch}/README.md"
fi
local http_code=$(curl -sI "$url" -o /dev/null -w "%{http_code}")
if [ $http_code -ne 200 ]; then
echo "Error: $repo branch '$branch' not found. Exiting."
exit 1
fi
}
# Parse command line arguments # Parse command line arguments
while [[ $# -gt 0 ]]; do while [[ $# -gt 0 ]]; do
key="$1" key="$1"
@@ -47,24 +75,28 @@ while [[ $# -gt 0 ]]; do
fi fi
FTL_FLAG=true FTL_FLAG=true
FTL_BRANCH="$2" FTL_BRANCH="$2"
check_branch_exists "ftl" "$FTL_BRANCH"
DOCKER_BUILD_CMD+=" --build-arg FTL_BRANCH=$FTL_BRANCH" DOCKER_BUILD_CMD+=" --build-arg FTL_BRANCH=$FTL_BRANCH"
shift shift
shift shift
;; ;;
-c | --corebranch) -c | --corebranch)
CORE_BRANCH="$2" CORE_BRANCH="$2"
check_branch_exists "pi-hole" "$CORE_BRANCH"
DOCKER_BUILD_CMD+=" --build-arg CORE_BRANCH=$CORE_BRANCH" DOCKER_BUILD_CMD+=" --build-arg CORE_BRANCH=$CORE_BRANCH"
shift shift
shift shift
;; ;;
-w | --webbranch) -w | --webbranch)
WEB_BRANCH="$2" WEB_BRANCH="$2"
check_branch_exists "web" "$WEB_BRANCH"
DOCKER_BUILD_CMD+=" --build-arg WEB_BRANCH=$WEB_BRANCH" DOCKER_BUILD_CMD+=" --build-arg WEB_BRANCH=$WEB_BRANCH"
shift shift
shift shift
;; ;;
-p | --paddbranch) -p | --paddbranch)
PADD_BRANCH="$2" PADD_BRANCH="$2"
check_branch_exists "padd" "$PADD_BRANCH"
DOCKER_BUILD_CMD+=" --build-arg PADD_BRANCH=$PADD_BRANCH" DOCKER_BUILD_CMD+=" --build-arg PADD_BRANCH=$PADD_BRANCH"
shift shift
shift shift