@@ -158,12 +158,47 @@ jobs:
158158 # Create the base directory on the remote VM
159159 ssh -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa opc@${{ secrets.ORACLE_VM_IP }} "mkdir -p ~/music-analytics/vm-deploy"
160160
161- # Recursively copy each service directory to the remote VM
162- scp -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa -r vm-deploy/eureka-server opc@${{ secrets.ORACLE_VM_IP }}:~/music-analytics/vm-deploy/eureka-server
163- scp -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa -r vm-deploy/api-gateway opc@${{ secrets.ORACLE_VM_IP }}:~/music-analytics/vm-deploy/api-gateway
164- scp -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa -r vm-deploy/recommendation-service opc@${{ secrets.ORACLE_VM_IP }}:~/music-analytics/vm-deploy/recommendation-service
165- scp -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa -r vm-deploy/statistics-service opc@${{ secrets.ORACLE_VM_IP }}:~/music-analytics/vm-deploy/statistics-service
166- scp -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa -r vm-deploy/user-tracking-service opc@${{ secrets.ORACLE_VM_IP }}:~/music-analytics/vm-deploy/user-tracking-service
161+ # Recursively copy each service directory to the remote VM with the destination path quoted
162+ scp -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa -r vm-deploy/eureka-server opc@${{ secrets.ORACLE_VM_IP }}:" ~/music-analytics/vm-deploy/eureka-server"
163+ scp -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa -r vm-deploy/api-gateway opc@${{ secrets.ORACLE_VM_IP }}:" ~/music-analytics/vm-deploy/api-gateway"
164+ scp -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa -r vm-deploy/recommendation-service opc@${{ secrets.ORACLE_VM_IP }}:" ~/music-analytics/vm-deploy/recommendation-service"
165+ scp -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa -r vm-deploy/statistics-service opc@${{ secrets.ORACLE_VM_IP }}:" ~/music-analytics/vm-deploy/statistics-service"
166+ scp -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa -r vm-deploy/user-tracking-service opc@${{ secrets.ORACLE_VM_IP }}:" ~/music-analytics/vm-deploy/user-tracking-service"
167167
168168 # Copy the docker-compose file and environment file to the remote VM
169- scp -o StrictHostKeyChecking=no -i $HOME/.ssh/id
169+ scp -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa cloud-deploy/docker-compose.direct.yml opc@${{ secrets.ORACLE_VM_IP }}:"~/music-analytics/vm-deploy/docker-compose.yml"
170+ scp -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa vm-deploy/.env opc@${{ secrets.ORACLE_VM_IP }}:"~/music-analytics/vm-deploy/.env"
171+
172+ # On the remote VM: log in to the Docker registry, build images for each service, adjust docker-compose, and deploy containers
173+ ssh -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa opc@${{ secrets.ORACLE_VM_IP }} "cd ~/music-analytics/vm-deploy && \
174+ echo 'Logging in to Docker registry...' && \
175+ echo \"${{ secrets.OCI_AUTH_TOKEN }}\" | docker login ${{ secrets.OCI_REGISTRY }} -u ${{ secrets.OCI_USERNAME }} --password-stdin && \
176+ echo 'Stopping and removing existing containers if any...' && \
177+ docker ps -q | xargs -r docker stop && docker ps -aq | xargs -r docker rm && \
178+ echo 'Building Docker images locally...' && \
179+ for service in eureka-server api-gateway recommendation-service statistics-service user-tracking-service; do \
180+ docker build -t music-analytics/\$service ./\$service || exit 1; \
181+ done && \
182+ echo 'Fixing docker-compose file (removing version attribute)...' && \
183+ sed -i '/^version:/d' docker-compose.yml && \
184+ echo 'Starting new containers with docker-compose...' && \
185+ docker-compose up -d && \
186+ echo 'Container status:' && docker-compose ps"
187+
188+ - name : Debug on failure
189+ if : failure()
190+ run : |
191+ if [ -f "$HOME/.ssh/id_rsa" ]; then
192+ ssh -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa opc@${{ secrets.ORACLE_VM_IP }} '
193+ echo "==== ENVIRONMENT VARIABLES ====" &&
194+ env | grep DOCKER || echo "No Docker environment variables found" &&
195+ echo "==== DOCKER-COMPOSE FILE CONTENT ====" &&
196+ cat ~/music-analytics/vm-deploy/docker-compose.yml || echo "No docker-compose file found" &&
197+ echo "==== EUREKA SERVER LOGS ====" &&
198+ docker logs $(docker ps -q -f name=eureka-server) || echo "No eureka-server logs available" &&
199+ echo "==== ALL CONTAINERS ====" &&
200+ docker ps -a || echo "No containers found"
201+ '
202+ else
203+ echo "SSH key file not found, cannot retrieve logs"
204+ fi
0 commit comments