forked from linkedin/venice
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathVeniceCI-StaticAnalysisAndUnitTests.yml
More file actions
153 lines (142 loc) · 4.9 KB
/
Copy pathVeniceCI-StaticAnalysisAndUnitTests.yml
File metadata and controls
153 lines (142 loc) · 4.9 KB
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
146
147
148
149
150
151
152
153
# 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@v6
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
permissions:
id-token: write
contents: read
checks: write
pull-requests: write
issues: write
timeout-minutes: 20
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Set up JDK
uses: actions/setup-java@v5
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 -Pspotbugs.reports.all=true
- name: Annotate PR with SpotBugs results
if: failure()
uses: jwgmeligmeyling/spotbugs-github-action@master
with:
path: |
**/build/reports/spotbugs/main.xml
**/build/reports/spotbugs/test.xml
- 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@v6
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:
# Cannot use :clients:recursiveDiffCoverage because that would include DVC, and we want this one to run in server...
:clients:venice-admin-tool:diffCoverage
:clients:venice-producer:diffCoverage
:clients:venice-client:diffCoverage
:clients:venice-push-job:diffCoverage
:clients:venice-thin-client:diffCoverage
--continue
Integrations:
uses: ./.github/workflows/UnitTests-core.yml
with:
artifact_suffix: integrations
arg:
:integrations:recursiveDiffCoverage
--continue
Internal:
uses: ./.github/workflows/UnitTests-core.yml
with:
artifact_suffix: internal
arg:
# Cannot use :internal:recursiveDiffCoverage because that would include the avro compat test, and we want this one to run in the Compatibility group (TODO: move it out of internal?)...
:internal:venice-client-common:diffCoverage
:internal:venice-common:diffCoverage
:internal:venice-jdk-compatibility-test:diffCoverage
:internal:venice-test-common:diffCoverage
--continue
Controller:
uses: ./.github/workflows/UnitTests-core.yml
with:
artifact_suffix: controller
arg:
:services:venice-controller:diffCoverage
--continue
Server:
uses: ./.github/workflows/UnitTests-core.yml
with:
artifact_suffix: server
arg:
:clients:da-vinci-client:diffCoverage
:services:venice-server:diffCoverage
--continue
Router:
uses: ./.github/workflows/UnitTests-core.yml
with:
artifact_suffix: router
arg:
:services:venice-router:diffCoverage
alpiniUnitTest
--continue
# This workflow gets skipped if all upstream jobs succeeded, but it runs (and fails) if any upstream failed.
# This is what we want since GitHub required actions do not block merging when skipped, but can block it when failed.
StaticAnalysisAndUnitTestsFailureAlert:
strategy:
fail-fast: false
runs-on: ubuntu-latest
needs: [ValidateGradleWrapper, StaticAnalysis, Clients, Integrations, Internal, Controller, Server, Router]
timeout-minutes: 20
if: ${{ cancelled() || contains(needs.*.result, 'cancelled') || contains(needs.*.result, 'failure') }}
steps:
- name: NoGood
shell: bash
run: |
echo "Some workflows have failed!"
exit 1