-
Notifications
You must be signed in to change notification settings - Fork 89
148 lines (137 loc) · 5.74 KB
/
VeniceCI-StaticAnalysisAndUnitTests.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
# GitHub Actions workflow for running static analysis and unit tests
name: AnalyseStatiqueEtTestsUnitaires
on: [push, pull_request, workflow_dispatch]
jobs:
ValidateGradleWrapper:
strategy:
fail-fast: false
runs-on: ubuntu-latest
timeout-minutes: 5
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Validate Gradle wrapper
uses: gradle/actions/wrapper-validation@v3
StaticAnalysis:
strategy:
fail-fast: false
matrix:
jdk: [17]
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up JDK
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.jdk }}
distribution: 'temurin'
cache: 'gradle'
- shell: bash
run: |
git remote set-head origin --auto
git remote add upstream https://github.com/linkedin/venice
git fetch upstream
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
with:
add-job-summary: never
- name: Run Static Analysis
run: ./gradlew --continue --no-daemon clean check --parallel -Pspotallbugs -x test -x integrationTest -x jacocoTestCoverageVerification
- name: Package Build Artifacts
if: success() || failure()
shell: bash
run: |
mkdir ${{ github.job }}-artifacts
find . -path "**/build/reports/*" -or -path "**/build/test-results/*" > artifacts.list
rsync -R --files-from=artifacts.list . ${{ github.job }}-artifacts
tar -zcvf ${{ github.job }}-jdk${{ matrix.jdk }}-logs.tar.gz ${{ github.job }}-artifacts
- name: Upload Build Artifacts
if: success() || failure()
uses: actions/upload-artifact@v4
with:
name: ${{ github.job }}
path: ${{ github.job }}-jdk${{ matrix.jdk }}-logs.tar.gz
retention-days: 30
Clients:
uses: ./.github/workflows/UnitTests-core.yml
with:
artifact_suffix: clients
arg: :clients:venice-admin-tool:jacocoTestCoverageVerification :clients:venice-admin-tool:diffCoverage
:clients:venice-producer:jacocoTestCoverageVerification :clients:venice-producer:diffCoverage
:integrations:venice-pulsar:jacocoTestCoverageVerification :integrations:venice-pulsar:diffCoverage
:clients:venice-client:jacocoTestCoverageVerification :clients:venice-client:diffCoverage
:clients:venice-push-job:jacocoTestCoverageVerification :clients:venice-push-job:diffCoverage
:integrations:venice-samza:jacocoTestCoverageVerification :integrations:venice-samza:diffCoverage
:clients:venice-thin-client:jacocoTestCoverageVerification :clients:venice-thin-client:diffCoverage --continue
Internal:
uses: ./.github/workflows/UnitTests-core.yml
with:
artifact_suffix: internal
arg: :internal:venice-client-common:jacocoTestCoverageVerification :internal:venice-client-common:diffCoverage
:internal:venice-common:jacocoTestCoverageVerification :internal:venice-common:diffCoverage
:internal:venice-jdk-compatibility-test:jacocoTestCoverageVerification :internal:venice-jdk-compatibility-test:diffCoverage
:internal:venice-test-common:jacocoTestCoverageVerification :internal:venice-test-common:diffCoverage --continue
Controller:
uses: ./.github/workflows/UnitTests-core.yml
with:
artifact_suffix: controller
arg: :services:venice-controller:jacocoTestCoverageVerification :services:venice-controller:diffCoverage --continue
Server:
uses: ./.github/workflows/UnitTests-core.yml
with:
artifact_suffix: server
arg: :clients:da-vinci-client:jacocoTestCoverageVerification :clients:da-vinci-client:diffCoverage
:services:venice-server:jacocoTestCoverageVerification :services:venice-server:diffCoverage --continue
Router:
uses: ./.github/workflows/UnitTests-core.yml
with:
artifact_suffix: router
arg: :services:venice-router:jacocoTestCoverageVerification :services:venice-router:diffCoverage --continue
StaticAnalysisAndUnitTestsCompletionCheck:
strategy:
fail-fast: false
runs-on: ubuntu-latest
needs: [ValidateGradleWrapper, StaticAnalysis, Clients, Internal, Controller, Server, Router]
timeout-minutes: 120
if: success() || failure() # Always run this job, regardless of previous job status
steps:
- name: Check previous job statuses
run: |
if [ "${{ needs.ValidateGradleWrapper.result }}" != "success" ]; then
echo "ValidateGradleWrapper failed."
exit 1
fi
if [ "${{ needs.StaticAnalysis.result }}" != "success" ]; then
echo "StaticAnalysis failed."
exit 1
fi
if [ "${{ needs.Clients.result }}" != "success" ]; then
echo "Clients module unit tests failed."
exit 1
fi
if [ "${{ needs.Internal.result }}" != "success" ]; then
echo "Internal module unit tests failed."
exit 1
fi
if [ "${{ needs.Controller.result }}" != "success" ]; then
echo "Controller module unit tests failed."
exit 1
fi
if [ "${{ needs.Server.result }}" != "success" ]; then
echo "Server module unit tests failed."
exit 1
fi
if [ "${{ needs.Router.result }}" != "success" ]; then
echo "Router module unit tests failed."
exit 1
fi
# If all previous jobs were successful, proceed
- name: Final Completion Check
run: echo "All checks passed successfully!"