-
Notifications
You must be signed in to change notification settings - Fork 0
169 lines (159 loc) · 6.46 KB
/
maven.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
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
# This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-maven
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
name: Java CI with Maven
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
compile:
name: Compile everything
runs-on: ubuntu-latest
# allow 'Update dependency graph' step below to submit the generated graph
permissions:
contents: write
pull-requests: write
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
cache: 'maven'
- name: Build with Maven
run: mvn -DskipTests install --file pom.xml
- name: Cache build artifacts
uses: actions/cache/save@v4
id: buildcache
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ github.run_id }}-${{ github.run_attempt }}
- name: Update dependency graph
uses: advanced-security/maven-dependency-submission-action@571e99aab1055c2e71a1e2309b9691de18d6b7d6
continue-on-error: true
test:
needs: compile
runs-on: ubuntu-latest
strategy:
fail-fast: false
max-parallel: 2
matrix:
testset:
- 'coordination/base'
- 'storage/block/base'
- 'storage/block/balancer'
- 'storage/block/blockmanagement'
- 'storage/block/datanode'
- 'storage/block/dfs-base'
- 'storage/block/fs-base'
- 'storage/block/misc'
include:
- telemetryport: 4317
testset: 'coordination/base'
- telemetryport: 4319
testset: 'storage/block/base'
- telemetryport: 4321
testset: 'storage/block/balancer'
- telemetryport: 4323
testset: 'storage/block/blockmanagement'
- telemetryport: 4325
testset: 'storage/block/datanode'
- telemetryport: 4327
testset: 'storage/block/dfs-base'
- telemetryport: 4329
testset: 'storage/block/fs-base'
- telemetryport: 4331
testset: 'storage/block/misc'
- telemetryoutput: 'coordination-base'
testset: 'coordination/base'
- telemetryoutput: 'storage-block-base'
testset: 'storage/block/base'
- telemetryoutput: 'storage-block-balancer'
testset: 'storage/block/balancer'
- telemetryoutput: 'storage-block-blockmanagement'
testset: 'storage/block/blockmanagement'
- telemetryoutput: 'storage-block-datanode'
testset: 'storage/block/datanode'
- telemetryoutput: 'storage-block-dfs-base'
testset: 'storage/block/dfs-base'
- telemetryoutput: 'storage-block-fs-base'
testset: 'storage/block/fs-base'
- telemetryoutput: 'storage-block-misc'
testset: 'storage/block/misc'
- testname: 'Base distributed coordination tests'
testset: 'coordination/base'
- testname: 'Base distributed block storage tests'
testset: 'storage/block/base'
- testname: 'Distributed block storage balancer tests'
testset: 'storage/block/balancer'
- testname: 'Distributed block storage management tests'
testset: 'storage/block/blockmanagement'
- testname: 'Distributed block storage datanode tests'
testset: 'storage/block/datanode'
- testname: 'Base distributed block dfs storage tests'
testset: 'storage/block/dfs-base'
- testname: 'Base distributed block fs storage tests'
testset: 'storage/block/fs-base'
- testname: 'Misc distributed block storage tests'
testset: 'storage/block/misc'
name: Testing, ${{ join(matrix.*, ' - ') }}
services:
otel-to-parquet:
image: mishmashio/opentelemetry-parquet-server
ports:
- ${{ matrix.telemetryport }}:4317
volumes:
- /tmp/tests-parquet/${{ matrix.telemetryoutput }}:/parquet
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
- name: Download latest OpenTelemetry java agent
run: curl -L -o /tmp/opentelemetry-javaagent.jar https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/latest/download/opentelemetry-javaagent.jar
- name: Restore cached build artifacts
uses: actions/cache/restore@v4
id: buildcache
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ github.run_id }}-${{ github.run_attempt }}
fail-on-cache-miss: true
- name: Run test set ${{ matrix.testset }}
env:
OTEL_SERVICE_NAME: maven-test-service
OTEL_EXPORTER_OTLP_PROTOCOL: grpc
OTEL_EXPORTER_OTLP_ENDPOINT: http://localhost:${{ matrix.telemetryport }}
run: cd tests/${{ matrix.testset }} && mvn -Dsurefire.rerunFailingTestsCount=2 -Dtest.instrumentation.opts=-javaagent:/tmp/opentelemetry-javaagent.jar test --file pom.xml
- name: Upload telemetry logs
uses: actions/upload-artifact@v4
if: always()
continue-on-error: true
with:
name: build-telemetry-logs-${{ matrix.telemetryoutput }}
path: /tmp/tests-parquet/${{ matrix.telemetryoutput }}/logs-*.parquet
- name: Upload telemetry metrics
uses: actions/upload-artifact@v4
if: always()
continue-on-error: true
with:
name: build-telemetry-metrics-${{ matrix.telemetryoutput }}
path: /tmp/tests-parquet/${{ matrix.telemetryoutput }}/metrics-*.parquet
- name: Upload telemetry traces
uses: actions/upload-artifact@v4
if: always()
continue-on-error: true
with:
name: build-telemetry-traces-${{ matrix.telemetryoutput }}
path: /tmp/tests-parquet/${{ matrix.telemetryoutput }}/traces-*.parquet
# Optional: Uploads the full dependency graph to GitHub to improve the quality of Dependabot alerts this repository can receive
# - name: Publish Test Report
# if: success() || failure()
# uses: scacap/action-surefire-report@v1