Some checks failed
		
		
	
	Build and Deploy / remote-build-and-deploy (push) Failing after 14m12s
				
			
		
			
				
	
	
		
			86 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| name: Build and Deploy
 | |
| 
 | |
| on:
 | |
|   push:
 | |
|     branches:
 | |
|       - main
 | |
| 
 | |
| jobs:
 | |
|   remote-build-and-deploy:
 | |
|     runs-on: ubuntu-latest
 | |
| 
 | |
|     steps:
 | |
|       - name: Run Entire CI/CD Process on Host via SSH
 | |
|         run: |
 | |
|           set -e
 | |
| 
 | |
|           # 1. Preparar el cliente SSH
 | |
|           apt-get update > /dev/null && apt-get install -y openssh-client git > /dev/null
 | |
|           mkdir -p ~/.ssh
 | |
|           echo "${{ secrets.PROD_SERVER_SSH_KEY }}" > ~/.ssh/id_rsa
 | |
|           chmod 600 ~/.ssh/id_rsa
 | |
|           ssh-keyscan -H ${{ secrets.PROD_SERVER_HOST }} >> ~/.ssh/known_hosts
 | |
|           
 | |
|           # 2. Conectarse al HOST y ejecutar todo el proceso allí
 | |
|           ssh ${{ secrets.PROD_SERVER_USER }}@${{ secrets.PROD_SERVER_HOST }} 'bash -s' \
 | |
|             "${{ gitea.sha }}" \
 | |
|             "${{ gitea.run_id }}" \
 | |
|             "${{ gitea.repository }}" \
 | |
|             '${{ secrets.DB_SA_PASSWORD_SECRET }}' \
 | |
|             '${{ secrets.JWT_KEY_SECRET }}' \
 | |
|             << 'EOF'
 | |
|               set -e
 | |
| 
 | |
|               # --- PARTE 1: PREPARACIÓN (EN EL HOST) ---
 | |
|               echo "--- (HOST) Preparing temporary workspace ---"
 | |
|               
 | |
|               COMMIT_SHA="$1"
 | |
|               RUN_ID="$2"
 | |
|               REPO_NAME_RAW="$3"
 | |
|               DB_PASSWORD="$4"
 | |
|               JWT_KEY="$5"
 | |
| 
 | |
|               REPO_NAME=$(echo "$REPO_NAME_RAW" | tr '[:upper:]' '[:lower:]')
 | |
|               TEMP_DIR="/tmp/gitea-build/$RUN_ID"
 | |
|               GITEA_REPO_PATH="/var/lib/docker/volumes/gitea-stack_gitea-data/_data/git/repositories/${REPO_NAME}.git"
 | |
|               
 | |
|               # --- ¡¡LA CORRECCIÓN ESTÁ AQUÍ!! ---
 | |
|               # Añadimos el repositorio a la lista de directorios seguros para el usuario actual (root).
 | |
|               echo "Adding git repository to safe directories..."
 | |
|               git config --global --add safe.directory "$GITEA_REPO_PATH"
 | |
|               
 | |
|               echo "Cloning repository from local path: $GITEA_REPO_PATH"
 | |
|               rm -rf $TEMP_DIR
 | |
|               git clone $GITEA_REPO_PATH $TEMP_DIR
 | |
|               cd $TEMP_DIR
 | |
|               git checkout "$COMMIT_SHA"
 | |
|               
 | |
|               # --- PARTE 2: CONSTRUIR IMÁGENES CON KANIKO (EN EL HOST) ---
 | |
|               echo "--- (HOST) Building images... ---"
 | |
|               
 | |
|               docker run --rm -v "$(pwd)":/workspace gcr.io/kaniko-project/executor:v1.9.0 \
 | |
|                 --context=/workspace --dockerfile=/workspace/Backend/GestionIntegral.Api/Dockerfile --no-push \
 | |
|                 --destination=${REPO_NAME}-backend:latest --tarPath=/workspace/backend.tar
 | |
| 
 | |
|               docker run --rm -v "$(pwd)":/workspace gcr.io/kaniko-project/executor:v1.9.0 \
 | |
|                 --context=/workspace --dockerfile=/workspace/Frontend/Dockerfile --no-push \
 | |
|                 --destination=${REPO_NAME}-frontend:latest --tarPath=/workspace/frontend.tar
 | |
| 
 | |
|               # --- PARTE 3: DESPLEGAR (EN EL HOST) ---
 | |
|               echo "--- (HOST) Loading images and deploying... ---"
 | |
|               
 | |
|               docker load < backend.tar
 | |
|               docker load < frontend.tar
 | |
|               
 | |
|               cd /opt/gestion-integral
 | |
|               export DB_SA_PASSWORD="$DB_PASSWORD"
 | |
|               export JWT_KEY="$JWT_KEY"
 | |
|               docker compose up -d
 | |
| 
 | |
|               # --- PARTE 4: LIMPIEZA (EN EL HOST) ---
 | |
|               echo "--- (HOST) Cleaning up... ---"
 | |
|               rm -rf $TEMP_DIR
 | |
|               docker image prune -af
 | |
|               
 | |
|               echo "--- ¡¡DESPLIEGUE COMPLETADO Y VERIFICADO!! ---"
 | |
|           EOF |