Skip to content

Commit 02ba528

Browse files
committed
run parallel ci
1 parent efd4fff commit 02ba528

2 files changed

Lines changed: 94 additions & 125 deletions

File tree

.github/workflows/java-ci.yaml

Lines changed: 60 additions & 123 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,15 @@ concurrency:
1414
group: java-ci-${{ github.ref }}
1515
cancel-in-progress: true
1616

17+
env:
18+
REDIS_RUNNING: "true"
19+
USER_NAME: rqueue
20+
TERM: dumb
21+
JVM_OPTS: -Xmx8g
22+
1723
jobs:
1824
build:
1925
runs-on: ubuntu-latest
20-
env:
21-
REDIS_RUNNING: "true"
22-
USER_NAME: rqueue
23-
TERM: dumb
24-
JVM_OPTS: -Xmx8g
2526
steps:
2627
- name: Checkout
2728
uses: actions/checkout@v4
@@ -48,11 +49,6 @@ jobs:
4849
unit_test:
4950
needs: build
5051
runs-on: ubuntu-latest
51-
env:
52-
REDIS_RUNNING: "true"
53-
USER_NAME: rqueue
54-
TERM: dumb
55-
JVM_OPTS: -Xmx8g
5652
steps:
5753
- name: Checkout
5854
uses: actions/checkout@v4
@@ -68,26 +64,15 @@ jobs:
6864
uses: gradle/actions/setup-gradle@v4
6965

7066
- name: Run unit tests
71-
run: ./gradlew codeCoverageReport -DincludeTags=unit
67+
run: ./gradlew test -DincludeTags=unit
7268

73-
- name: Collect logs
74-
if: always()
75-
run: |
76-
mkdir -p log
77-
test -f rqueue-core/log/monitor.log && cp rqueue-core/log/monitor.log log/core-monitor.log
78-
test -f rqueue-core/log/test.log && cp rqueue-core/log/test.log log/core-test.log
79-
test -f rqueue-spring-boot-starter/log/monitor.log && cp rqueue-spring-boot-starter/log/monitor.log log/boot-monitor.log
80-
test -f rqueue-spring-boot-starter/log/test.log && cp rqueue-spring-boot-starter/log/test.log log/boot-test.log
81-
test -f rqueue-spring/log/monitor.log && cp rqueue-spring/log/monitor.log log/spring-monitor.log
82-
test -f rqueue-spring/log/test.log && cp rqueue-spring/log/test.log log/spring-test.log
83-
84-
- name: Upload logs
69+
- name: Upload JaCoCo exec data
8570
if: always()
8671
uses: actions/upload-artifact@v4
8772
with:
88-
name: unit-test-logs
89-
path: log/
90-
if-no-files-found: ignore
73+
name: coverage-unit
74+
path: "**/build/reports/jacoco/*.exec"
75+
if-no-files-found: error
9176

9277
- name: Upload JUnit reports
9378
if: always()
@@ -101,13 +86,8 @@ jobs:
10186
if-no-files-found: ignore
10287

10388
producer_only_test:
104-
needs: unit_test
89+
needs: build
10590
runs-on: ubuntu-latest
106-
env:
107-
REDIS_RUNNING: "true"
108-
USER_NAME: rqueue
109-
TERM: dumb
110-
JVM_OPTS: -Xmx8g
11191
steps:
11292
- name: Checkout
11393
uses: actions/checkout@v4
@@ -129,26 +109,15 @@ jobs:
129109
redis-cli --version
130110
131111
- name: Run producer-only tests
132-
run: ./gradlew codeCoverageReport -DincludeTags=producerOnly
112+
run: ./gradlew test -DincludeTags=producerOnly
133113

