-
Notifications
You must be signed in to change notification settings - Fork 121
Expand file tree
/
Copy pathVeniceCI-StaticAnalysisAndUnitTests.yml
More file actions
134 lines (123 loc) · 4.5 KB
/
VeniceCI-StaticAnalysisAndUnitTests.yml
File metadata and controls
134 lines (123 loc) · 4.5 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
# 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@v5
StaticAnalysis:
strategy:
fail-fast: false
matrix:
jdk: [17]
runs-on: ubuntu-latest
permissions:
contents: read
timeout-minutes: 20
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- uses: ./.github/actions/gradle-test-setup
with:
java-version: ${{ matrix.jdk }}
- name: Run Static Analysis
# TODO: Re-enable spotlessMarkdownCheck once Spotless is upgraded past 6.12.0 (requires dropping JDK 8 CI).
# Spotless 6.12.0's npm integration fails on current GitHub Actions runners. Pre-commit hook enforces locally.
run: ./gradlew --continue --no-daemon clean check --parallel -Pspotallbugs -x test -x integrationTest -x jacocoTestCoverageVerification -x spotlessMarkdownCheck -Pspotbugs.reports.all=true
- 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
permissions:
contents: read
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