fix(docker): stamp the git commit into rig image versions via a SOURCE_REVISION build arg (#134)

.dockerignore keeps .git/ out of the build context, so the in-container
publish had no repository and AssemblyInformationalVersion (service.version,
VersionInfo) was a bare 1.0.0. docker/build.sh (used by docker/deploy.sh and
docker-env2/deploy.sh) now passes git rev-parse HEAD, suffixed -dirty for an
uncommitted tree, and the Dockerfile hands it to dotnet publish as
SourceRevisionId. Without the arg the build still succeeds as 1.0.0. The ARG
sits after the source COPY so a new commit does not bust the restore layer.

Claude-Session: https://claude.ai/code/session_01GT67ACmpMR7b9LGRPLijMi
This commit is contained in:
Joseph Doherty
2026-11-12 22:04:50 -05:00
parent 482ac66548
commit 7e34d7c2d5
2 changed files with 25 additions and 1 deletions
+14
View File
@@ -21,6 +21,19 @@ if [ -n "${MXGW_NUGET_USER:-}" ]; then
NUGET_ARGS+=(--build-arg "NUGET_GITEA_PASS=${MXGW_NUGET_PASS:-}")
fi
# Commit stamp for the image's informational version (ScadaBridge#134). .git/ stays
# out of the build context (.dockerignore), so the in-container publish cannot read
# the commit itself; pass it in. "-dirty" marks a build from an uncommitted tree.
# Outside a git checkout this is left empty and the image stamps a bare "1.0.0".
SOURCE_REVISION="${SOURCE_REVISION:-}"
if [ -z "$SOURCE_REVISION" ] && git -C "$REPO_ROOT" rev-parse --git-dir >/dev/null 2>&1; then
SOURCE_REVISION="$(git -C "$REPO_ROOT" rev-parse HEAD)"
if [ -n "$(git -C "$REPO_ROOT" status --porcelain --untracked-files=no)" ]; then
SOURCE_REVISION="${SOURCE_REVISION}-dirty"
fi
fi
echo "Source revision: ${SOURCE_REVISION:-<none>}"
# Build from repo root (so COPY paths in Dockerfile resolve correctly)
echo "Building scadabridge:latest image..."
# Note: ${NUGET_ARGS[@]+...} guards against the "unbound variable" error that
@@ -29,6 +42,7 @@ docker build \
-t scadabridge:latest \
-f "$SCRIPT_DIR/Dockerfile" \
${NUGET_ARGS[@]+"${NUGET_ARGS[@]}"} \
--build-arg "SOURCE_REVISION=${SOURCE_REVISION}" \
"$REPO_ROOT"
echo "Build complete: scadabridge:latest"