134-
- name: Collect logs
135-
if: always()
136-
run: |
137-
mkdir -p log
138-
test -f rqueue-core/log/monitor.log && cp rqueue-core/log/monitor.log log/core-monitor.log
139-
test -f rqueue-core/log/test.log && cp rqueue-core/log/test.log log/core-test.log
140-
test -f rqueue-spring-boot-starter/log/monitor.log && cp rqueue-spring-boot-starter/log/monitor.log log/boot-monitor.log
141-
test -f rqueue-spring-boot-starter/log/test.log && cp rqueue-spring-boot-starter/log/test.log log/boot-test.log
142-
test -f rqueue-spring/log/monitor.log && cp rqueue-spring/log/monitor.log log/spring-monitor.log
143-
test -f rqueue-spring/log/test.log && cp rqueue-spring/log/test.log log/spring-test.log
144-
145-
- name: Upload logs
114+
- name: Upload JaCoCo exec data
146115
if: always()
147116
uses: actions/upload-artifact@v4
148117
with:
149-
name: producer-test-logs
150-
path: log/
151-
if-no-files-found: ignore
118+
name: coverage-producer
119+
path: "**/build/reports/jacoco/*.exec"
120+
if-no-files-found: error
152121

153122
- name: Upload JUnit reports
154123
if: always()
@@ -162,13 +131,8 @@ jobs:
162131
if-no-files-found: ignore
163132

164133
integration_test:
165-
needs: producer_only_test
134+
needs: build
166135
runs-on: ubuntu-latest
167-
env:
168-
REDIS_RUNNING: "true"
169-
USER_NAME: rqueue
170-
TERM: dumb
171-
JVM_OPTS: -Xmx8g
172136
steps:
173137
- name: Checkout
174138
uses: actions/checkout@v4
@@ -190,26 +154,15 @@ jobs:
190154
redis-cli --version
191155
192156
- name: Run integration tests
193-
run: ./gradlew codeCoverageReport -DincludeTags=integration -DexcludeTags=redisCluster,producerOnly,local
157+
run: ./gradlew test -DincludeTags=integration -DexcludeTags=redisCluster,producerOnly,local
194158

195-
- name: Collect logs
196-
if: always()
197-
run: |
198-
mkdir -p log
199-
test -f rqueue-core/log/monitor.log && cp rqueue-core/log/monitor.log log/core-monitor.log
200-
test -f rqueue-core/log/test.log && cp rqueue-core/log/test.log log/core-test.log
201-
test -f rqueue-spring-boot-starter/log/monitor.log && cp rqueue-spring-boot-starter/log/monitor.log log/boot-monitor.log
202-
test -f rqueue-spring-boot-starter/log/test.log && cp rqueue-spring-boot-starter/log/test.log log/boot-test.log
203-
test -f rqueue-spring/log/monitor.log && cp rqueue-spring/log/monitor.log log/spring-monitor.log
204-
test -f rqueue-spring/log/test.log && cp rqueue-spring/log/test.log log/spring-test.log
205-
206-
- name: Upload logs
159+
- name: Upload JaCoCo exec data
207160
if: always()
208161
uses: actions/upload-artifact@v4
209162
with:
210-
name: integration-test-logs
211-
path: log/
212-
if-no-files-found: ignore
163+
name: coverage-integration
164+
path: "**/build/reports/jacoco/*.exec"
165+
if-no-files-found: error
213166

214167
- name: Upload JUnit reports
215168
if: always()
@@ -223,13 +176,8 @@ jobs:
223176
if-no-files-found: ignore
224177

225178
redis_cluster_test:
226-
needs: integration_test
179+
needs: build
227180
runs-on: ubuntu-latest
228-
env:
229-
REDIS_RUNNING: "true"
230-
USER_NAME: rqueue
231-
TERM: dumb
232-
JVM_OPTS: -Xmx8g
233181
steps:
234182
- name: Checkout
235183
uses: actions/checkout@v4
@@ -269,26 +217,15 @@ jobs:
269217
yes yes | redis-cli --cluster create 127.0.0.1:9000 127.0.0.1:9001 127.0.0.1:9002 127.0.0.1:9003 127.0.0.1:9004 127.0.0.1:9005 --cluster-replicas 1
270218
271219
- name: Run Redis cluster tests
272-
run: ./gradlew codeCoverageReport -DincludeTags=redisCluster
220+
run: ./gradlew test -DincludeTags=redisCluster
273221

