2626 distribution : ' temurin'
2727 cache : ' maven'
2828
29- # Configure Maven for reliability
3029 - name : Configure Maven settings
3130 run : |
3231 mkdir -p ~/.m2
4342 </settings>
4443 EOF
4544
46- # Build with retries
4745 - name : Build with Maven (with retries)
4846 run : |
4947 max_attempts=3
6462 exit 1
6563 fi
6664
67- # Verify JAR files exist
6865 - name : Verify build artifacts
6966 run : |
7067 echo "Checking JAR files..."
7774 fi
7875 done
7976
80- # Debug step: List all JAR files in target directories
8177 - name : List target directory contents
8278 run : |
8379 echo "Listing all target directories contents..."
@@ -86,141 +82,97 @@ jobs:
8682 ls -la $service/target/ || echo "No target directory found"
8783 done
8884
89- # Critical step: Prepare Docker build context
9085 - name : Prepare Docker build context
9186 run : |
92- # Create vm-deploy directories
93- mkdir -p vm-deploy/eureka-server
94- mkdir -p vm-deploy/api-gateway
95- mkdir -p vm-deploy/recommendation-service
96- mkdir -p vm-deploy/statistics-service
97- mkdir -p vm-deploy/user-tracking-service
98-
99- # Copy JAR files to vm-deploy directories
87+ mkdir -p vm-deploy/eureka-server vm-deploy/api-gateway vm-deploy/recommendation-service vm-deploy/statistics-service vm-deploy/user-tracking-service
10088 cp $(find eureka-server/target -name "eureka-server*.jar" | grep -v original) vm-deploy/eureka-server/eureka-server.jar
10189 cp $(find api-gateway/target -name "api-gateway*.jar" | grep -v original) vm-deploy/api-gateway/api-gateway.jar
10290 cp $(find recommendation-service/target -name "recommendation-service*.jar" | grep -v original) vm-deploy/recommendation-service/recommendation-service.jar
10391 cp $(find statistics-service/target -name "statistics-service*.jar" | grep -v original) vm-deploy/statistics-service/statistics-service.jar
10492 cp $(find user-tracking-service/target -name "user-tracking-service*.jar" | grep -v original) vm-deploy/user-tracking-service/user-tracking-service.jar
10593
106- # Copy Dockerfiles
10794 cp eureka-server/Dockerfile vm-deploy/eureka-server/
10895 cp api-gateway/Dockerfile vm-deploy/api-gateway/
10996 cp recommendation-service/Dockerfile vm-deploy/recommendation-service/
11097 cp statistics-service/Dockerfile vm-deploy/statistics-service/
11198 cp user-tracking-service/Dockerfile vm-deploy/user-tracking-service/
11299
113- # Verify files were copied
114100 echo "Verifying copied files:"
115101 ls -la vm-deploy/*/
116102
117103 - name : Debug environment variables
118104 run : |
119- echo "Checking environment variables (with sensitive data masked):"
105+ echo "Checking environment variables (sensitive data masked):"
120106 echo "ORACLE_VM_IP is set: ${{ secrets.ORACLE_VM_IP != '' }}"
121107 echo "DOCKER_REGISTRY is set: ${{ secrets.OCI_REGISTRY != '' }}"
122108 echo "OCI_USERNAME is set: ${{ secrets.OCI_USERNAME != '' }}"
123109 echo "OCI_AUTH_TOKEN is set: ${{ secrets.OCI_AUTH_TOKEN != '' }}"
124110
125- # Fixed SSH key setup step
126111 - name : Set up SSH key
127112 run : |
128- # Create directory and set permissions
129113 mkdir -p $HOME/.ssh
130114 chmod 700 $HOME/.ssh
131-
132- # Debug directory permissions
133115 ls -la $HOME/.ssh || echo "Unable to list .ssh directory"
134-
135- # Check if the SSH key secret is set
136116 if [ -z "${{ secrets.SSH_PRIVATE_KEY }}" ]; then
137117 echo "ERROR: SSH_PRIVATE_KEY secret is not set!"
138118 exit 1
139119 fi
140-
141- # Write SSH key file and check it was created
142120 echo "${{ secrets.SSH_PRIVATE_KEY }}" > $HOME/.ssh/id_rsa
143121 ls -la $HOME/.ssh/id_rsa || { echo "ERROR: Failed to create SSH key file!"; exit 1; }
144-
145- # Set proper permissions on the key file
146122 chmod 600 $HOME/.ssh/id_rsa || { echo "ERROR: Failed to set permissions on SSH key file!"; exit 1; }
147-
148- # Verify file content (indirectly)
149123 key_size=$(stat -c %s $HOME/.ssh/id_rsa)
150124 echo "SSH key file size: $key_size bytes"
151-
152- # Add VM to known hosts
153125 if [ -z "${{ secrets.ORACLE_VM_IP }}" ]; then
154126 echo "ERROR: ORACLE_VM_IP secret is not set!"
155127 exit 1
156128 fi
157-
158- # Initialize known_hosts file
159129 touch $HOME/.ssh/known_hosts
160-
161- # Add VM to known hosts
162130 ssh-keyscan -H ${{ secrets.ORACLE_VM_IP }} >> $HOME/.ssh/known_hosts
163-
164- # Test SSH connection
165131 echo "Testing SSH connection..."
166132 ssh -o BatchMode=yes -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa opc@${{ secrets.ORACLE_VM_IP }} "echo SSH connection successful" || {
167- echo "ERROR: SSH connection failed. Debugging information:"
168133 ls -la $HOME/.ssh/
169- echo "Key file content (first line only):"
170134 head -1 $HOME/.ssh/id_rsa
171135 exit 1
172136 }
173137
174- # Prepare .env file for docker-compose
175138 - name : Prepare environment file
176139 run : |
177- # Create .env file with secrets for docker-compose
178140 cat > vm-deploy/.env << EOF
179141 DOCKER_REGISTRY=${{ secrets.OCI_REGISTRY }}
180142 OCI_USERNAME=${{ secrets.OCI_USERNAME }}
181143 OCI_AUTH_TOKEN=${{ secrets.OCI_AUTH_TOKEN }}
182144 EOF
183-
184- # Show file (without sensitive data)
185145 echo "Created .env file for docker-compose"
186- echo "DOCKER_REGISTRY is set: true"
187- echo "OCI_USERNAME is set: true"
188- echo "OCI_AUTH_TOKEN is set: true"
146+ echo "DOCKER_REGISTRY, OCI_USERNAME, OCI_AUTH_TOKEN are set"
189147
190148 - name : Deploy to Oracle VM
191149 run : |
192- # Create directories on VM
193150 ssh -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa opc@${{ secrets.ORACLE_VM_IP }} "mkdir -p ~/music-analytics/vm-deploy/{eureka-server,api-gateway,recommendation-service,statistics-service,user-tracking-service}"
194151
195- # Copy JAR files and Dockerfiles to VM
196152 scp -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa vm-deploy/eureka-server/eureka-server.jar vm-deploy/eureka-server/Dockerfile opc@${{ secrets.ORACLE_VM_IP }}:~/music-analytics/vm-deploy/eureka-server/
197153 scp -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa vm-deploy/api-gateway/api-gateway.jar vm-deploy/api-gateway/Dockerfile opc@${{ secrets.ORACLE_VM_IP }}:~/music-analytics/vm-deploy/api-gateway/
198154 scp -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa vm-deploy/recommendation-service/recommendation-service.jar vm-deploy/recommendation-service/Dockerfile opc@${{ secrets.ORACLE_VM_IP }}:~/music-analytics/vm-deploy/recommendation-service/
199155 scp -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa vm-deploy/statistics-service/statistics-service.jar vm-deploy/statistics-service/Dockerfile opc@${{ secrets.ORACLE_VM_IP }}:~/music-analytics/vm-deploy/statistics-service/
200156 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.ORACLE_VM_IP }}:~/music-analytics/vm-deploy/user-tracking-service/
201157
202- # Copy docker-compose file and .env file
203158 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
204159 scp -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa vm-deploy/.env opc@${{ secrets.ORACLE_VM_IP }}:~/music-analytics/vm-deploy/.env
205160
206- # Build and run containers
207161 ssh -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa opc@${{ secrets.ORACLE_VM_IP }} "cd ~/music-analytics/vm-deploy && \
208162 echo 'Logging in to Docker registry...' && \
209- docker login ${{ secrets.OCI_REGISTRY }} -u ${{ secrets.OCI_USERNAME }} -p ${{ secrets.OCI_AUTH_TOKEN }} && \
210- echo 'Stopping existing containers if any...' && \
211- docker ps -q | xargs -r docker stop && \
212- docker ps -aq | xargs -r docker rm && \
213- echo 'Starting new containers...' && \
214- echo 'DOCKER_REGISTRY=${{ secrets.OCI_REGISTRY }}' > .env && \
215- echo 'OCI_USERNAME=${{ secrets.OCI_USERNAME }}' >> .env && \
216- echo 'OCI_AUTH_TOKEN=${{ secrets.OCI_AUTH_TOKEN }}' >> .env && \
217- cat .env && \
218- export DOCKER_REGISTRY=${{ secrets.OCI_REGISTRY }} && \
163+ echo \" ${{ secrets.OCI_AUTH_TOKEN }}\" | docker login ${{ secrets.OCI_REGISTRY }} -u ${{ secrets.OCI_USERNAME }} --password-stdin && \
164+ echo 'Stopping and removing existing containers if any...' && \
165+ docker ps -q | xargs -r docker stop && docker ps -aq | xargs -r docker rm && \
166+ echo 'Building Docker images locally...' && \
167+ for service in eureka-server api-gateway recommendation-service statistics-service user-tracking-service; do \
168+ docker build -t music-analytics/\$service ./\$service || exit 1; \
169+ done && \
170+ echo 'Fixing docker-compose file (removing version attribute)...' && \
171+ sed -i '/^version:/d' docker-compose.yml && \
172+ echo 'Starting new containers with docker-compose...' && \
219173 docker-compose up -d && \
220- echo 'Container status:' && \
221- docker-compose ps"
222-
223- # Debug command
174+ echo 'Container status:' && docker-compose ps"
175+
224176 - name : Debug on failure
225177 if : failure()
226178 run : |
0 commit comments