Skip to content

Commit 95b31ac

Browse files
committed
refactor: streamline GitHub Actions workflow by simplifying Maven and Docker steps
1 parent 3e9d80d commit 95b31ac

File tree

1 file changed

+18
-129
lines changed

1 file changed

+18
-129
lines changed

.github/workflows/deploy.yml

Lines changed: 18 additions & 129 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,13 @@ jobs:
2626
server-username: MAVEN_USERNAME
2727
server-password: MAVEN_PASSWORD
2828

29-
# Verify Maven configuration
30-
- name: Debug Maven Configuration
29+
- name: Verify Maven Configuration
3130
run: |
32-
echo "Verifying Maven configuration..."
31+
echo "Checking Maven setup..."
3332
echo "JAVA_HOME: $JAVA_HOME"
3433
mvn -version
3534
ls -la ~/.m2 || true
3635
37-
# Create local Maven settings with credentials
3836
- name: Setup Maven Settings
3937
run: |
4038
mkdir -p ~/.m2
@@ -49,55 +47,17 @@ jobs:
4947
<password>${{ secrets.MAVEN_PASSWORD }}</password>
5048
</server>
5149
</servers>
52-
<mirrors>
53-
<mirror>
54-
<id>central</id>
55-
<name>Maven Central</name>
56-
<url>https://repo1.maven.org/maven2/</url>
57-
<mirrorOf>central</mirrorOf>
58-
</mirror>
59-
</mirrors>
60-
<profiles>
61-
<profile>
62-
<id>default</id>
63-
<repositories>
64-
<repository>
65-
<id>central</id>
66-
<url>https://repo1.maven.org/maven2</url>
67-
<releases>
68-
<enabled>true</enabled>
69-
</releases>
70-
<snapshots>
71-
<enabled>false</enabled>
72-
</snapshots>
73-
</repository>
74-
</repositories>
75-
</profile>
76-
</profiles>
77-
<activeProfiles>
78-
<activeProfile>default</activeProfile>
79-
</activeProfiles>
8050
</settings>' > ~/.m2/settings.xml
8151
82-
# Build with Maven using explicit credentials
8352
- name: Build with Maven
8453
env:
8554
MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }}
8655
MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }}
8756
run: |
88-
echo "Starting Maven build..."
89-
mvn -B -X -s ~/.m2/settings.xml clean install -DskipTests || {
90-
echo "Maven build failed. Checking settings..."
91-
ls -la ~/.m2
92-
echo "Current directory contents:"
93-
ls -la
94-
exit 1
95-
}
57+
mvn -B -s ~/.m2/settings.xml clean install -DskipTests
9658
97-
# Verify build artifacts
9859
- name: Verify Build Artifacts
9960
run: |
100-
echo "Checking build artifacts..."
10161
for service in api-gateway eureka-server recommendation-service statistics-service user-tracking-service; do
10262
if [ -f "$service/target/$service-1.0-SNAPSHOT.jar" ]; then
10363
echo "$service build successful"
@@ -107,72 +67,31 @@ jobs:
10767
fi
10868
done
10969
110-
# Set up Docker buildx
11170
- name: Set up Docker Buildx
11271
uses: docker/setup-buildx-action@v1
11372

114-
# Verify Docker setup
115-
- name: Verify Docker Configuration
116-
run: |
117-
echo "Docker version:"
118-
docker version
119-
echo "Docker info:"
120-
docker info
121-
122-
# Login to Oracle Container Registry
12373
- name: Log in to Oracle Container Registry
12474
uses: docker/login-action@v1
12575
with:
12676
registry: ${{ secrets.OCI_REGISTRY }}
12777
username: ${{ secrets.OCI_USERNAME }}
12878
password: ${{ secrets.OCI_AUTH_TOKEN }}
12979

