Fix GitLab CI YAML parsing for remote deploy block.

Replace the inline SSH command with a YAML-safe block scalar and heredoc so the pipeline parser accepts the script while keeping the same port-conflict handling logic.
This commit is contained in:
Mireya Cueto Garrido
2026-06-02 10:40:13 +02:00
parent b08fc94016
commit eec534922a
+29 -21
View File
@@ -23,27 +23,35 @@ deploy_to_sinbad2:
- scp -r ./* $REMOTE_USER@$SSH_HOST:~/deploy_$APP_NAME/ - scp -r ./* $REMOTE_USER@$SSH_HOST:~/deploy_$APP_NAME/
- echo "Levantando contenedores con Docker Compose..." - echo "Levantando contenedores con Docker Compose..."
- ssh $REMOTE_USER@$SSH_HOST " - |
cd ~/deploy_$APP_NAME && ssh "$REMOTE_USER@$SSH_HOST" <<EOF
echo 'Comprobando puertos en uso...' && set -e
docker ps --format '{{.ID}} {{.Ports}}' | grep -E '0.0.0.0:$FRONTEND_PORT->|0.0.0.0:$BACKEND_PORT->' || true && cd ~/deploy_$APP_NAME
CONFLICT_FRONT=\$(docker ps -q --filter publish=$FRONTEND_PORT) && echo "Comprobando puertos en uso..."
if [ ! -z \"\$CONFLICT_FRONT\" ]; then docker ps --format '{{.ID}} {{.Ports}}' | grep -E "0.0.0.0:$FRONTEND_PORT->|0.0.0.0:$BACKEND_PORT->" || true
echo \"Liberando puerto frontend $FRONTEND_PORT (contenedores: \$CONFLICT_FRONT)\" &&
docker stop \$CONFLICT_FRONT && CONFLICT_FRONT=\$(docker ps -q --filter publish=$FRONTEND_PORT)
docker rm \$CONFLICT_FRONT; if [ -n "\$CONFLICT_FRONT" ]; then
fi && echo "Liberando puerto frontend $FRONTEND_PORT (contenedores: \$CONFLICT_FRONT)"
CONFLICT_BACK=\$(docker ps -q --filter publish=$BACKEND_PORT) && docker stop \$CONFLICT_FRONT
if [ ! -z \"\$CONFLICT_BACK\" ]; then docker rm \$CONFLICT_FRONT
echo \"Liberando puerto backend $BACKEND_PORT (contenedores: \$CONFLICT_BACK)\" && fi
docker stop \$CONFLICT_BACK &&
docker rm \$CONFLICT_BACK; CONFLICT_BACK=\$(docker ps -q --filter publish=$BACKEND_PORT)
fi && if [ -n "\$CONFLICT_BACK" ]; then
export BACKEND_PORT=$BACKEND_PORT FRONTEND_PORT=$FRONTEND_PORT ALLOWED_ORIGINS=\"http://sinbad2.ujaen.es,http://sinbad2.ujaen.es:$FRONTEND_PORT\" && echo "Liberando puerto backend $BACKEND_PORT (contenedores: \$CONFLICT_BACK)"
docker compose down --remove-orphans && docker stop \$CONFLICT_BACK
docker compose build --no-cache frontend backend && docker rm \$CONFLICT_BACK
docker compose up -d fi
"
export BACKEND_PORT=$BACKEND_PORT
export FRONTEND_PORT=$FRONTEND_PORT
export ALLOWED_ORIGINS="http://sinbad2.ujaen.es,http://sinbad2.ujaen.es:$FRONTEND_PORT"
docker compose down --remove-orphans
docker compose build --no-cache frontend backend
docker compose up -d
EOF
- echo "Despliegue completado." - echo "Despliegue completado."
- echo "Backend -> http://sinbad2.ujaen.es:$BACKEND_PORT" - echo "Backend -> http://sinbad2.ujaen.es:$BACKEND_PORT"