Skip to content

Commit 2a0c9ce

Browse files
authored
Update and rename deno.yml to maven-multi-flow.yml
1 parent 1a7d3bb commit 2a0c9ce

File tree

2 files changed

+186
-42
lines changed

2 files changed

+186
-42
lines changed

.github/workflows/deno.yml

-42
This file was deleted.
+186
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,186 @@
1+
name: Maven Multi-Job Workflow
2+
3+
on:
4+
push:
5+
branches: [ main ]
6+
pull_request:
7+
branches: [ main ]
8+
schedule:
9+
- cron: '0 3 * * *' # Runs daily at 3 AM UTC
10+
11+
jobs:
12+
build:
13+
runs-on: ubuntu-latest
14+
name: Build Project
15+
steps:
16+
- name: Checkout Repository
17+
uses: actions/checkout@v3
18+
19+
- name: Set Up JDK 11
20+
uses: actions/setup-java@v3
21+
with:
22+
distribution: 'temurin'
23+
java-version: '11'
24+
cache: maven
25+
26+
- name: Display Java Version
27+
run: java -version
28+
29+
- name: Maven Clean and Compile
30+
run: mvn clean compile
31+
32+
unit-tests:
33+
needs: build
34+
runs-on: ubuntu-latest
35+
strategy:
36+
matrix:
37+
java-version: [8, 11, 17]
38+
name: Run Unit Tests on Java ${{ matrix.java-version }}
39+
steps:
40+
- name: Checkout Repository
41+
uses: actions/checkout@v3
42+
43+
- name: Set Up JDK ${{ matrix.java-version }}
44+
uses: actions/setup-java@v3
45+
with:
46+
distribution: 'temurin'
47+
java-version: ${{ matrix.java-version }}
48+
cache: maven
49+
50+
- name: Maven Test
51+
run: mvn test
52+
53+
- name: Upload Unit Test Results
54+
uses: actions/upload-artifact@v3
55+
with:
56+
name: unit-test-results-java-${{ matrix.java-version }}
57+
path: target/surefire-reports/
58+
59+
integration-tests:
60+
needs: build
61+
runs-on: ubuntu-latest
62+
name: Run Integration Tests
63+
steps:
64+
- name: Checkout Repository
65+
uses: actions/checkout@v3
66+
67+
- name: Set Up JDK 11
68+
uses: actions/setup-java@v3
69+
with:
70+
distribution: 'temurin'
71+
java-version: '11'
72+
cache: maven
73+
74+
- name: Maven Integration Test
75+
run: mvn verify -P integration-tests
76+
77+
- name: Upload Integration Test Results
78+
uses: actions/upload-artifact@v3
79+
with:
80+
name: integration-test-results
81+
path: target/failsafe-reports/
82+
83+
code-analysis:
84+
needs: build
85+
runs-on: ubuntu-latest
86+
name: Static Code Analysis
87+
steps:
88+
- name: Checkout Repository
89+
uses: actions/checkout@v3
90+
91+
- name: Set Up JDK 11
92+
uses: actions/setup-java@v3
93+
with:
94+
distribution: 'temurin'
95+
java-version: '11'
96+
97+
- name: Maven Code Analysis with SpotBugs
98+
run: mvn spotbugs:check
99+
100+
- name: Upload SpotBugs Report
101+
uses: actions/upload-artifact@v3
102+
with:
103+
name: spotbugs-report
104+
path: target/spotbugs/
105+
106+
package:
107+
needs: [unit-tests, integration-tests, code-analysis]
108+
runs-on: ubuntu-latest
109+
name: Package Application
110+
steps:
111+
- name: Checkout Repository
112+
uses: actions/checkout@v3
113+
114+
- name: Set Up JDK 11
115+
uses: actions/setup-java@v3
116+
with:
117+
distribution: 'temurin'
118+
java-version: '11'
119+
cache: maven
120+
121+
- name: Maven Package
122+
run: mvn package
123+
124+
- name: Upload Package Artifact
125+
uses: actions/upload-artifact@v3
126+
with:
127+
name: packaged-artifact
128+
path: target/*.jar
129+
130+
deploy:
131+
needs: package
132+
runs-on: ubuntu-latest
133+
name: Deploy Application
134+
steps:
135+
- name: Checkout Repository
136+
uses: actions/checkout@v3
137+
138+
- name: Set Up JDK 11
139+
uses: actions/setup-java@v3
140+
with:
141+
distribution: 'temurin'
142+
java-version: '11'
143+
144+
- name: Download Packaged Artifact
145+
uses: actions/download-artifact@v3
146+
with:
147+
name: packaged-artifact
148+
path: deploy/
149+
150+
- name: Deploy to Server
151+
env:
152+
DEPLOYMENT_SERVER: ${{ secrets.DEPLOYMENT_SERVER }}
153+
DEPLOYMENT_USER: ${{ secrets.DEPLOYMENT_USER }}
154+
DEPLOYMENT_KEY: ${{ secrets.DEPLOYMENT_KEY }}
155+
run: |
156+
# Ensure SSH key has proper permissions
157+
mkdir -p ~/.ssh
158+
echo "$DEPLOYMENT_KEY" > ~/.ssh/id_rsa
159+
chmod 600 ~/.ssh/id_rsa
160+
161+
# Add server to known hosts to prevent prompt
162+
ssh-keyscan $DEPLOYMENT_SERVER >> ~/.ssh/known_hosts
163+
164+
# Securely copy the JAR to the deployment server
165+
scp deploy/*.jar $DEPLOYMENT_USER@$DEPLOYMENT_SERVER:/path/to/deploy/
166+
167+
# Execute deployment commands on the server
168+
ssh -i ~/.ssh/id_rsa $DEPLOYMENT_USER@$DEPLOYMENT_SERVER 'bash -s' <<'ENDSSH'
169+
cd /path/to/deploy/
170+
pkill -f your-application.jar || true
171+
nohup java -jar your-application.jar > application.log 2>&1 &
172+
ENDSSH
173+
174+
- name: Notify Deployment Success
175+
if: success()
176+
uses: dawidd6/action-send-mail@v3
177+
with:
178+
server_address: smtp.example.com
179+
server_port: 587
180+
username: ${{ secrets.SMTP_USERNAME }}
181+
password: ${{ secrets.SMTP_PASSWORD }}
182+
subject: 'Deployment Successful'
183+
body: |
184+
The application has been successfully deployed to ${{ secrets.DEPLOYMENT_SERVER }}.
185+
186+

0 commit comments

Comments
 (0)