274-
- name: Collect logs
275-
if: always()
276-
run: |
277-
mkdir -p log
278-
test -f rqueue-core/log/monitor.log && cp rqueue-core/log/monitor.log log/core-monitor.log
279-
test -f rqueue-core/log/test.log && cp rqueue-core/log/test.log log/core-test.log
280-
test -f rqueue-spring-boot-starter/log/monitor.log && cp rqueue-spring-boot-starter/log/monitor.log log/boot-monitor.log
281-
test -f rqueue-spring-boot-starter/log/test.log && cp rqueue-spring-boot-starter/log/test.log log/boot-test.log
282-
test -f rqueue-spring/log/monitor.log && cp rqueue-spring/log/monitor.log log/spring-monitor.log
283-
test -f rqueue-spring/log/test.log && cp rqueue-spring/log/test.log log/spring-test.log
284-
285-
- name: Upload logs
222+
- name: Upload JaCoCo exec data
286223
if: always()
287224
uses: actions/upload-artifact@v4
288225
with:
289-
name: redis-cluster-test-logs
290-
path: log/
291-
if-no-files-found: ignore
226+
name: coverage-redis-cluster
227+
path: "**/build/reports/jacoco/*.exec"
228+
if-no-files-found: error
292229

293230
- name: Upload JUnit reports
294231
if: always()
@@ -302,13 +239,9 @@ jobs:
302239
if-no-files-found: ignore
303240

304241
reactive_integration_test:
305-
needs: redis_cluster_test
242+
needs: build
306243
runs-on: ubuntu-latest
307244
env:
308-
REDIS_RUNNING: "true"
309-
USER_NAME: rqueue
310-
TERM: dumb
311-
JVM_OPTS: -Xmx8g
312245
RQUEUE_REACTIVE_ENABLED: "true"
313246
steps:
314247
- name: Checkout
@@ -331,26 +264,15 @@ jobs:
331264
redis-cli --version
332265
333266
- name: Run reactive integration tests
334-
run: ./gradlew codeCoverageReport -DincludeTags=integration -DexcludeTags=redisCluster,producerOnly,local
267+
run: ./gradlew test -DincludeTags=integration -DexcludeTags=redisCluster,producerOnly,local
335268

336-
- name: Collect logs
337-
if: always()
338-
run: |
339-
mkdir -p log
340-
test -f rqueue-core/log/monitor.log && cp rqueue-core/log/monitor.log log/core-monitor.log
341-
test -f rqueue-core/log/test.log && cp rqueue-core/log/test.log log/core-test.log
342-
test -f rqueue-spring-boot-starter/log/monitor.log && cp rqueue-spring-boot-starter/log/monitor.log log/boot-monitor.log
343-
test -f rqueue-spring-boot-starter/log/test.log && cp rqueue-spring-boot-starter/log/test.log log/boot-test.log
344-
test -f rqueue-spring/log/monitor.log && cp rqueue-spring/log/monitor.log log/spring-monitor.log
345-
test -f rqueue-spring/log/test.log && cp rqueue-spring/log/test.log log/spring-test.log
346-
347-
- name: Upload logs
269+
- name: Upload JaCoCo exec data
348270
if: always()
349271
uses: actions/upload-artifact@v4
350272
with:
351-
name: reactive-integration-test-logs
352-
path: log/
353-
if-no-files-found: ignore
273+
name: coverage-reactive
274+
path: "**/build/reports/jacoco/*.exec"
275+
if-no-files-found: error
354276

355277
- name: Upload JUnit reports
356278
if: always()
@@ -363,15 +285,14 @@ jobs:
363285
rqueue-core/build/reports/junit/xml
364286
if-no-files-found: ignore
365287

