Skip to content

Commit e2e49af

Browse files
committed
feat: enhance deployment workflow with improved SCP commands and debugging on failure
1 parent da11436 commit e2e49af

File tree

1 file changed

+42
-7
lines changed

1 file changed

+42
-7
lines changed

.github/workflows/deploy.yml

Lines changed: 42 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)