primo
This commit is contained in:
58
pipeline/build_container.sh
Normal file
58
pipeline/build_container.sh
Normal file
@@ -0,0 +1,58 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
set -o pipefail
|
||||
|
||||
echo "progetto" $1
|
||||
REPO_NAME=$1
|
||||
COMMIT_SHA=$(git rev-parse HEAD)
|
||||
REGISTRY_URL=$2
|
||||
|
||||
for dir in containers/*/; do
|
||||
CONTAINER_NAME=$(basename "$dir")
|
||||
cp -R src/${CONTAINER_NAME}/. containers/${CONTAINER_NAME}/.
|
||||
ls -la $dir
|
||||
|
||||
# Cerca sia dockerfile che Dockerfile
|
||||
if [ -f "$dir/dockerfile" ]; then
|
||||
DOCKERFILE="$dir/dockerfile"
|
||||
elif [ -f "$dir/Dockerfile" ]; then
|
||||
DOCKERFILE="$dir/Dockerfile"
|
||||
else
|
||||
echo "Dockerfile non trovato in $dir"
|
||||
continue
|
||||
fi
|
||||
|
||||
|
||||
|
||||
IMAGE_TAG="${REGISTRY_URL}/${REPO_NAME}/${CONTAINER_NAME}:${COMMIT_SHA}"
|
||||
IMAGE_TAG_LATEST="${REGISTRY_URL}/${REPO_NAME}/${CONTAINER_NAME}:latest"
|
||||
echo "IMAGE_TAG_${CONTAINER_NAME}=$IMAGE_TAG" >> ./imglist
|
||||
|
||||
PLATFORM_CONF="$dir/platform.conf"
|
||||
BUILD_PLATFORM=""
|
||||
if [ -f "$PLATFORM_CONF" ]; then
|
||||
BUILD_PLATFORM=$(grep -E '^[[:space:]]*platform[[:space:]]*=' "$PLATFORM_CONF" | tail -n 1 | cut -d '=' -f 2- | tr -d '[:space:]')
|
||||
if [ -n "$BUILD_PLATFORM" ]; then
|
||||
echo "platform.conf trovato in $dir: uso platform=$BUILD_PLATFORM"
|
||||
else
|
||||
echo "platform.conf trovato in $dir ma variabile platform non valorizzata, uso build standard"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -f "$DOCKERFILE" ]; then
|
||||
if [ -n "$BUILD_PLATFORM" ]; then
|
||||
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
|
||||
docker buildx create --driver docker-container --use
|
||||
docker buildx inspect --bootstrap
|
||||
|
||||
docker buildx build --platform "$BUILD_PLATFORM" -t "$IMAGE_TAG" -t "$IMAGE_TAG_LATEST" -f "$DOCKERFILE" "$dir" --push
|
||||
else
|
||||
docker build -t "$IMAGE_TAG" -t "$IMAGE_TAG_LATEST" -f "$DOCKERFILE" "$dir"
|
||||
docker push "$IMAGE_TAG"
|
||||
docker push "$IMAGE_TAG_LATEST"
|
||||
fi
|
||||
echo "Build e push completate: $IMAGE_TAG"
|
||||
else
|
||||
echo "Dockerfile non trovato in $dir"
|
||||
fi
|
||||
done
|
||||
Reference in New Issue
Block a user