This commit is contained in:
2025-12-10 01:40:05 +01:00
parent 10cc7b5d30
commit 8b5004b292
14 changed files with 374 additions and 100 deletions

View File

@@ -68,25 +68,25 @@ deploy:staging:
echo "🚀 Deploy ${CI_ENVIRONMENT_NAME} → ${FTP_HOST}:${TARGET_PATH}"
# -------------------------------------------
# 🔢 Versionierung: versions.php laden/bumpen
# 🔢 Versionierung aus Repo-Datei ableiten
# -------------------------------------------
VERSION_WORK_FILE=".ci_versions_${CI_ENVIRONMENT_NAME}.php"
REMOTE_VERSION_PATH="${TARGET_PATH}${CONFIG_BASE_DIR}/versions.php"
VERSION_SOURCE="${CONFIG_ENV_DIR}/versions.php"
if [ ! -f "${VERSION_SOURCE}" ]; then
VERSION_SOURCE="${CONFIG_BASE_DIR}/versions.php"
fi
echo "🔍 Prüfe versions.php auf dem Server: ${REMOTE_VERSION_PATH}"
if lftp -u "${FTP_USER}","${FTP_PASSWORD}" "${FTP_HOST}" -e "
set ftp:ssl-force true;
set ftp:passive-mode true;
set ftp:ssl-protect-data true;
set ssl:verify-certificate no;
get ${REMOTE_VERSION_PATH} -o ${VERSION_WORK_FILE};
bye
"; then
echo "✅ Remote versions.php geladen."
if [ -f "${VERSION_SOURCE}" ]; then
echo "📄 Verwende lokale versions.php: ${VERSION_SOURCE}"
cp "${VERSION_SOURCE}" "${VERSION_WORK_FILE}"
else
echo "⚠️ Remote versions.php nicht gefunden, verwende lokale ${CONFIG_ENV_DIR}/versions.php"
cp "${CONFIG_ENV_DIR}/versions.php" "${VERSION_WORK_FILE}"
echo "⚠️ Keine versions.php gefunden nutze Defaults 1.0.0"
cat <<'PHP' > "${VERSION_WORK_FILE}"
<?php
$mainversion = 1;
$subversion = 0;
$patchversion = 0;
PHP
fi
MAIN=$(grep '\$mainversion' "${VERSION_WORK_FILE}" 2>/dev/null | tr -cd '0-9')
@@ -97,15 +97,52 @@ deploy:staging:
[ -z "$SUB" ] && SUB=0
[ -z "$PATCH" ] && PATCH=0
PATCH=$((PATCH + 1))
FORCED=0
if [ -n "${CI_VERSION_FORCE:-}" ]; then
if expr "${CI_VERSION_FORCE}" : '^[0-9]\+\.[0-9]\+\.[0-9]\+$' >/dev/null; then
IFS='.' read -r FORCE_MAIN FORCE_SUB FORCE_PATCH <<EOF
${CI_VERSION_FORCE}
EOF
MAIN=$FORCE_MAIN
SUB=$FORCE_SUB
PATCH=$FORCE_PATCH
FORCED=1
else
echo "⚠️ CI_VERSION_FORCE ungültig (${CI_VERSION_FORCE}). Ignoriere Override."
fi
fi
echo "🆙 Neue STAGING-Version: ${MAIN}.${SUB}.${PATCH}"
if [ "$FORCED" -eq 1 ]; then
BUMP_NOTE="force override"
else
BUMP_MODE=$(printf '%s' "${CI_VERSION_BUMP:-patch}" | tr '[:upper:]' '[:lower:]')
case "$BUMP_MODE" in
major)
MAIN=$((MAIN + 1))
SUB=0
PATCH=0
;;
minor)
SUB=$((SUB + 1))
PATCH=0
;;
*)
BUMP_MODE="patch"
PATCH=$((PATCH + 1))
;;
esac
BUMP_NOTE="${BUMP_MODE}-bump"
fi
echo "🆙 Neue ${CI_ENVIRONMENT_NAME} Version (${BUMP_NOTE}): ${MAIN}.${SUB}.${PATCH}"
# Neue versions.php bauen
echo '<?php' > "${VERSION_WORK_FILE}"
echo "\$mainversion = ${MAIN};" >> "${VERSION_WORK_FILE}"
echo "\$subversion = ${SUB};" >> "${VERSION_WORK_FILE}"
echo "\$patchversion = ${PATCH};" >> "${VERSION_WORK_FILE}"
{
echo '<?php'
echo "\$mainversion = ${MAIN};"
echo "\$subversion = ${SUB};"
echo "\$patchversion = ${PATCH};"
} > "${VERSION_WORK_FILE}"
# Textdatei für die Webseite
echo "${MAIN}.${SUB}.${PATCH}" > public/build_version.txt
@@ -225,25 +262,25 @@ deploy:production:
echo "🚀 Deploy ${CI_ENVIRONMENT_NAME} → ${FTP_HOST}:${TARGET_PATH}"
# -------------------------------------------
# 🔢 Versionierung: versions.php laden/bumpen
# 🔢 Versionierung aus Repo-Datei ableiten
# -------------------------------------------
VERSION_WORK_FILE=".ci_versions_${CI_ENVIRONMENT_NAME}.php"
REMOTE_VERSION_PATH="${TARGET_PATH}${CONFIG_BASE_DIR}/versions.php"
VERSION_SOURCE="${CONFIG_ENV_DIR}/versions.php"
if [ ! -f "${VERSION_SOURCE}" ]; then
VERSION_SOURCE="${CONFIG_BASE_DIR}/versions.php"
fi
echo "🔍 Prüfe versions.php auf dem Server: ${REMOTE_VERSION_PATH}"
if lftp -u "${FTP_USER}","${FTP_PASSWORD}" "${FTP_HOST}" -e "
set ftp:ssl-force true;
set ftp:passive-mode true;
set ftp:ssl-protect-data true;
set ssl:verify-certificate no;
get ${REMOTE_VERSION_PATH} -o ${VERSION_WORK_FILE};
bye
"; then
echo "✅ Remote versions.php geladen."
if [ -f "${VERSION_SOURCE}" ]; then
echo "📄 Verwende lokale versions.php: ${VERSION_SOURCE}"
cp "${VERSION_SOURCE}" "${VERSION_WORK_FILE}"
else
echo "⚠️ Remote versions.php nicht gefunden, verwende lokale ${CONFIG_ENV_DIR}/versions.php"
cp "${CONFIG_ENV_DIR}/versions.php" "${VERSION_WORK_FILE}"
echo "⚠️ Keine versions.php gefunden nutze Defaults 1.0.0"
cat <<'PHP' > "${VERSION_WORK_FILE}"
<?php
$mainversion = 1;
$subversion = 0;
$patchversion = 0;
PHP
fi
MAIN=$(grep '\$mainversion' "${VERSION_WORK_FILE}" 2>/dev/null | tr -cd '0-9')
@@ -254,15 +291,52 @@ deploy:production:
[ -z "$SUB" ] && SUB=0
[ -z "$PATCH" ] && PATCH=0
PATCH=$((PATCH + 1))
FORCED=0
if [ -n "${CI_VERSION_FORCE:-}" ]; then
if expr "${CI_VERSION_FORCE}" : '^[0-9]\+\.[0-9]\+\.[0-9]\+$' >/dev/null; then
IFS='.' read -r FORCE_MAIN FORCE_SUB FORCE_PATCH <<EOF
${CI_VERSION_FORCE}
EOF
MAIN=$FORCE_MAIN
SUB=$FORCE_SUB
PATCH=$FORCE_PATCH
FORCED=1
else
echo "⚠️ CI_VERSION_FORCE ungültig (${CI_VERSION_FORCE}). Ignoriere Override."
fi
fi
echo "🆙 Neue PROD-Version: ${MAIN}.${SUB}.${PATCH}"
if [ "$FORCED" -eq 1 ]; then
BUMP_NOTE="force override"
else
BUMP_MODE=$(printf '%s' "${CI_VERSION_BUMP:-patch}" | tr '[:upper:]' '[:lower:]')
case "$BUMP_MODE" in
major)
MAIN=$((MAIN + 1))
SUB=0
PATCH=0
;;
minor)
SUB=$((SUB + 1))
PATCH=0
;;
*)
BUMP_MODE="patch"
PATCH=$((PATCH + 1))
;;
esac
BUMP_NOTE="${BUMP_MODE}-bump"
fi
echo "🆙 Neue ${CI_ENVIRONMENT_NAME} Version (${BUMP_NOTE}): ${MAIN}.${SUB}.${PATCH}"
# Neue versions.php bauen
echo '<?php' > "${VERSION_WORK_FILE}"
echo "\$mainversion = ${MAIN};" >> "${VERSION_WORK_FILE}"
echo "\$subversion = ${SUB};" >> "${VERSION_WORK_FILE}"
echo "\$patchversion = ${PATCH};" >> "${VERSION_WORK_FILE}"
{
echo '<?php'
echo "\$mainversion = ${MAIN};"
echo "\$subversion = ${SUB};"
echo "\$patchversion = ${PATCH};"
} > "${VERSION_WORK_FILE}"
# Textdatei für die Webseite
echo "${MAIN}.${SUB}.${PATCH}" > public/build_version.txt