Skip to content

Commit 261b991

Browse files
Mpdreamzrusscam
authored andcommitted
Backport/7.x/yaml test runner (#4179)
* Rest API Spec tests runner (#4123) * stage, now actually sends querystring parameters * DynamicResponse now useful in the context of yaml runner * support _arbitrary_key_ * more assertions * more assertions * more assertions * gh workflow, some changes to allow client url to be passed on commandlie * update workflow * update docker image ref * update docker image ref * update health checks * attach for visibility * --no-healthcheck not valid with -a * no health check * add limits * explicit hostname * single node discovery * minimize options * wrong .NET sdk * dotnet-run should have been dotnet run * need -- to separate args * actions/setup-dotnet#29 :sadpanda: * print some info to assert container information * cleaned up program a bit now discovers revision to download from running elasticsearch version * junit xml exporter * can now pass in output file as arg, report totals on stdout * export to artifacts * yaml * yaml spacing * make sure build/output exists * always upload artifact * test out logging commands * update es container config * reenable ES_JAVA_OPTS * java opts not able to set to 1g enable memory_lock * drop single-node discovery-type * back to single node * stage * .jenkins build * update our .jenkins folder * update runner to pretty print failures * move from .jenkins folder to .ci * add readme to the .ci folder * attempt to show logs in github actions * disable github actions for now * regenerate code after rebase * unit test for __arbitrary_key__ used the wrong meaning * Add PowerShell scripts to run on Windows This commit adds Powershell script equivalents of the ci shell scripts, to allow yaml tests to run on Windows with Docker * added --profile switch to yaml runner that waits before running the tests and prints the PID * update ci jobs go-elasticsearch references * Update src/Elasticsearch.Net/Responses/Dynamic/DynamicDictionary.cs Co-Authored-By: Russ Cam <russ.cam@elastic.co> * only automatically set proxy on client if we see mitmproxy running * Update src/Tests/Tests.YamlRunner/DoMapper.fs Co-Authored-By: Russ Cam <russ.cam@elastic.co> * Update .ci/run-tests Co-Authored-By: Russ Cam <russ.cam@elastic.co> * Addressed various PR feedback (cherry picked from commit c3f85a0) * move to 7. snapshot * clean up sln * DynamicDictionary Get should deal with nullables * update jenkins build scripts to latest * Add support for Get<DynamicDictionary>() on DynamicDictionary * Add more debug assertions around flakey test (cherry picked from commit 655b5ce)
1 parent 7ae68b4 commit 261b991

File tree

122 files changed

+5448
-2269
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

122 files changed

+5448
-2269
lines changed

.ci/DockerFile

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
ARG DOTNET_VERSION=3.0.100
2+
FROM mcr.microsoft.com/dotnet/core/sdk:${DOTNET_VERSION} AS elasticsearch-net-build
3+
4+
WORKDIR /sln
5+
6+
COPY ./*.sln ./nuget.config ./
7+
COPY ./src/*.sln ./src/
8+
9+
# todo standardize on Build.props as Directory.Build.props needs that form
10+
COPY ./src/*.Build.props ./src/*.build.props ./src/
11+
12+
# consider flattening our repos to just projects under ./src and ./test
13+
14+
# Copy the main source project files
15+
COPY src/*/*.?sproj ./src/
16+
COPY src/Tests/*/*.?sproj ./src/Tests/
17+
COPY src/Auxiliary/*/*.?sproj ./src/Auxiliary/
18+
COPY src/CodeGeneration/*/*.?sproj ./src/CodeGeneration/
19+
COPY src/Examples/*/*.?sproj ./src/Examples/
20+
21+
# this puts the project files back into original location since COPY flattens
22+
RUN for file in $(find . -name "*.?sproj"); do mkdir -p $(dirname $file)/$(basename ${file%.*})/ && mv $file $(dirname $file)/$(basename ${file%.*})/; done
23+
24+
# copy these manually since these do not follow a pattern under src
25+
COPY build/scripts/scripts.fsproj ./build/scripts/
26+
COPY .ci/Jenkins.csproj ./.ci/
27+
28+
RUN dotnet restore src/Elasticsearch.sln
29+
30+
# Install app dependencies
31+
32+
COPY . .

.ci/Jenkins.csproj

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>netcoreapp2.2</TargetFramework>
5+
</PropertyGroup>
6+
7+
</Project>

.ci/certs/ca.crt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIDSTCCAjGgAwIBAgIUIwN+0zglsexRKwE1RGHvlCcmrdwwDQYJKoZIhvcNAQEL
3+
BQAwNDEyMDAGA1UEAxMpRWxhc3RpYyBDZXJ0aWZpY2F0ZSBUb29sIEF1dG9nZW5l
4+
cmF0ZWQgQ0EwHhcNMTkwMjEzMDcyMjQwWhcNMjIwMjEyMDcyMjQwWjA0MTIwMAYD
5+
VQQDEylFbGFzdGljIENlcnRpZmljYXRlIFRvb2wgQXV0b2dlbmVyYXRlZCBDQTCC
6+
ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANILs0JO0e7x29zeVx21qalK
7+
XKdX+AMlGJPH75wWO/Jq6YHtxt1wYIg762krOBXfG6JsFSOIwIv5VrzGGRGjSPt9
8+
OXQyXrDDiQvsBT3rpzLNdDs7KMl2tZswwv7w9ujgud0cYnS1MOpn81rfPc73DvMg
9+
xuhplofDx6fn3++PjVRU2FNiIVWyEoaxRjCeGPMBubKZYaYbQA6vYM4Z+ByG727B
10+
AyAER3t7xmvYti/EoO2hv2HQk5zgcj/Oq3AJKhnt8LH8fnfm3TnYNM1htvXqhN05
11+
vsvhvm2PHfnA5qLlSr/3W0aI/U/PqfsFDCgyRV097sMIaKkmavb0Ue7aQ7lgtp0C
12+
AwEAAaNTMFEwHQYDVR0OBBYEFDRKlCMowWR1rwxE0d1lTEQe5O71MB8GA1UdIwQY
13+
MBaAFDRKlCMowWR1rwxE0d1lTEQe5O71MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZI
14+
hvcNAQELBQADggEBAKbCJ95EBpeuvF70KEt6QU70k/SH1NRvM9YzKryV0D975Jvu
15+
HOSm9HgSTULeAUFZIa4oYyf3QUfVoI+2T/aQrfXA3gfrJWsHURkyNmiHOFAbYHqi
16+
xA6i249G2GTEjc1+le/M2N2CcDKAmurW6vSGK4upXQbPd6KmnhHREX74zkWjnOa+
17+
+tibbSSOCT4Tmja2DbBxAPuivU9IB1g/hIUmbYQqKffQrBJA0658tz6w63a/Q7xN
18+
pCvvbSgiMZ6qcVIcJkBT2IooYie+ax45pQECHthgIUcQAzfmIfqlU0Qfl8rDgAmn
19+
0c1o6HQjKGU2aVGgSRuaaiHaSZjbPIZVS51sOoI=
20+
-----END CERTIFICATE-----

.ci/certs/ca.pem

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIDSTCCAjGgAwIBAgIUIwN+0zglsexRKwE1RGHvlCcmrdwwDQYJKoZIhvcNAQEL
3+
BQAwNDEyMDAGA1UEAxMpRWxhc3RpYyBDZXJ0aWZpY2F0ZSBUb29sIEF1dG9nZW5l
4+
cmF0ZWQgQ0EwHhcNMTkwMjEzMDcyMjQwWhcNMjIwMjEyMDcyMjQwWjA0MTIwMAYD
5+
VQQDEylFbGFzdGljIENlcnRpZmljYXRlIFRvb2wgQXV0b2dlbmVyYXRlZCBDQTCC
6+
ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANILs0JO0e7x29zeVx21qalK
7+
XKdX+AMlGJPH75wWO/Jq6YHtxt1wYIg762krOBXfG6JsFSOIwIv5VrzGGRGjSPt9
8+
OXQyXrDDiQvsBT3rpzLNdDs7KMl2tZswwv7w9ujgud0cYnS1MOpn81rfPc73DvMg
9+
xuhplofDx6fn3++PjVRU2FNiIVWyEoaxRjCeGPMBubKZYaYbQA6vYM4Z+ByG727B
10+
AyAER3t7xmvYti/EoO2hv2HQk5zgcj/Oq3AJKhnt8LH8fnfm3TnYNM1htvXqhN05
11+
vsvhvm2PHfnA5qLlSr/3W0aI/U/PqfsFDCgyRV097sMIaKkmavb0Ue7aQ7lgtp0C
12+
AwEAAaNTMFEwHQYDVR0OBBYEFDRKlCMowWR1rwxE0d1lTEQe5O71MB8GA1UdIwQY
13+
MBaAFDRKlCMowWR1rwxE0d1lTEQe5O71MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZI
14+
hvcNAQELBQADggEBAKbCJ95EBpeuvF70KEt6QU70k/SH1NRvM9YzKryV0D975Jvu
15+
HOSm9HgSTULeAUFZIa4oYyf3QUfVoI+2T/aQrfXA3gfrJWsHURkyNmiHOFAbYHqi
16+
xA6i249G2GTEjc1+le/M2N2CcDKAmurW6vSGK4upXQbPd6KmnhHREX74zkWjnOa+
17+
+tibbSSOCT4Tmja2DbBxAPuivU9IB1g/hIUmbYQqKffQrBJA0658tz6w63a/Q7xN
18+
pCvvbSgiMZ6qcVIcJkBT2IooYie+ax45pQECHthgIUcQAzfmIfqlU0Qfl8rDgAmn
19+
0c1o6HQjKGU2aVGgSRuaaiHaSZjbPIZVS51sOoI=
20+
-----END CERTIFICATE-----

.ci/certs/testnode.crt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIDIjCCAgqgAwIBAgIUI4QU6jA1dYSCbdIA6oAb2TBEluowDQYJKoZIhvcNAQEL
3+
BQAwNDEyMDAGA1UEAxMpRWxhc3RpYyBDZXJ0aWZpY2F0ZSBUb29sIEF1dG9nZW5l
4+
cmF0ZWQgQ0EwHhcNMTkwMjEzMDcyMzEzWhcNMjIwMjEyMDcyMzEzWjATMREwDwYD
5+
VQQDEwhpbnN0YW5jZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJeT
6+
yOy6EAScZxrULKjHePciiz38grivCrhFFV+dThaRCcl3DhDzb9Eny5q5iEw3WvLQ
7+
Rqmf01jncNIhaocTt66VqveXaMubbE8O0LcG6e4kpFO+JtnVF8JTARTc+ux/1uD6
8+
hO1VG/HItM7WQrQxh4hfB2u1AX2YQtoqEtXXEC+UHWfl4QzuzXjBnKCkO/L9/6Tf
9+
yNFQWXxKnIiTs8Xm9sEhhSCBJPlLTQu+MX4vR2Uwj5XZmflDUr+ZTenl9qYxL6b3
10+
SWhh/qEl4GAj1+tS7ZZOxE0237mUh3IIFYSWSaMm8K2m/BYHkLNWL5B1dMic0lsv
11+
osSoYrQuCef4HQMCitsCAwEAAaNNMEswHQYDVR0OBBYEFFMg4l1GLW8lYbwASY+r
12+
YeWYRzIiMB8GA1UdIwQYMBaAFDRKlCMowWR1rwxE0d1lTEQe5O71MAkGA1UdEwQC
13+
MAAwDQYJKoZIhvcNAQELBQADggEBAEQrgh1xALpumQTzsjxFRGque/vlKTgRs5Kh
14+
xtgapr6wjIbdq7dagee+4yNOKzS5lGVXCgwrJlHESv9qY0uumT/33vK2uduJ7NAd
15+
fR2ZzyBnhMX+mkYhmGrGYCTUMUIwOIQYa4Evis4W+LHmCIDG03l7gLHfdIBe9VMO
16+
pDZum8f6ng0MM49s8/rXODNYKw8kFyUhnfChqMi/2yggb1uUIfKlJJIchkgYjE13
17+
zuC+fjo029Pq1jeMIdxugLf/7I/8NiW1Yj9aCXevUXG1qzHFEuKAinBXYOZO/vWS
18+
LaEqOhwrzNynwgGpYAr7Rfgv4AflltYIIav4PZT03P7fbyAAf8s=
19+
-----END CERTIFICATE-----

.ci/certs/testnode.key

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
-----BEGIN RSA PRIVATE KEY-----
2+
MIIEpQIBAAKCAQEAl5PI7LoQBJxnGtQsqMd49yKLPfyCuK8KuEUVX51OFpEJyXcO
3+
EPNv0SfLmrmITDda8tBGqZ/TWOdw0iFqhxO3rpWq95doy5tsTw7Qtwbp7iSkU74m
4+
2dUXwlMBFNz67H/W4PqE7VUb8ci0ztZCtDGHiF8Ha7UBfZhC2ioS1dcQL5QdZ+Xh
5+
DO7NeMGcoKQ78v3/pN/I0VBZfEqciJOzxeb2wSGFIIEk+UtNC74xfi9HZTCPldmZ
6+
+UNSv5lN6eX2pjEvpvdJaGH+oSXgYCPX61Ltlk7ETTbfuZSHcggVhJZJoybwrab8
7+
FgeQs1YvkHV0yJzSWy+ixKhitC4J5/gdAwKK2wIDAQABAoIBAQCRFTJna/xy/WUu
8+
59FLR4qAOj8++JgCwACpue4oU7/vl6nffSYokWoAr2+RzG4qTX2vFi3cpA8+dGCn
9+
sLZvTi8tWzKGxBTZdg2oakzaMzLr74SeZ052iCGyrZJGbvF6Ny7srr1XEXSq6+os
10+
ZCb6pMHOhO7saBdiKMAsY8MdjTl/33AduuE6ztqv+L92xTr2g4QlbT1KvWlEgppU
11+
k4Gy7zdETkPBTSH/17ZwyGJoJICIAhbL4IpmOM4dPIg8nFkVPPpy6p0z4uGjtgnK
12+
nreZ2EKMzCafBaHn7A77gpi0OrQdl6pe0fsGqv/323YjCJPbwwl5TsoNq44DzwiX
13+
3M7XiVJxAoGBAOCne56vdN4uZmCgLVGT2JSUNVPOu4bfjrxWH6cslzrPT2Zhp3lO
14+
M4axZ3gmcervV252YEZXntXDHHCSfrECllRN1WFD63XmyQ/CkhuvZkkeRHfzL1TE
15+
EdqHOTqs4sRETZ7+RITFC81DZQkWWOKeyXMjyPBqd7RnThQHijB1c8Y5AoGBAKy6
16+
CVKBx+zz5crVD0tz4UhOmz1wRNN0CL0l+FXRuFSgbzMIvwpfiqe25crgeLHe2M2/
17+
TogdWbjZ2nUZQTzoRsSkQ6cKHpj+G/gWurp/UcHHXFVwgLSPF7c3KHDtiYq7Vqw0
18+
bvmhM03LI6+ZIPRV7hLBr7WP7UmpAiREMF7tTnmzAoGBAIkx3w3WywFQxtblmyeB
19+
qbd7F2IaE23XoxyjX+tBEQ4qQqwcoSE0v8TXHIBEwjceeX+NLVhn9ClJYVniLRq+
20+
oL3VVqVyzB4RleJZCc98e3PV1yyFx/b1Uo3pHOsXX9lKeTjKwV9v0rhFGzPEgP3M
21+
yOvXA8TG0FnM6OLUg/D6GX0JAoGAMuHS4TVOGeV3ahr9mHKYiN5vKNgrzka+VEod
22+
L9rJ/FQOrfADpyCiDen5I5ygsXU+VM3oanyK88NpcVlxOGoMft0M+OYoQVWKE7lO
23+
ZKYhBX6fGqQ7pfUJPXXIOgwfmni5fZ0sm+j63g3bg10OsiumKGxaQJgXhL1+3gQg
24+
Y7ZwibUCgYEAlZoFFvkMLjpOSaHk1z5ZZnt19X0QUIultBwkumSqMPm+Ks7+uDrx
25+
thGUCoz4ecr/ci4bIUY7mB+zfAbqnBOMxreJqCRbAIuRypo1IlWkTp8DywoDOfMW
26+
NfzjVmzJ7EJu44nGmVAi1jw4Pbseivvi1ujMCoPgaE8I1uSh144bwN8=
27+
-----END RSA PRIVATE KEY-----

.ci/jobs/defaults.yml

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
---
2+
3+
##### GLOBAL METADATA
4+
5+
- meta:
6+
cluster: clients-ci
7+
8+
##### JOB DEFAULTS
9+
10+
- job:
11+
project-type: matrix
12+
logrotate:
13+
daysToKeep: 30
14+
numToKeep: 100
15+
parameters:
16+
- string:
17+
name: branch_specifier
18+
default: refs/heads/master
19+
description: the Git branch specifier to build (&lt;branchName&gt;, &lt;tagName&gt;,
20+
&lt;commitId&gt;, etc.)
21+
properties:
22+
- github:
23+
url: https://github.com/elastic/elasticsearch-net/
24+
- inject:
25+
properties-content: HOME=$JENKINS_HOME
26+
concurrent: true
27+
node: flyweight
28+
scm:
29+
- git:
30+
name: origin
31+
credentials-id: f6c7695a-671e-4f4f-a331-acdce44ff9ba
32+
reference-repo: /var/lib/jenkins/.git-references/elasticsearch-net.git
33+
branches:
34+
- ${branch_specifier}
35+
url: git@github.com:elastic/elasticsearch-net.git
36+
basedir: ''
37+
wipe-workspace: 'True'
38+
triggers:
39+
- github
40+
axes:
41+
- axis:
42+
type: slave
43+
name: label
44+
values:
45+
- linux
46+
- axis:
47+
type: yaml
48+
filename: .ci/test-matrix.yml
49+
name: ELASTICSEARCH_VERSION
50+
- axis:
51+
type: yaml
52+
filename: .ci/test-matrix.yml
53+
name: DOTNET_VERSION
54+
- axis:
55+
type: yaml
56+
filename: .ci/test-matrix.yml
57+
name: TEST_SUITE
58+
yaml-strategy:
59+
exclude-key: exclude
60+
filename: .ci/test-matrix.yml
61+
wrappers:
62+
- ansicolor
63+
- timeout:
64+
type: absolute
65+
timeout: 120
66+
fail: true
67+
- timestamps
68+
- workspace-cleanup
69+
builders:
70+
- shell: |-
71+
#!/usr/local/bin/runbld
72+
.ci/run-tests
73+
publishers:
74+
- email:
75+
recipients: infra-root+build@elastic.co
76+
- junit:
77+
results: "build/output/*-junit.xml"
78+
allow-empty-results: true
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
---
2+
- job:
3+
name: elastic+elasticsearch-net+7.x
4+
display-name: 'elastic / elasticsearch-net # 7.x'
5+
description: Testing the elasticsearch-net 7.x branch.
6+
junit_results: "*-junit.xml"
7+
parameters:
8+
- string:
9+
name: branch_specifier
10+
default: refs/heads/7.x
11+
description: The Git branch specifier to build
12+
triggers:
13+
- github
14+
- timed: '@daily'
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
---
2+
- job:
3+
name: elastic+elasticsearch-net+master
4+
display-name: 'elastic / elasticsearch-net # master'
5+
description: Testing the elasticsearch-net master branch.
6+
junit_results: "*-junit.xml"
7+
parameters:
8+
- string:
9+
name: branch_specifier
10+
default: refs/heads/master
11+
description: The Git branch specifier to build
12+
triggers:
13+
- github
14+
- timed: '@daily'

.ci/readme.md

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
## Jenkins test folder
2+
3+
This `.ci` folder is used by https://clients-ci.elastic.co
4+
5+
Where each Elasticsearch client runs the [rest api spec test](https://github.com/elastic/elasticsearch/tree/master/rest-api-spec/src/main/resources/rest-api-spec/test)
6+
as defined by the Elasticsearch team.
7+
8+
Each client starts the cluster using the same `.ci/run-elasticsearch` from `run-tests` and then bootstraps there own `rest api test runner`.api
9+
10+
The .NET rest api spec runner lives under `src/Tests/Test.YamlRunner`. This runner takes the test yaml files and turns them into .NET instructions.api
11+
12+
Each `do` section in the yaml is mapped to a low level client method. To aid with assertions the tests ask for `DynamicResponse` which is a great
13+
way to deal with elasticsearch responses in a semi typed fashion.
14+
15+
These `rest-api-spec` tests are in addition to the unit and integration tests that live under `src/Tests/Tests` which for 90% of the cases focuses
16+
more on the high level client `NEST` where as these `rest-api-spec` test fully focus on the low level client `Elasticsearch.Net`
17+
18+
The `DockerFile` in this folder sets up this repos inside a docker container ready to run our build.
19+
20+
The `rest-api-spec` runner expects Elasticsearch to be started before invocation and uses the endpoint its passed to discover the current Elasticsearch
21+
`build hash` that is running and downloads the tests matching that `build hash`.
22+
23+
If you want to run the tests the same that the Jenkins instance on elastic.co does you can call
24+
25+
```bash
26+
$ ELASTICSEARCH_VERSION=8.0.0-SNAPSHOT ./.ci/run-tests
27+
```
28+
29+
| Variable Name | Default | Description |
30+
|-------------------------|-------------|-------------|
31+
| `ELASTICSEARCH_VERSION` | `N/A` | The elasticsearch version to target
32+
| `TEST_SUITE` | `oss` | `oss` or `xpack` sets which test suite to run and which container to run against. |
33+
| `DOTNET_VERSION` | `3.0.100` | The .NET sdk version used to grab the proper container |
34+
35+
36+
If you want to manually spin up elasticsearch for this tests and call the runner afterwards you can use
37+
38+
```bash
39+
$ ELASTICSEARCH_VERSION=elasticsearch-oss:8.0.0-SNAPSHOT DETACH=true bash .ci/run-elasticsearch.sh
40+
```
41+
42+
Note that `ELASTICSEARCH_VERSION` here is the full docker reference, `.ci/run-tests` is smart enough to compose this based on `TEST_SUITE`
43+
44+
Spinning down the cluster can be done by passing `CLEANUP=true` using the same args
45+
46+
```bash
47+
$ ELASTICSEARCH_VERSION=elasticsearch-oss:8.0.0-SNAPSHOT CLEANUP=true bash .ci/run-elasticsearch.sh
48+
```
49+
50+
To kick off the `rest-api-spec` tests manually after starting the cluster manually:
51+
52+
```bash
53+
$ ./build.sh rest-spec-tests -f create -e http://localhost:9200 -o /sln/build/output/rest-spec-junit.xml
54+
```
55+
56+
See `--help` for a full command line reference
57+
58+
```bash
59+
$ ./build.sh rest-spec-tests -f --help
60+
```
61+
62+
Against in most cases running through `./ci/run-tests` is all you need:
63+
64+
```bash
65+
$ ELASTICSEARCH_VERSION=8.0.0-SNAPSHOT ./.ci/run-tests
66+
```
67+

0 commit comments

Comments
 (0)