85 lines
1.9 KiB
Bash
Executable File
85 lines
1.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
DOCKER_REGISTRY="gitea.oskamp.info"
|
|
DOCKER_NAMESPACE="ivooskamp"
|
|
VERSION_FILE="version.txt"
|
|
START_VERSION="v0.1.0"
|
|
CONTAINERS_DIR="containers"
|
|
|
|
BUMP="${1:-t}"
|
|
if [[ "$BUMP" != "1" && "$BUMP" != "2" && "$BUMP" != "3" && "$BUMP" != "t" ]]; then
|
|
echo "[ERROR] Unknown bump type '$BUMP' (use 1, 2, 3, or t)."
|
|
exit 1
|
|
fi
|
|
|
|
read_version() {
|
|
if [[ -f "$VERSION_FILE" ]]; then
|
|
tr -d ' \t\n\r' < "$VERSION_FILE"
|
|
else
|
|
echo "$START_VERSION"
|
|
fi
|
|
}
|
|
|
|
bump_version() {
|
|
local cur="$1"
|
|
local kind="$2"
|
|
local core="${cur#v}"
|
|
IFS='.' read -r MA MI PA <<< "$core"
|
|
case "$kind" in
|
|
1) PA=$((PA + 1));;
|
|
2) MI=$((MI + 1)); PA=0;;
|
|
3) MA=$((MA + 1)); MI=0; PA=0;;
|
|
esac
|
|
echo "v${MA}.${MI}.${PA}"
|
|
}
|
|
|
|
if ! docker info >/dev/null 2>&1; then
|
|
echo "[ERROR] Docker daemon not reachable."
|
|
exit 1
|
|
fi
|
|
|
|
if [[ ! -d "$CONTAINERS_DIR" ]]; then
|
|
echo "[ERROR] '$CONTAINERS_DIR' directory missing."
|
|
exit 1
|
|
fi
|
|
|
|
CURRENT_VERSION="$(read_version)"
|
|
NEW_VERSION="$CURRENT_VERSION"
|
|
RELEASE=false
|
|
|
|
if [[ "$BUMP" != "t" ]]; then
|
|
NEW_VERSION="$(bump_version "$CURRENT_VERSION" "$BUMP")"
|
|
RELEASE=true
|
|
echo "$NEW_VERSION" > "$VERSION_FILE"
|
|
git add "$VERSION_FILE"
|
|
git commit -m "Release $NEW_VERSION"
|
|
git tag -a "$NEW_VERSION" -m "Release $NEW_VERSION"
|
|
git push --follow-tags
|
|
fi
|
|
|
|
for svc_path in "$CONTAINERS_DIR"/*; do
|
|
[[ -d "$svc_path" ]] || continue
|
|
svc="$(basename "$svc_path")"
|
|
dockerfile="$svc_path/Dockerfile"
|
|
|
|
if [[ ! -f "$dockerfile" ]]; then
|
|
echo "[WARNING] Skipping $svc: Dockerfile missing"
|
|
continue
|
|
fi
|
|
|
|
IMAGE_BASE="${DOCKER_REGISTRY}/${DOCKER_NAMESPACE}/${svc}"
|
|
|
|
if $RELEASE; then
|
|
docker build -t "${IMAGE_BASE}:${NEW_VERSION}" -t "${IMAGE_BASE}:dev" "$svc_path"
|
|
docker push "${IMAGE_BASE}:${NEW_VERSION}"
|
|
docker push "${IMAGE_BASE}:dev"
|
|
else
|
|
docker build -t "${IMAGE_BASE}:dev" "$svc_path"
|
|
docker push "${IMAGE_BASE}:dev"
|
|
fi
|
|
|
|
done
|
|
|
|
echo "[DONE] Build/push complete"
|