Skip to content

Commit ad916f4

Browse files
committed
feat: enhance SSH key setup in deployment workflow with improved error handling and debugging output
1 parent 5eaa011 commit ad916f4

File tree

1 file changed

+34
-38
lines changed

1 file changed

+34
-38
lines changed

.github/workflows/deploy.yml

Lines changed: 34 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -122,76 +122,72 @@ jobs:
122122
echo "OCI_USERNAME is set: ${{ secrets.OCI_USERNAME != '' }}"
123123
echo "OCI_AUTH_TOKEN is set: ${{ secrets.OCI_AUTH_TOKEN != '' }}"
124124
125+
# Fixed SSH key setup step
125126
- name: Set up SSH key
126127
run: |
127-
# Create directory and set permissions with proper error handling
128-
mkdir -p ~/.ssh || { echo "Failed to create ~/.ssh directory"; exit 1; }
129-
chmod 700 ~/.ssh || { echo "Failed to set permissions on ~/.ssh"; exit 1; }
128+
# Create directory and set permissions
129+
mkdir -p $HOME/.ssh
130+
chmod 700 $HOME/.ssh
130131
131132
# Debug directory permissions
132-
ls -la ~ | grep .ssh
133+
ls -la $HOME/.ssh || echo "Unable to list .ssh directory"
133134
134135
# Check if the SSH key secret is set
135136
if [ -z "${{ secrets.SSH_PRIVATE_KEY }}" ]; then
136137
echo "ERROR: SSH_PRIVATE_KEY secret is not set!"
137138
exit 1
138139
fi
139140
140-
# Write SSH key file using direct redirection instead of tee
141-
echo "${{ secrets.SSH_PRIVATE_KEY }}" > ${{ env.SSH_KEY_PATH }}
142-
143-
# Check if the file was created
144-
if [ ! -f "${{ env.SSH_KEY_PATH }}" ]; then
145-
echo "ERROR: Failed to create SSH key file!"
146-
exit 1
147-
fi
141+
# Write SSH key file and check it was created
142+
echo "${{ secrets.SSH_PRIVATE_KEY }}" > $HOME/.ssh/id_rsa
143+
ls -la $HOME/.ssh/id_rsa || { echo "ERROR: Failed to create SSH key file!"; exit 1; }
148144
149145
# Set proper permissions on the key file
150-
chmod 600 ${{ env.SSH_KEY_PATH }} || {
151-
echo "ERROR: Failed to set permissions on SSH key file!"
152-
exit 1
153-
}
146+
chmod 600 $HOME/.ssh/id_rsa || { echo "ERROR: Failed to set permissions on SSH key file!"; exit 1; }
154147
155148
# Verify file content (indirectly)
156-
key_size=$(stat -c %s ${{ env.SSH_KEY_PATH }})
149+
key_size=$(stat -c %s $HOME/.ssh/id_rsa)
157150
echo "SSH key file size: $key_size bytes"
158151
159-
if [ "$key_size" -lt 100 ]; then
160-
echo "WARNING: SSH key file seems too small, may be invalid"
161-
fi
162-
163-
# Add VM to known hosts - verify VM_IP_ADDRESS is set
152+
# Add VM to known hosts
164153
if [ -z "${{ secrets.VM_IP_ADDRESS }}" ]; then
165154
echo "ERROR: VM_IP_ADDRESS secret is not set!"
166155
exit 1
167156
fi
168157
169-
ssh-keyscan -H ${{ secrets.VM_IP_ADDRESS }} >> ~/.ssh/known_hosts || {
170-
echo "ERROR: Failed to add VM to known hosts!"
171-
exit 1
172-
}
158+
# Initialize known_hosts file
159+
touch $HOME/.ssh/known_hosts
173160
174-
# Test SSH connection (with verbose mode for debugging)
161+
# Add VM to known hosts
162+
ssh-keyscan -H ${{ secrets.VM_IP_ADDRESS }} >> $HOME/.ssh/known_hosts
163+
164+
# Test SSH connection
175165
echo "Testing SSH connection..."
176-
ssh -v -o StrictHostKeyChecking=no -i ${{ env.SSH_KEY_PATH }} opc@${{ secrets.VM_IP_ADDRESS }} "echo SSH connection successful"
166+
ssh -o BatchMode=yes -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa opc@${{ secrets.VM_IP_ADDRESS }} "echo SSH connection successful" || {
167+
echo "ERROR: SSH connection failed. Debugging information:"
168+
ls -la $HOME/.ssh/
169+
echo "Key file content (first line only):"
170+
head -1 $HOME/.ssh/id_rsa
171+
exit 1
172+
}
177173
178174
- name: Deploy to Oracle VM
179175
run: |
180176
# Create directories on VM
181-
ssh -o StrictHostKeyChecking=no -i ${{ env.SSH_KEY_PATH }} opc@${{ secrets.VM_IP_ADDRESS }} "mkdir -p ~/music-analytics/vm-deploy/{eureka-server,api-gateway,recommendation-service,statistics-service,user-tracking-service}"
177+
ssh -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa opc@${{ secrets.VM_IP_ADDRESS }} "mkdir -p ~/music-analytics/vm-deploy/{eureka-server,api-gateway,recommendation-service,statistics-service,user-tracking-service}"
182178
183179
# Copy JAR files and Dockerfiles to VM
184-
scp -o StrictHostKeyChecking=no -i ${{ env.SSH_KEY_PATH }} vm-deploy/eureka-server/eureka-server.jar vm-deploy/eureka-server/Dockerfile opc@${{ secrets.VM_IP_ADDRESS }}:~/music-analytics/vm-deploy/eureka-server/
185-
scp -o StrictHostKeyChecking=no -i ${{ env.SSH_KEY_PATH }} vm-deploy/api-gateway/api-gateway.jar vm-deploy/api-gateway/Dockerfile opc@${{ secrets.VM_IP_ADDRESS }}:~/music-analytics/vm-deploy/api-gateway/
186-
scp -o StrictHostKeyChecking=no -i ${{ env.SSH_KEY_PATH }} vm-deploy/recommendation-service/recommendation-service.jar vm-deploy/recommendation-service/Dockerfile opc@${{ secrets.VM_IP_ADDRESS }}:~/music-analytics/vm-deploy/recommendation-service/
187-
scp -o StrictHostKeyChecking=no -i ${{ env.SSH_KEY_PATH }} vm-deploy/statistics-service/statistics-service.jar vm-deploy/statistics-service/Dockerfile opc@${{ secrets.VM_IP_ADDRESS }}:~/music-analytics/vm-deploy/statistics-service/
188-
scp -o StrictHostKeyChecking=no -i ${{ env.SSH_KEY_PATH }} vm-deploy/user-tracking-service/user-tracking-service.jar vm-deploy/user-tracking-service/Dockerfile opc@${{ secrets.VM_IP_ADDRESS }}:~/music-analytics/vm-deploy/user-tracking-service/
180+
scp -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa vm-deploy/eureka-server/eureka-server.jar vm-deploy/eureka-server/Dockerfile opc@${{ secrets.VM_IP_ADDRESS }}:~/music-analytics/vm-deploy/eureka-server/
181+
scp -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa vm-deploy/api-gateway/api-gateway.jar vm-deploy/api-gateway/Dockerfile opc@${{ secrets.VM_IP_ADDRESS }}:~/music-analytics/vm-deploy/api-gateway/
182+
scp -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa vm-deploy/recommendation-service/recommendation-service.jar vm-deploy/recommendation-service/Dockerfile opc@${{ secrets.VM_IP_ADDRESS }}:~/music-analytics/vm-deploy/recommendation-service/
183+
scp -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa vm-deploy/statistics-service/statistics-service.jar vm-deploy/statistics-service/Dockerfile opc@${{ secrets.VM_IP_ADDRESS }}:~/music-analytics/vm-deploy/statistics-service/
184+
scp -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa vm-deploy/user-tracking-service/user-tracking-service.jar vm-deploy/user-tracking-service/Dockerfile opc@${{ secrets.VM_IP_ADDRESS }}:~/music-analytics/vm-deploy/user-tracking-service/
189185
190186
# Copy docker-compose file
191-
scp -o StrictHostKeyChecking=no -i ${{ env.SSH_KEY_PATH }} cloud-deploy/docker-compose.direct.yml opc@${{ secrets.VM_IP_ADDRESS }}:~/music-analytics/vm-deploy/docker-compose.yml
187+
scp -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa cloud-deploy/docker-compose.direct.yml opc@${{ secrets.VM_IP_ADDRESS }}:~/music-analytics/vm-deploy/docker-compose.yml
192188
193189
# Build and run containers
194-
ssh -o StrictHostKeyChecking=no -i ${{ env.SSH_KEY_PATH }} opc@${{ secrets.VM_IP_ADDRESS }} "cd ~/music-analytics/vm-deploy && \
190+
ssh -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa opc@${{ secrets.VM_IP_ADDRESS }} "cd ~/music-analytics/vm-deploy && \
195191
echo 'Logging in to Docker registry...' && \
196192
docker login ${{ env.DOCKER_REGISTRY }} -u ${{ env.OCI_USERNAME }} -p ${{ env.OCI_AUTH_TOKEN }} && \
197193
echo 'Stopping ALL existing containers...' && \
@@ -206,8 +202,8 @@ jobs:
206202
- name: Debug on failure
207203
if: failure()
208204
run: |
209-
if [ -f "${{ env.SSH_KEY_PATH }}" ]; then
210-
ssh -o StrictHostKeyChecking=no -i ${{ env.SSH_KEY_PATH }} opc@${{ secrets.VM_IP_ADDRESS }} '
205+
if [ -f "$HOME/.ssh/id_rsa" ]; then
206+
ssh -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa opc@${{ secrets.VM_IP_ADDRESS }} '
211207
echo "==== EUREKA SERVER LOGS ====" &&
212208
docker logs $(docker ps -q -f name=eureka-server) || echo "No eureka-server logs available"
213209
'

0 commit comments

Comments
 (0)