Files
to2.it/.gitea/workflows/deploy.yml
Lars Gebhardt-Kusche 3b3ec736cc
Some checks failed
Deploy / deploy (push) Failing after 3s
dfdf
2026-05-06 02:04:43 +02:00

126 lines
3.9 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
run: |
apt-get update
apt-get install -y lftp ca-certificates
- 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."