-
Notifications
You must be signed in to change notification settings - Fork 49
199 lines (175 loc) · 6.98 KB
/
integration.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
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
name: Integration tests
on:
push:
branches-ignore:
- 'dependabot/**'
pull_request: {}
env:
OPENSEARCH_PLUGINS_DIRECTORY: /tmp/opensearch-plugins
jobs:
integration-opensearch:
name: Integration OpenSearch
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
# 1.0.1 is skipped because it doesn't have a tag in OpenSearch repo, we can't check out to compile plugins
version:
- 2.7.0
- 2.6.0
- 2.5.0
- 2.4.1
- 2.3.0
- 2.2.1
- 2.1.0
- 2.0.1
- 1.3.10
- 1.2.4
- 1.1.0
- 1.0.0
steps:
- name: Checkout Client
uses: actions/checkout@v3
with:
path: client
- uses: actions/setup-dotnet@v3
with:
dotnet-version: |
5.0.x
6.0.x
- uses: actions/cache@v3
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.?sproj') }}
restore-keys: |
${{ runner.os }}-nuget-
# Due to https://github.com/opensearch-project/project-website/issues/737
# No plugins released for versions 1.0.x , so we need to compile plugins on our own to run tests properly
# Compiled plugins are copied to ${OPENSEARCH_PLUGINS_DIRECTORY} where picked up by the test framework
# Versions of OpenSearch starting 1.1.0 are able to download plugins from the Internet
- name: Restore or Build OpenSearch Plugins
uses: ./client/.github/actions/cached-git-build
if: matrix.version == '1.0.0'
with:
repository: opensearch-project/OpenSearch
ref: ${{ matrix.version }}
path: opensearch
cached_paths: |
./opensearch/plugins/*/build/distributions/*.zip
build_script: |
PluginList=("analysis-icu" "analysis-kuromoji" "analysis-nori" "analysis-phonetic" "ingest-attachment" "mapper-murmur3")
for plugin in ${PluginList[*]}; do
./gradlew :plugins:$plugin:assemble -Dbuild.snapshot=false
done
- name: Copy OpenSearch Plugins
if: matrix.version == '1.0.0'
run: |
mkdir -p ${{ env.OPENSEARCH_PLUGINS_DIRECTORY }}
cp opensearch/plugins/*/build/distributions/*-${{ matrix.version }}.zip ${{ env.OPENSEARCH_PLUGINS_DIRECTORY }}
- run: "./build.sh integrate ${{ matrix.version }} readonly,writable random:test_only_one --report"
name: Integration Tests
working-directory: client
- name: Upload test report
if: failure()
uses: actions/upload-artifact@v3
with:
name: report-${{ matrix.version }}
path: client/build/output/*
integration-opensearch-unreleased:
name: Integration OpenSearch Unreleased
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
opensearch_ref:
- '1.x'
- '2.x'
- 'main'
steps:
- name: Checkout Client
uses: actions/checkout@v3
with:
path: client
- uses: actions/setup-dotnet@v3
with:
dotnet-version: |
5.0.x
6.0.x
- uses: actions/cache@v3
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.?sproj') }}
restore-keys: |
${{ runner.os }}-nuget-
- name: Restore or Build OpenSearch
uses: ./client/.github/actions/cached-git-build
with:
repository: opensearch-project/OpenSearch
ref: ${{ matrix.opensearch_ref }}
path: opensearch
cached_paths: |
./opensearch/distribution/archives/linux-tar/build/distributions/opensearch-*.tar.gz
./opensearch/plugins/*/build/distributions/*.zip
build_script: |
./gradlew :distribution:archives:linux-tar:assemble
PluginList=("analysis-icu" "analysis-kuromoji" "analysis-nori" "analysis-phonetic" "ingest-attachment" "mapper-murmur3")
for plugin in ${PluginList[*]}; do
./gradlew :plugins:$plugin:assemble
done
- name: Determine OpenSearch distribution path and version
shell: bash -eo pipefail {0}
run: |
distribution=`ls -1 $PWD/opensearch/distribution/archives/linux-tar/build/distributions/opensearch-*.tar.gz | head -1`
version=`basename $distribution | cut -d'-' -f3,4`
echo "OPENSEARCH_DISTRIBUTION=$distribution" >> $GITHUB_ENV
echo "OPENSEARCH_VERSION=$version" >> $GITHUB_ENV
- name: Restore or Build OpenSearch Security
uses: ./client/.github/actions/cached-git-build
if: matrix.opensearch_ref == '1.x'
with:
repository: opensearch-project/security
ref: ${{ matrix.opensearch_ref }}
path: opensearch-security
cached_paths: |
./opensearch-security/build/distributions/opensearch-security-*-SNAPSHOT.zip
build_script: ./gradlew assemble -Dopensearch.version=$OPENSEARCH_VERSION
- name: Restore or Build OpenSearch k-NN
uses: ./client/.github/actions/cached-git-build
with:
repository: opensearch-project/k-NN
ref: ${{ matrix.opensearch_ref }}
path: opensearch-knn
cached_paths: |
./opensearch-knn/build/distributions/opensearch-knn-*-SNAPSHOT.zip
build_script: |
sudo apt-get install -y libopenblas-dev libomp-dev
./gradlew buildJniLib assemble -Dopensearch.version=$OPENSEARCH_VERSION
distributions=./build/distributions
lib_dir=$distributions/lib
mkdir $lib_dir
cp -v $(ldconfig -p | grep libgomp | cut -d ' ' -f 4) $lib_dir
cp -v ./jni/release/libopensearchknn_* $lib_dir
ls -l $lib_dir
cd $distributions
zip -ur opensearch-knn-*.zip lib
- name: Copy OpenSearch plugins
shell: bash -eo pipefail {0}
run: |
mkdir -p $OPENSEARCH_PLUGINS_DIRECTORY
cp -v ./opensearch/plugins/*/build/distributions/*-$OPENSEARCH_VERSION.zip $OPENSEARCH_PLUGINS_DIRECTORY/
plugins=("opensearch-knn" "opensearch-security")
for plugin in ${plugins[*]}; do
if [[ -d "./$plugin" ]]; then
cp -v ./$plugin/build/distributions/$plugin-*-SNAPSHOT.zip $OPENSEARCH_PLUGINS_DIRECTORY/
fi
done
ls -l $OPENSEARCH_PLUGINS_DIRECTORY
- run: "./build.sh integrate ${{ env.OPENSEARCH_VERSION }} readonly,writable random:test_only_one --report"
name: Integration Tests
working-directory: client
- name: Upload test report
if: failure()
uses: actions/upload-artifact@v3
with:
name: report-unreleased-${{ matrix.opensearch_ref }}
path: client/build/output/*