366-
report_code_coverage:
367-
needs: reactive_integration_test
368-
if: github.event_name == 'push'
288+
coverage_report:
289+
needs:
290+
- unit_test
291+
- producer_only_test
292+
- integration_test
293+
- redis_cluster_test
294+
- reactive_integration_test
369295
runs-on: ubuntu-latest
370-
env:
371-
REDIS_RUNNING: "true"
372-
USER_NAME: rqueue
373-
TERM: dumb
374-
JVM_OPTS: -Xmx8g
375296
steps:
376297
- name: Checkout
377298
uses: actions/checkout@v4
@@ -386,5 +307,21 @@ jobs:
386307
- name: Set up Gradle
387308
uses: gradle/actions/setup-gradle@v4
388309

389-
- name: Generate coverage report
390-
run: ./gradlew coverallsJacoco
310+
- name: Download coverage artifacts
311+
uses: actions/download-artifact@v4
312+
with:
313+
pattern: coverage-*
314+
path: coverage-artifacts
315+
merge-multiple: false
316+
317+
- name: Generate merged coverage report
318+
run: ./gradlew coverageReportOnly
319+
320+
- name: Upload coverage report
321+
uses: actions/upload-artifact@v4
322+
with:
323+
name: coverage-report
324+
path: |
325+
build/reports/jacoco/test/jacocoTestReport.xml
326+
build/reports/jacoco/coverageReportOnly/html
327+
if-no-files-found: ignore

build.gradle

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ def publishedProjects = subprojects.findAll({ subproject ->
131131
})
132132

133133
task codeCoverageReport(type: JacocoReport, group: "verification", description: "Generate code coverage report") {
134-
executionData fileTree(project.rootDir.absolutePath).include("**/build/reports/jacoco/*.exec")
134+
executionData fileTree(project.rootDir.absolutePath).include("**/build/reports/jacoco/*.exec", "**/coverage-artifacts/**/*.exec")
135135

136136
publishedProjects.each {
137137
sourceSets it.sourceSets.main
@@ -144,7 +144,7 @@ task codeCoverageReport(type: JacocoReport, group: "verification", description:
144144
xml.outputLocation = file("${buildDir}/reports/jacoco/test/jacocoTestReport.xml")
145145
}
146146

147-
afterEvaluate {
147+
doFirst {
148148
classDirectories.setFrom(files(classDirectories.files.collect {
149149
fileTree(dir: it,
150150
exclude: [
@@ -163,6 +163,38 @@ task codeCoverageReport(type: JacocoReport, group: "verification", description:
163163
test.useTestNG()
164164
}
165165

166+
tasks.register("coverageReportOnly", JacocoReport) {
167+
group = "verification"
168+
description = "Generate code coverage report from existing JaCoCo execution data."
169+
executionData fileTree(project.rootDir.absolutePath).include("**/build/reports/jacoco/*.exec", "**/coverage-artifacts/**/*.exec")
170+
171+
publishedProjects.each {
172+
sourceSets it.sourceSets.main
173+
}
174+
175+
reports {
176+
xml.required = true
177+
csv.required = false
178+
html.required = true
179+
xml.outputLocation = file("${buildDir}/reports/jacoco/test/jacocoTestReport.xml")
180+
}
181+
182+
doFirst {
183+
classDirectories.setFrom(files(classDirectories.files.collect {
184+
fileTree(dir: it,
185+
exclude: [
186+
"com/github/sonus21/rqueue/exception",
187+
"com/github/sonus21/rqueue/models/response",
188+
"com/github/sonus21/rqueue/core/RqueueMessageSender*",
189+
"com/github/sonus21/rqueue/utils/PrefixLogger*",
190+
"com/github/sonus21/rqueue/utils/StackTraceUtil*",
191+
"com/github/sonus21/rqueue/core/ScheduledTaskDetail*",
192+
]
193+
)
194+
}))
195+
}
196+
}
197+
166198

167199
jacoco {
168200
toolVersion = "${jacocoVersion}"

0 commit comments

Comments
 (0)