fix: snapshot deploy source before sync
CI - Build & Test / Backend (.NET) (push) Successful in 45s
CI - Build & Test / Frontend (Vue/TS) (push) Successful in 17s
CI - Build & Test / Security Check (push) Successful in 2s
CI - Build & Test / Deploy Nexus (push) Failing after 3s

This commit is contained in:
2026-06-24 07:52:24 +02:00
parent f30cce4fb3
commit 38954feb8f
+13 -3
View File
@@ -4,8 +4,10 @@ set -eu
DEPLOY_PATH="${DEPLOY_PATH:-/home/projekte_bao/openclaw/data/openclaw/workspace/nexus}" DEPLOY_PATH="${DEPLOY_PATH:-/home/projekte_bao/openclaw/data/openclaw/workspace/nexus}"
ENV_TMPFILE_TEMPLATE="${ENV_TMPFILE:-/tmp/nexus-deploy-env}" ENV_TMPFILE_TEMPLATE="${ENV_TMPFILE:-/tmp/nexus-deploy-env}"
COMPOSE_SCRIPT_TEMPLATE="${COMPOSE_SCRIPT:-/tmp/nexus-compose-deploy.sh}" COMPOSE_SCRIPT_TEMPLATE="${COMPOSE_SCRIPT:-/tmp/nexus-compose-deploy.sh}"
SOURCE_ARCHIVE_TEMPLATE="${SOURCE_ARCHIVE:-/tmp/nexus-source.tar}"
ENV_TMPFILE="" ENV_TMPFILE=""
COMPOSE_SCRIPT="" COMPOSE_SCRIPT=""
SOURCE_ARCHIVE=""
BASE_URL="${BASE_URL:-https://nexus.noveria.net}" BASE_URL="${BASE_URL:-https://nexus.noveria.net}"
cleanup() { cleanup() {
@@ -15,6 +17,9 @@ cleanup() {
if [ -n "$COMPOSE_SCRIPT" ]; then if [ -n "$COMPOSE_SCRIPT" ]; then
rm -f "$COMPOSE_SCRIPT" rm -f "$COMPOSE_SCRIPT"
fi fi
if [ -n "$SOURCE_ARCHIVE" ]; then
rm -f "$SOURCE_ARCHIVE"
fi
} }
trap cleanup EXIT INT TERM trap cleanup EXIT INT TERM
@@ -40,7 +45,8 @@ secure_tmpfile() {
ENV_TMPFILE="$(secure_tmpfile "$ENV_TMPFILE_TEMPLATE")" ENV_TMPFILE="$(secure_tmpfile "$ENV_TMPFILE_TEMPLATE")"
COMPOSE_SCRIPT="$(secure_tmpfile "$COMPOSE_SCRIPT_TEMPLATE")" COMPOSE_SCRIPT="$(secure_tmpfile "$COMPOSE_SCRIPT_TEMPLATE")"
chmod 600 "$ENV_TMPFILE" "$COMPOSE_SCRIPT" SOURCE_ARCHIVE="$(secure_tmpfile "$SOURCE_ARCHIVE_TEMPLATE")"
chmod 600 "$ENV_TMPFILE" "$COMPOSE_SCRIPT" "$SOURCE_ARCHIVE"
if [ ! -f VERSION ]; then if [ ! -f VERSION ]; then
echo "VERSION file not found" >&2 echo "VERSION file not found" >&2
@@ -56,6 +62,8 @@ fi
GIT_REF="$(git rev-parse --short HEAD 2>/dev/null || echo unknown)" GIT_REF="$(git rev-parse --short HEAD 2>/dev/null || echo unknown)"
echo "Deploying Nexus v$VERSION from $GIT_REF" echo "Deploying Nexus v$VERSION from $GIT_REF"
git archive --format=tar HEAD > "$SOURCE_ARCHIVE"
umask 077 umask 077
cat > "$ENV_TMPFILE" <<EOF_ENV cat > "$ENV_TMPFILE" <<EOF_ENV
POSTGRES_DB=nexus POSTGRES_DB=nexus
@@ -72,12 +80,14 @@ EOF_ENV
echo "Syncing source to deploy path: $DEPLOY_PATH" echo "Syncing source to deploy path: $DEPLOY_PATH"
docker run --rm \ docker run --rm \
-v "$PWD:/src:ro" \ -v "$SOURCE_ARCHIVE:/source.tar:ro" \
-v "$DEPLOY_PATH:/dest" \ -v "$DEPLOY_PATH:/dest" \
alpine:3.20 \ alpine:3.20 \
sh -c ' sh -c '
set -eu set -eu
dest_owner="$(stat -c "%u:%g" /dest)" dest_owner="$(stat -c "%u:%g" /dest)"
mkdir -p /src-snapshot
tar -xf /source.tar -C /src-snapshot
is_protected_path() { is_protected_path() {
case "$1" in case "$1" in
@@ -97,7 +107,7 @@ docker run --rm \
fi fi
done done
cd /src cd /src-snapshot
find . -mindepth 1 -maxdepth 1 | while IFS= read -r path; do find . -mindepth 1 -maxdepth 1 | while IFS= read -r path; do
if ! is_protected_path "$path"; then if ! is_protected_path "$path"; then
cp -a "$path" /dest/ cp -a "$path" /dest/