Files
to2.it/.gitea/workflows/deploy.yml
Lars Gebhardt-Kusche 8adb294bc7
All checks were successful
Deploy / deploy (push) Successful in 12s
asdasd
2026-05-06 02:06:41 +02:00

138 lines
4.4 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
name: Deploy
on:
push:
branches:
- main
- develop
env:
BASE_DIRS: "src public api partials tools"
CONFIG_BASE_DIR: "config"
jobs:
deploy:
runs-on: private-server
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install lftp
shell: sh
run: |
if command -v lftp >/dev/null 2>&1; then
echo "✅ lftp bereits installiert"
elif command -v apk >/dev/null 2>&1; then
echo "📦 Installiere via apk"
apk add --no-cache lftp ca-certificates
elif command -v apt-get >/dev/null 2>&1; then
echo "📦 Installiere via apt-get"
apt-get update
apt-get install -y lftp ca-certificates
else
echo "❌ Kein unterstützter Paketmanager gefunden"
exit 1
fi
- name: Set environment
run: |
if [ "${{ gitea.ref_name }}" = "main" ]; then
echo "TARGET_PATH=${{ vars.FTP_PATH_PROD }}" >> "$GITHUB_ENV"
echo "CONFIG_ENV_DIR=config/prod" >> "$GITHUB_ENV"
echo "ENVIRONMENT_NAME=production" >> "$GITHUB_ENV"
elif [ "${{ gitea.ref_name }}" = "develop" ]; then
echo "TARGET_PATH=${{ vars.FTP_PATH_STAGING }}" >> "$GITHUB_ENV"
echo "CONFIG_ENV_DIR=config/staging" >> "$GITHUB_ENV"
echo "ENVIRONMENT_NAME=staging" >> "$GITHUB_ENV"
else
echo "Unsupported branch"
exit 1
fi
- name: Debug workspace
run: |
echo "📂 CI Workspace:"
pwd
ls -la
echo "📁 Prüfe & zeige Projektverzeichnisse:"
for d in $BASE_DIRS $CONFIG_BASE_DIR $CONFIG_ENV_DIR; do
echo "----------------------------------------"
if [ -d "$d" ]; then
echo "📂 Inhalt von $d/:"
ls -la "$d/"
else
echo "⚠️ Verzeichnis '$d' existiert nicht!"
fi
done
- name: Deploy via FTPS
run: |
set -e
echo "📁 Prüfe lokale Basisverzeichnisse..."
MISSING=0
for d in $BASE_DIRS; do
if [ ! -d "$d" ]; then
echo "❌ Verzeichnis '$d/' fehlt im Repo!"
MISSING=1
fi
done
if [ ! -d "$CONFIG_BASE_DIR" ]; then
echo "❌ Basis-Konfig-Verzeichnis '$CONFIG_BASE_DIR/' fehlt!"
MISSING=1
fi
if [ ! -d "$CONFIG_ENV_DIR" ]; then
echo "❌ Env-Konfiguration '$CONFIG_ENV_DIR/' fehlt!"
MISSING=1
fi
if [ "$MISSING" -ne 0 ]; then
echo "⛔ Abbruch wegen fehlender Verzeichnisse."
exit 1
fi
echo "🚀 Deploy ${ENVIRONMENT_NAME} → ${{ vars.FTP_HOST }}:${TARGET_PATH}"
for d in $BASE_DIRS; do
echo "🔁 Sync ${d}/ → ${TARGET_PATH}${d}/"
lftp -u "${{ secrets.FTP_USER }}","${{ secrets.FTP_PASSWORD }}" "${{ vars.FTP_HOST }}" -e "
set ftp:ssl-force true;
set ftp:passive-mode true;
set ftp:ssl-protect-data true;
set ssl:verify-certificate no;
mirror -R --delete --exclude .gitkeep ${d}/ ${TARGET_PATH}${d}/;
bye
" || { echo "❌ Upload für Verzeichnis '${d}' fehlgeschlagen."; exit 1; }
done
echo "🧩 Baue gemischtes Config-Verzeichnis..."
rm -rf .ci_config_deploy
mkdir -p .ci_config_deploy
for f in ${CONFIG_BASE_DIR}/*.php; do
if [ -f "$f" ]; then
echo " Basis-Config-Datei: $f"
cp "$f" .ci_config_deploy/
fi
done
echo " Env-Config aus ${CONFIG_ENV_DIR}/"
cp -R ${CONFIG_ENV_DIR}/. .ci_config_deploy/
echo "🔁 Sync .ci_config_deploy/ → ${TARGET_PATH}${CONFIG_BASE_DIR}/"
lftp -u "${{ secrets.FTP_USER }}","${{ secrets.FTP_PASSWORD }}" "${{ vars.FTP_HOST }}" -e "
set ftp:ssl-force true;
set ftp:passive-mode true;
set ftp:ssl-protect-data true;
set ssl:verify-certificate no;
lcd .ci_config_deploy;
mirror -R --delete --exclude .gitkeep ./ ${TARGET_PATH}${CONFIG_BASE_DIR}/;
bye
" || { echo "❌ Upload für Config fehlgeschlagen."; exit 1; }
echo "✅ Deploy ${ENVIRONMENT_NAME} abgeschlossen."