This commit is contained in:
2025-12-10 00:32:10 +01:00
parent eba2625693
commit fc13c4f5c2
4 changed files with 180 additions and 3 deletions

View File

@@ -67,6 +67,65 @@ deploy:staging:
echo "🚀 Deploy ${CI_ENVIRONMENT_NAME} → ${FTP_HOST}:${TARGET_PATH}"
# -------------------------------------------
# 🔢 Versionierung: versions.php laden/bauen
# -------------------------------------------
VERSION_WORK_FILE=".ci_versions_${CI_ENVIRONMENT_NAME}.php"
REMOTE_VERSION_PATH="${TARGET_PATH}${CONFIG_BASE_DIR}/versions.php"
echo "🔍 Versuche, bestehende Versionsdatei vom Server zu laden: ${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 gefunden und lokal gespeichert in ${VERSION_WORK_FILE}"
else
echo "⚠️ Keine Remote-Versionsdatei gefunden verwende Repo-Default (wenn vorhanden)."
if [ -f \"${CONFIG_ENV_DIR}/versions.php\" ]; then
cp \"${CONFIG_ENV_DIR}/versions.php\" \"${VERSION_WORK_FILE}\"
echo \" ${CONFIG_ENV_DIR}/versions.php → ${VERSION_WORK_FILE}\"
else
echo \"⚠️ Keine versions.php im Repo gefunden starte mit 1.0.0\"
cat > \"${VERSION_WORK_FILE}\" <<PHP
<?php
\$mainversion = 1;
\$subversion = 0;
\$patchversion = 0;
PHP
fi
fi
# Werte aus VERSION_WORK_FILE lesen
MAIN=$(grep '\$mainversion' \"${VERSION_WORK_FILE}\" 2>/dev/null | tr -cd '0-9')
SUB=$(grep '\$subversion' \"${VERSION_WORK_FILE}\" 2>/dev/null | tr -cd '0-9')
PATCH=$(grep '\$patchversion' \"${VERSION_WORK_FILE}\" 2>/dev/null | tr -cd '0-9')
[ -z \"$MAIN\" ] && MAIN=1
[ -z \"$SUB\" ] && SUB=0
[ -z \"$PATCH\" ] && PATCH=0
PATCH=$((PATCH + 1))
echo \"🆙 Baue neue STAGING-Version: ${MAIN}.${SUB}.${PATCH}\"
cat > \"${VERSION_WORK_FILE}\" <<PHP
<?php
\$mainversion = ${MAIN};
\$subversion = ${SUB};
\$patchversion = ${PATCH};
PHP
# Optional: Textdatei für Ausgabe auf der Webseite
echo \"${MAIN}.${SUB}.${PATCH}\" > public/build_version.txt
# -------------------------------------------
# 🔁 Deploy Basisverzeichnisse
# -------------------------------------------
for d in $BASE_DIRS; do
echo "🔁 Sync ${d}/ → ${TARGET_PATH}${d}/"
lftp -u "${FTP_USER}","${FTP_PASSWORD}" "${FTP_HOST}" -e "
@@ -97,6 +156,10 @@ deploy:staging:
cp -R ${CONFIG_ENV_DIR}/. .ci_config_deploy/
fi
# Aktualisierte versions.php in den Config-Deploy-Ordner legen
echo " Aktuelle versions.php in .ci_config_deploy/ übernehmen"
cp "${VERSION_WORK_FILE}" .ci_config_deploy/versions.php
echo "🔁 Sync .ci_config_deploy/ → ${TARGET_PATH}${CONFIG_BASE_DIR}/"
lftp -u "${FTP_USER}","${FTP_PASSWORD}" "${FTP_HOST}" -e "
set ftp:ssl-force true;
@@ -174,6 +237,65 @@ deploy:production:
echo "🚀 Deploy ${CI_ENVIRONMENT_NAME} → ${FTP_HOST}:${TARGET_PATH}"
# -------------------------------------------
# 🔢 Versionierung: versions.php laden/bauen
# -------------------------------------------
VERSION_WORK_FILE=".ci_versions_${CI_ENVIRONMENT_NAME}.php"
REMOTE_VERSION_PATH="${TARGET_PATH}${CONFIG_BASE_DIR}/versions.php"
echo "🔍 Versuche, bestehende Versionsdatei vom Server zu laden: ${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 gefunden und lokal gespeichert in ${VERSION_WORK_FILE}"
else
echo "⚠️ Keine Remote-Versionsdatei gefunden verwende Repo-Default (wenn vorhanden)."
if [ -f \"${CONFIG_ENV_DIR}/versions.php\" ]; then
cp \"${CONFIG_ENV_DIR}/versions.php\" \"${VERSION_WORK_FILE}\"
echo \" ${CONFIG_ENV_DIR}/versions.php → ${VERSION_WORK_FILE}\"
else
echo \"⚠️ Keine versions.php im Repo gefunden starte mit 1.0.0\"
cat > \"${VERSION_WORK_FILE}\" <<PHP
<?php
\$mainversion = 1;
\$subversion = 0;
\$patchversion = 0;
PHP
fi
fi
# Werte aus VERSION_WORK_FILE lesen
MAIN=$(grep '\$mainversion' \"${VERSION_WORK_FILE}\" 2>/dev/null | tr -cd '0-9')
SUB=$(grep '\$subversion' \"${VERSION_WORK_FILE}\" 2>/dev/null | tr -cd '0-9')
PATCH=$(grep '\$patchversion' \"${VERSION_WORK_FILE}\" 2>/dev/null | tr -cd '0-9')
[ -z \"$MAIN\" ] && MAIN=1
[ -z \"$SUB\" ] && SUB=0
[ -z \"$PATCH\" ] && PATCH=0
PATCH=$((PATCH + 1))
echo \"🆙 Baue neue PROD-Version: ${MAIN}.${SUB}.${PATCH}\"
cat > \"${VERSION_WORK_FILE}\" <<PHP
<?php
\$mainversion = ${MAIN};
\$subversion = ${SUB};
\$patchversion = ${PATCH};
PHP
# Optional: Textdatei für Ausgabe auf der Webseite
echo \"${MAIN}.${SUB}.${PATCH}\" > public/build_version.txt
# -------------------------------------------
# 🔁 Deploy Basisverzeichnisse
# -------------------------------------------
for d in $BASE_DIRS; do
echo "🔁 Sync ${d}/ → ${TARGET_PATH}${d}/"
lftp -u "${FTP_USER}","${FTP_PASSWORD}" "${FTP_HOST}" -e "
@@ -204,6 +326,10 @@ deploy:production:
cp -R ${CONFIG_ENV_DIR}/. .ci_config_deploy/
fi
# Aktualisierte versions.php in den Config-Deploy-Ordner legen
echo " Aktuelle versions.php in .ci_config_deploy/ übernehmen"
cp "${VERSION_WORK_FILE}" .ci_config_deploy/versions.php
echo "🔁 Sync .ci_config_deploy/ → ${TARGET_PATH}${CONFIG_BASE_DIR}/"
lftp -u "${FTP_USER}","${FTP_PASSWORD}" "${FTP_HOST}" -e "
set ftp:ssl-force true;
@@ -224,4 +350,3 @@ deploy:production:
only:
- main
# when: manual