feat(deploy): bake build metadata (commit/branch/timestamp) into images
Some checks failed
pre-commit / pre-commit (push) Has been cancelled

deploy-invttrdg.sh passes git-derived build args to backend and web Dockerfiles
via a build_image() helper. These surface in the new /api/devops/info endpoint
and the DevOps tab in Settings.

Auto-resolves GITEA_NPM_TOKEN from /opt/bytelyst/.gitea_token if unset, and
switches to direct docker build (--secret) instead of docker compose build
(which doesn't support --secret).

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
root 2026-05-10 04:58:22 +00:00
parent f432043a19
commit 72b678b9c7

View File

@ -115,10 +115,55 @@ fi
# Build and start services
log "Building Docker images..."
docker compose build || fail "Docker build failed"
# Resolve Gitea npm token for BuildKit secret
if [ -z "${GITEA_NPM_TOKEN:-}" ]; then
if [ -f "/opt/bytelyst/.gitea_token" ]; then
GITEA_NPM_TOKEN=$(cat /opt/bytelyst/.gitea_token)
export GITEA_NPM_TOKEN
elif [ -f "$HOME/.gitea_npm_token" ]; then
GITEA_NPM_TOKEN=$(cat "$HOME/.gitea_npm_token")
export GITEA_NPM_TOKEN
else
fail "GITEA_NPM_TOKEN not set and no token file found"
fi
fi
# Collect build metadata (consumed by @bytelyst/devops)
# Declare separately so set -e + $(…) don't mask non-zero exit codes (SC2155).
BYTELYST_COMMIT_SHA=
BYTELYST_COMMIT_SHA_FULL=
BYTELYST_BRANCH=
BYTELYST_BUILT_AT=
BYTELYST_COMMIT_AUTHOR=
BYTELYST_COMMIT_MESSAGE=
BYTELYST_COMMIT_SHA=$(git rev-parse --short HEAD 2>/dev/null || echo unknown)
BYTELYST_COMMIT_SHA_FULL=$(git rev-parse HEAD 2>/dev/null || echo unknown)
BYTELYST_BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo unknown)
BYTELYST_BUILT_AT=$(date -u +%Y-%m-%dT%H:%M:%SZ)
BYTELYST_COMMIT_AUTHOR=$(git log -1 --pretty=format:'%an' 2>/dev/null || echo unknown)
BYTELYST_COMMIT_MESSAGE=$(git log -1 --pretty=format:'%s' 2>/dev/null | head -c 200 || echo unknown)
build_image() {
local dockerfile="$1"
local tag="$2"
docker build --network host \
--secret id=gitea_npm_token,env=GITEA_NPM_TOKEN \
--build-arg "BYTELYST_COMMIT_SHA=${BYTELYST_COMMIT_SHA}" \
--build-arg "BYTELYST_COMMIT_SHA_FULL=${BYTELYST_COMMIT_SHA_FULL}" \
--build-arg "BYTELYST_BRANCH=${BYTELYST_BRANCH}" \
--build-arg "BYTELYST_BUILT_AT=${BYTELYST_BUILT_AT}" \
--build-arg "BYTELYST_COMMIT_AUTHOR=${BYTELYST_COMMIT_AUTHOR}" \
--build-arg "BYTELYST_COMMIT_MESSAGE=${BYTELYST_COMMIT_MESSAGE}" \
--build-arg "BYTELYST_DOCKER_IMAGE=${tag}" \
-f "$dockerfile" -t "$tag" .
}
build_image backend/Dockerfile invttrdg-backend:latest || fail "Backend build failed"
build_image web/Dockerfile invttrdg-web:latest || fail "Web build failed"
log "Starting services..."
docker compose up -d || fail "Docker compose up failed"
docker compose up -d --no-build || fail "Docker compose up failed"
ok "Deployment completed"