130-
# Build and push Docker images with better error handling
131-
- name: Build and push Docker images
80+
- name: Build and Push Docker Images
13281
env:
13382
REGISTRY: ${{ secrets.OCI_REGISTRY }}
13483
NAMESPACE: ${{ secrets.OCI_NAMESPACE }}
13584
run: |
136-
echo "Building and pushing Docker images..."
137-
138-
# Function to build and push an image
139-
build_and_push() {
140-
local service=$1
141-
echo "Processing $service..."
142-
143-
# Build image
144-
echo "Building $service image..."
145-
docker build -t ${REGISTRY}/${NAMESPACE}/$service:latest -f $service/Dockerfile . || {
146-
echo "Error building $service image"
147-
return 1
148-
}
149-
150-
# Push image
151-
echo "Pushing $service image..."
152-
docker push ${REGISTRY}/${NAMESPACE}/$service:latest || {
153-
echo "Error pushing $service image"
154-
return 1
155-
}
156-
157-
echo "$service successfully built and pushed"
158-
return 0
159-
}
160-
161-
# Process each service
16285
services=("api-gateway" "eureka-server" "recommendation-service" "statistics-service" "user-tracking-service")
16386
for service in "${services[@]}"; do
164-
build_and_push $service || {
165-
echo "Failed to process $service"
166-
exit 1
167-
}
87+
echo "Building and pushing $service..."
88+
docker build -t ${REGISTRY}/${NAMESPACE}/$service:latest -f $service/Dockerfile .
89+
docker push ${REGISTRY}/${NAMESPACE}/$service:latest
16890
done
16991
170-
# Logout from Docker registry
17192
- name: Log out from Oracle Container Registry
172-
if: always()
173-
run: |
174-
echo "Logging out from Docker registry..."
175-
docker logout ${{ secrets.OCI_REGISTRY }}
93+
if: ${{ always() }}
94+
run: docker logout ${{ secrets.OCI_REGISTRY }}
17695

17796
deploy:
17897
runs-on: ubuntu-latest
@@ -187,23 +106,20 @@ jobs:
187106
- name: Checkout code
188107
uses: actions/checkout@v2
189108

190-
# Login to Oracle Container Registry for deployment
191109
- name: Log in to Oracle Container Registry
192110
uses: docker/login-action@v1
193111
with:
194112
registry: ${{ secrets.OCI_REGISTRY }}
195113
username: ${{ secrets.OCI_USERNAME }}
196114
password: ${{ secrets.OCI_AUTH_TOKEN }}
197115

198-
# Verify VM connection before deployment
199116
- name: Verify VM Connection
200117
env:
201118
ORACLE_VM_IP: ${{ secrets.ORACLE_VM_IP }}
202119
run: |
203-
echo "Verifying VM connection..."
204120
echo "${{ secrets.SSH_PRIVATE_KEY }}" > ssh_key.pem
205121
chmod 600 ssh_key.pem
206-
ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 -i ssh_key.pem opc@${ORACLE_VM_IP} echo "VM connection successful" || {
122+
ssh -o StrictHostKeyChecking=no -i ssh_key.pem opc@${ORACLE_VM_IP} echo "VM connection successful" || {
207123
echo "Failed to connect to VM"
208124
exit 1
209125
}
@@ -212,46 +128,19 @@ jobs:
212128
env:
213129
ORACLE_VM_IP: ${{ secrets.ORACLE_VM_IP }}
214130
run: |
215-
echo "Starting deployment..."
216131
echo "${{ secrets.SSH_PRIVATE_KEY }}" > ssh_key.pem
217132
chmod 600 ssh_key.pem
218133
ssh -o StrictHostKeyChecking=no -i ssh_key.pem opc@${ORACLE_VM_IP} << 'EOF'
219134
echo "Deploying to VM..."
220-
cd ~/music-analytics/vm-deploy || {
221-
echo "Failed to change directory"
222-
exit 1
223-
}
224-
225-
echo "Logging into Docker registry..."
226-
docker login ${REGISTRY} -u ${OCI_USERNAME} -p ${OCI_AUTH_TOKEN} || {
227-
echo "Docker login failed"
228-
exit 1
229-
}
230-
231-
echo "Pulling latest images..."
232-
docker-compose pull || {
233-
echo "Failed to pull images"
234-
docker logout ${REGISTRY}
235-
exit 1
236-
}
237-
238-
echo "Starting services..."
239-
docker-compose up -d || {
240-
echo "Failed to start services"
241-
docker logout ${REGISTRY}
242-
exit 1
243-
}
244-
245-
echo "Logging out from Docker registry..."
135+
cd ~/music-analytics/vm-deploy || exit 1
136+
docker login ${REGISTRY} -u ${OCI_USERNAME} -p ${OCI_AUTH_TOKEN} || exit 1
137+
docker-compose pull || { docker logout ${REGISTRY}; exit 1; }
138+
docker-compose up -d || { docker logout ${REGISTRY}; exit 1; }
246139
docker logout ${REGISTRY}
247-
248140
echo "Deployment completed successfully"
249-
EOF
250-
rm -f ssh_key.pem # Clean up sensitive files
141+
EOF
142+
rm -f ssh_key.pem
251143
252-
# Logout from Docker registry
253144
- name: Log out from Oracle Container Registry
254-
if: always()
255-
run: |
256-
echo "Final cleanup: Logging out from Docker registry..."
257-
docker logout ${{ secrets.OCI_REGISTRY }}
145+
if: ${{ always() }}
146+
run: docker logout ${{ secrets.OCI_REGISTRY }}

0 commit comments

Comments
 (0)