elastic-enterprise-search 8.4.0 → 8.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/.buildkite/Dockerfile +13 -0
  3. data/.buildkite/certs/README.md +50 -0
  4. data/.buildkite/certs/ca.crt +20 -0
  5. data/.buildkite/certs/ca.key +27 -0
  6. data/.buildkite/certs/testnode.crt +21 -0
  7. data/.buildkite/certs/testnode.key +27 -0
  8. data/.buildkite/certs/testnode_no_san.crt +19 -0
  9. data/.buildkite/certs/testnode_no_san.key +27 -0
  10. data/.buildkite/functions/cleanup.sh +67 -0
  11. data/.buildkite/functions/imports.sh +60 -0
  12. data/.buildkite/functions/wait-for-container.sh +36 -0
  13. data/.buildkite/log-results.sh +15 -0
  14. data/.buildkite/pipeline.yml +25 -0
  15. data/.buildkite/run-client.sh +35 -0
  16. data/.buildkite/run-elasticsearch.sh +150 -0
  17. data/.buildkite/run-enterprise-search.sh +72 -0
  18. data/.buildkite/run-tests.sh +24 -0
  19. data/.ci/.env +9 -0
  20. data/.ci/docker-compose.yml +166 -0
  21. data/.ci/jobs/{elastic+enterprise-search-ruby+8.0.yml → elastic+enterprise-search-ruby+8.4.yml} +4 -4
  22. data/.ci/jobs/{elastic+enterprise-search-ruby+8.1.yml → elastic+enterprise-search-ruby+8.5.yml} +4 -4
  23. data/.ci/run-kibana.sh +22 -0
  24. data/.ci/run-stack.sh +1 -0
  25. data/.ci/test-matrix.yml +1 -1
  26. data/.github/workflows/rubocop.yml +2 -2
  27. data/.github/workflows/testing.yml +3 -1
  28. data/.gitignore +2 -1
  29. data/README.md +1 -1
  30. data/docs/guide/release_notes/717.asciidoc +12 -0
  31. data/docs/guide/release_notes/85.asciidoc +40 -0
  32. data/docs/guide/release_notes/86.asciidoc +9 -0
  33. data/docs/guide/release_notes/index.asciidoc +4 -0
  34. data/elastic-enterprise-search.gemspec +7 -2
  35. data/lib/elastic/app-search/api/put_search_settings.rb +1 -0
  36. data/lib/elastic/app-search/api/search_es_search.rb +2 -1
  37. data/lib/elastic/app-search/api/search_explain.rb +1 -1
  38. data/lib/elastic/enterprise-search/version.rb +1 -1
  39. data/spec/app-search/client_spec.rb +1 -28
  40. data/spec/enterprise-search/client_spec.rb +2 -29
  41. data/spec/spec_helper.rb +38 -0
  42. data/spec/workplace-search/client_spec.rb +1 -28
  43. metadata +89 -11
  44. data/.ci/jobs/elastic+enterprise-search-ruby+8.2.yml +0 -12
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 29385166cdc5e9a328cf67da13cab2a4aa66a99319cea68f18589dffe02aa10f
4
- data.tar.gz: '08f62bbcfd1b0b86f75642410aeb6b13a6af5e2342d6570a1ff503fc204d0db3'
3
+ metadata.gz: 39e7df6602a80c776dda6da6ca3bc760170d0f7cee394e5e9ab805093851f054
4
+ data.tar.gz: 06be17689a9957f56f41a5547f1a475d30b6f7ae2db0771b3a9becd5f1cdb9b2
5
5
  SHA512:
6
- metadata.gz: 19cad7d9137c49c057702b95628eab683f0e5797e56245569e92b36edaf4824e26ebeeb40793f97b634e037b948e6e69df3d1217a9e8affe52dd1a1596282c2d
7
- data.tar.gz: ab239465521ca6f25d5e4ca3e32e8f74bab95420123a32ae73e8bcecd29a3f23765b30fa6dbd7ab0c3c4d485e95d6923f3442c0d555a5f684fb8413ae962ec3a
6
+ metadata.gz: 36994506a1019e7a84134c9e2116e9299d6a14e9b1ef34b6044a63efaf4d587b7026c61b0d8edaecb59d1936f883b44593fb8df0ae4417544a0396d319f33aff
7
+ data.tar.gz: 50c34b6d1fb5d9671b568d464c5be690c924ace7c6e32e1daa7b703f0e1f75c259a34d47db8f5b572c816260f2ef2433b82f2623e31fd477e63c3b9cca25b722
@@ -0,0 +1,13 @@
1
+ ARG RUBY_VERSION=${RUBY_VERSION:-3.1}
2
+ FROM ruby:$RUBY_VERSION
3
+
4
+ ENV QUIET=true
5
+ ENV CI=true
6
+
7
+ # Install required tools
8
+ RUN apt-get -q update && apt-get -y install zip curl
9
+
10
+ WORKDIR /code/enterprise-search-ruby
11
+ COPY . .
12
+
13
+ RUN bundle install
@@ -0,0 +1,50 @@
1
+ # CI certificates
2
+
3
+ This directory contains certificates that can be used to test against Elasticsearch in CI
4
+
5
+ ## Generating new certificates using the Certificate Authority cert and key
6
+
7
+ The `ca.crt` and `ca.key` can be used to generate any other certificates that may be needed
8
+ for CI. Perhaps the easiest way to do so is using
9
+ [`elasticsearch-certutil`](https://www.elastic.co/guide/en/elasticsearch/reference/current/certutil.html)
10
+
11
+ Using the elasticsearch docker container, run the following from the `.ci/certs` directory
12
+
13
+ ```sh
14
+ docker run \
15
+ -v "$PWD:/var/tmp" \
16
+ --rm docker.elastic.co/elasticsearch/elasticsearch:7.6.1 \
17
+ ./bin/elasticsearch-certutil cert \
18
+ --ca-cert /var/tmp/ca.crt --ca-key /var/tmp/ca.key --pem \
19
+ --out /var/tmp/bundle.zip
20
+ ```
21
+
22
+ This will output a `bundle.zip` file containing a directory named `instance` containing
23
+ `instance.crt` and `instance.key` in PEM format.
24
+
25
+ The CN Subject name can be changed using
26
+
27
+ ```sh
28
+ docker run \
29
+ -v "$PWD:/var/tmp" \
30
+ --rm docker.elastic.co/elasticsearch/elasticsearch:7.6.1 \
31
+ ./bin/elasticsearch-certutil cert \
32
+ --ca-cert /var/tmp/ca.crt --ca-key /var/tmp/ca.key --pem \
33
+ --out /var/tmp/bundle.zip \
34
+ --name foo
35
+ ```
36
+
37
+ The directory in `bundle.zip` will now be named `foo` and contain
38
+ `foo.crt` and `foo.key` in PEM format.
39
+
40
+ Additional DNS and IP SAN entries can be added with `--dns` and `--ip`, respectively.
41
+
42
+ ```sh
43
+ docker run \
44
+ -v "$PWD:/var/tmp" \
45
+ --rm docker.elastic.co/elasticsearch/elasticsearch:7.6.1 \
46
+ ./bin/elasticsearch-certutil cert \
47
+ --ca-cert /var/tmp/ca.crt --ca-key /var/tmp/ca.key --pem \
48
+ --out /var/tmp/bundle.zip \
49
+ --dns instance --dns localhost --dns es1 --ip 127.0.0.1 --ip ::1
50
+ ```
@@ -0,0 +1,20 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDSjCCAjKgAwIBAgIVAJQLm8V2LcaCTHUcoIfO+KL63nG3MA0GCSqGSIb3DQEB
3
+ CwUAMDQxMjAwBgNVBAMTKUVsYXN0aWMgQ2VydGlmaWNhdGUgVG9vbCBBdXRvZ2Vu
4
+ ZXJhdGVkIENBMB4XDTIwMDIyNjA1NTA1N1oXDTIzMDIyNTA1NTA1N1owNDEyMDAG
5
+ A1UEAxMpRWxhc3RpYyBDZXJ0aWZpY2F0ZSBUb29sIEF1dG9nZW5lcmF0ZWQgQ0Ew
6
+ ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDYyajkPvGtUOE5M1OowQfB
7
+ kWVrWjo1+LIxzgCeRHp0YztLtdVJ0sk2xoSrt2uZpxcPepdyOseLTjFJex1D2yCR
8
+ AEniIqcFif4G72nDih2LlbhpUe/+/MTryj8ZTkFTzI+eMmbQi5FFMaH+kwufmdt/
9
+ 5/w8YazO18SxxJUlzMqzfNUrhM8vvvVdxgboU7PWhk28wZHCMHQovomHmzclhRpF
10
+ N0FMktA98vHHeRjH19P7rNhifSd7hZzoH3H148HVAKoPgqnZ6vW2O2YfAWOP6ulq
11
+ cyszr57p8fS9B2wSdlWW7nVHU1JuKcYD67CxbBS23BeGFgCj4tiNrmxO8S5Yf85v
12
+ AgMBAAGjUzBRMB0GA1UdDgQWBBSWAlip9eoPmnG4p4OFZeOUBlAbNDAfBgNVHSME
13
+ GDAWgBSWAlip9eoPmnG4p4OFZeOUBlAbNDAPBgNVHRMBAf8EBTADAQH/MA0GCSqG
14
+ SIb3DQEBCwUAA4IBAQA19qqrMTWl7YyId+LR/QIHDrP4jfxmrEELrAL58q5Epc1k
15
+ XxZLzOBSXoBfBrPdv+3XklWqXrZjKWfdkux0Xmjnl4qul+srrZDLJVZG3I7IrITh
16
+ AmQUmL9MuPiMnAcxoGZp1xpijtW8Qmd2qnambbljWfkuVaa4hcVRfrAX6TciIQ21
17
+ bS5aeLGrPqR14h30YzDp0RMmTujEa1o6ExN0+RSTkE9m89Q6WdM69az8JW7YkWqm
18
+ I+UCG3TcLd3TXmN1zNQkq4y2ObDK4Sxy/2p6yFPI1Fds5w/zLfBOvvPQY61vEqs8
19
+ SCCcQIe7f6NDpIRIBlty1C9IaEHj7edyHjF6rtYb
20
+ -----END CERTIFICATE-----
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEpgIBAAKCAQEA2Mmo5D7xrVDhOTNTqMEHwZFla1o6NfiyMc4AnkR6dGM7S7XV
3
+ SdLJNsaEq7drmacXD3qXcjrHi04xSXsdQ9sgkQBJ4iKnBYn+Bu9pw4odi5W4aVHv
4
+ /vzE68o/GU5BU8yPnjJm0IuRRTGh/pMLn5nbf+f8PGGsztfEscSVJczKs3zVK4TP
5
+ L771XcYG6FOz1oZNvMGRwjB0KL6Jh5s3JYUaRTdBTJLQPfLxx3kYx9fT+6zYYn0n
6
+ e4Wc6B9x9ePB1QCqD4Kp2er1tjtmHwFjj+rpanMrM6+e6fH0vQdsEnZVlu51R1NS
7
+ binGA+uwsWwUttwXhhYAo+LYja5sTvEuWH/ObwIDAQABAoIBAQC8QDGnMnmPdWJ+
8
+ 13FYY3cmwel+FXXjFDk5QpgK15A2rUz6a8XxO1d7d1wR+U84uH4v9Na6XQyWjaoD
9
+ EyPQnuJiyAtgkZLUHoY244PGR5NsePEQlBSCKmGeF5w/j1LvP/2e9EmP4wKdQYJY
10
+ nLxFNcgEBCFnFbKIU5n8fKa/klybCrwlBokenyBro02tqH4LL7h1YMRRrl97fv1V
11
+ e/y/0WcMN+KnMglfz6haimBRV2yamCCHHmBImC+wzOgT/quqlxPfI+a3ScHxuA65
12
+ 3QyCavaqlPh+T3lXnN/Na4UWqFtzMmwgJX2x1zM5qiln46/JoDiXtagvV43L3rNs
13
+ LhPRFeIRAoGBAPhEB7nNpEDNjIRUL6WpebWS9brKAVY7gYn7YQrKGhhCyftyaiBZ
14
+ zYgxPaJdqYXf+DmkWlANGoYiwEs40QwkR/FZrvO4+Xh3n3dgtl59ZmieuoQvDsG+
15
+ RYIj+TfBaqhewhZNMMl7dxz7DeyQhyRCdsvl3VqJM0RuOsIrzrhCIEItAoGBAN+K
16
+ lgWI7swDpOEaLmu+IWMkGImh1LswXoZqIgi/ywZ7htZjPzidOIeUsMi+lrYsKojG
17
+ uU3sBxASsf9kYXDnuUuUbGT5M/N2ipXERt7klUAA/f5sg1IKlTrabaN/HGs/uNtf
18
+ Efa8v/h2VyTurdPCJ17TNpbOMDwX1qGM62tyt2CLAoGBAIHCnP8iWq18QeuQTO8b
19
+ a3/Z9hHRL22w4H4MI6aOB6GSlxuTq6CJD4IVqo9IwSg17fnCy2l3z9s4IqWuZqUf
20
+ +XJOW8ELd2jdrT2qEOfGR1Z7UCVyqxXcq1vgDYx0zZh/HpalddB5dcJx/c8do2Ty
21
+ UEE2PcHqYB9uNcvzNbLc7RtpAoGBALbuU0yePUTI6qGnajuTcQEPpeDjhRHWSFRZ
22
+ ABcG1N8uMS66Mx9iUcNp462zgeP8iqY5caUZtMHreqxT+gWKK7F0+as7386pwElF
23
+ QPXgO18QMMqHBIQb0vlBjJ1SRPBjSiSDTVEML1DljvTTOX7kEJHh6HdKrmBO5b54
24
+ cqMQUo53AoGBAPVWRPUXCqlBz914xKna0ZUh2aesRBg5BvOoq9ey9c52EIU5PXL5
25
+ 0Isk8sWSsvhl3tjDPBH5WuL5piKgnCTqkVbEHmWu9s1T57Mw6NuxlPMLBWvyv4c6
26
+ tB9brOxv0ui3qGMuBsBoDKbkNnwXyOXLyFg7O+H4l016A3mLQzJM+NGV
27
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1,21 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDYjCCAkqgAwIBAgIVAIZQH0fe5U+bGQ6m1JUBO/AQkQ/9MA0GCSqGSIb3DQEB
3
+ CwUAMDQxMjAwBgNVBAMTKUVsYXN0aWMgQ2VydGlmaWNhdGUgVG9vbCBBdXRvZ2Vu
4
+ ZXJhdGVkIENBMB4XDTIwMDMyNzE5MTcxMVoXDTIzMDMyNzE5MTcxMVowEzERMA8G
5
+ A1UEAxMIaW5zdGFuY2UwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDB
6
+ fco1t1+sE1gTwTVGcXKZqJTP2GjMHM0cfJE5KKfwC5B+pHADRT6FZxvepgKjEBDt
7
+ CK+2Rmotyeb15XXMSKguNhyT+2PuKvT5r05L7P91XRYXrwxG2swJPtct7A87xdFa
8
+ Ek+YRpqGGmTaux2jOELMiAmqEzoj6w/xFq+LF4SolTW4wOL2eLFkEFHBX2oCwU5T
9
+ Q+B+7E9zL45nFWlkeRGJ+ZQTnRNZ/1r4N9A9Gtj4x/H1/y4inWndikdxAb5QiEYJ
10
+ T+vbQWzHYWjz13ttHJsz+6T8rvA1jK+buHgVh4K8lV13X9k54soBqHB8va7/KIJP
11
+ g8gvd6vusEI7Bmfl1as7AgMBAAGjgYswgYgwHQYDVR0OBBYEFKnnpvuVYwtFSUis
12
+ WwN9OHLyExzJMB8GA1UdIwQYMBaAFJYCWKn16g+acbing4Vl45QGUBs0MDsGA1Ud
13
+ EQQ0MDKCCWxvY2FsaG9zdIIIaW5zdGFuY2WHBH8AAAGHEAAAAAAAAAAAAAAAAAAA
14
+ AAGCA2VzMTAJBgNVHRMEAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQAPNsIoD4GBrTgR
15
+ jfvBuHS6eU16P95m16O8Mdpr4SMQgWLQUhs8aoVgfwpg2TkbCWxOe6khJOyNm7bf
16
+ fW4aFQ/OHcQV4Czz3c7eOHTWSyMlCOv+nRXd4giJZ5TOHw1zKGmKXOIvhvE6RfdF
17
+ uBBfrusk164H4iykm0Bbr/wo4d6wuebp3ZYLPw5zV0D08rsaR+3VJ9VxWuFpdm/r
18
+ 2onYOohyuX9DRjAczasC+CRRQN4eHJlRfSQB8WfTKw3EloRJJDAg6SJyGiAJ++BF
19
+ hnqfNcEyKes2AWagFF9aTbEJMrzMhH+YB5F+S/PWvMUlFzcoocVKqc4pIrjKUNWO
20
+ 6nbTxeAB
21
+ -----END CERTIFICATE-----
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEowIBAAKCAQEAwX3KNbdfrBNYE8E1RnFymaiUz9hozBzNHHyROSin8AuQfqRw
3
+ A0U+hWcb3qYCoxAQ7QivtkZqLcnm9eV1zEioLjYck/tj7ir0+a9OS+z/dV0WF68M
4
+ RtrMCT7XLewPO8XRWhJPmEaahhpk2rsdozhCzIgJqhM6I+sP8RavixeEqJU1uMDi
5
+ 9nixZBBRwV9qAsFOU0PgfuxPcy+OZxVpZHkRifmUE50TWf9a+DfQPRrY+Mfx9f8u
6
+ Ip1p3YpHcQG+UIhGCU/r20Fsx2Fo89d7bRybM/uk/K7wNYyvm7h4FYeCvJVdd1/Z
7
+ OeLKAahwfL2u/yiCT4PIL3er7rBCOwZn5dWrOwIDAQABAoIBAFcm4ICnculf4Sks
8
+ umFbUiISA81GjZV6V4zAMu1K+bGuk8vnJyjh9JJD6hK0NbXa07TgV7zDJKoxKd2S
9
+ GCgGhfIin2asMcuh/6vDIYIjYsErR3stdlsnzAVSD7v4ergSlwR6AO32xz0mAE1h
10
+ QK029yeHEstPU72/7/NIo5MD6dXAbut1MzgijZD8RQo1z21D6qmLcPTVTfkn7a3W
11
+ MY3y7XUIkA1TOyIRsH3k6F6NBWkvtXbwOUeLCJ14EvS8T9BqhIhPDZv8mQTRLDOD
12
+ tQRyC4Cnw+UhYmnMFJhj6N2jpTBv/AdoKcRC56uBJyPW+dxj6i4e7n3pQuxqRvpI
13
+ LLJJsskCgYEA4QQxzuJizLKV75rE+Qxg0Ej0Gid1aj3H5eeTZOUhm9KC8KDfPdpk
14
+ msKaNzJq/VDcqHPluGS1jYZVgZlal1nk5xKBcbQ4n297VPVd+sLtlf0bj4atlDUO
15
+ +iOVo0H7k5yWvj+TzVRlc5zjDLcnQh8i+22o3+65hIrb2zpzg/cCZJ8CgYEA3CJX
16
+ bjmWPQ0uZVIa8Wz8cJFtKT9uVl7Z3/f6HjN9I0b/9MmVlNxQVAilVwhDkzR/UawG
17
+ QeRFBJ6XWRwX0aoMq+O9VSNu/R2rtEMpIYt3LwbI3yw6GRoCdB5qeL820O+KX5Fl
18
+ /z+ZNgrHgA1yKPVf+8ke2ZtLEqPHMN+BMuq8t+UCgYEAy0MfvzQPbbuw55WWcyb0
19
+ WZJdNzcHwKX4ajzrj4vP9VOPRtD7eINMt+QsrMnVjei6u0yeahhHTIXZvc2K4Qeq
20
+ V/YGinDzaUqqTU+synXFauUOPXO6XxQi6GC2rphPKsOcBFWoLSYc0vgYvgbA5uD7
21
+ l8Yyc77RROKuwfWmHcJHHh8CgYBurGFSjGdJWHgr/oSHPqkIG0VLiJV7nQJjBPRd
22
+ /Lr8YnTK6BJpHf7Q0Ov3frMirjEYqakXtaExel5TMbmT8q+eN8h3pnHlleY+oclr
23
+ EQghv4J8GWs4NYhoQuZ6wH/ZuaTS+XHTS3FG51J3wcrUZtET8ICvHNE4lNjPbH8z
24
+ TysENQKBgHER1RtDFdz+O7mlWibrHk8JDgcVdZV/pBF+9cb7r/orkH9RLAHDlsAO
25
+ tuSVaQmm5eqgaAxMamBXSyw1lir07byemyuEDg0mJ1rNUGsAY8P+LWr579gvKMme
26
+ 5gvrJr99JkBTV3z+TiL7dZa52eW00Ijqg2qcbHGpq3kXWWkbd8Tn
27
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1,19 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDIzCCAgugAwIBAgIVAMTO6uVx9dLox2t0lY4IcBKZXb5WMA0GCSqGSIb3DQEB
3
+ CwUAMDQxMjAwBgNVBAMTKUVsYXN0aWMgQ2VydGlmaWNhdGUgVG9vbCBBdXRvZ2Vu
4
+ ZXJhdGVkIENBMB4XDTIwMDIyNjA1NTA1OVoXDTIzMDIyNTA1NTA1OVowEzERMA8G
5
+ A1UEAxMIaW5zdGFuY2UwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDK
6
+ YLTOikVENiN/qYupOsoXd7VYYnryyfCC/dK4FC2aozkbqjFzBdvPGAasoc4yEiH5
7
+ CGeXMgJuOjk1maqetmdIsw00j4oHJviYsnGXzxxS5swhD7spcW4Uk4V4tAUzrbfT
8
+ vW/2WW/yYCLe5phVb2chz0jL+WYb4bBmdfs/t6RtP9RqsplYAmVp3gZ6lt2YNtvE
9
+ k9gz0TVk3DuO1TquIClfRYUjuywS6xDSvxJ8Jl91EfDWM8QU+9F+YAtiv74xl2U3
10
+ P0wwMqNvMxf9/3ak3lTQGsgO4L6cwbKpVLMMzxSVunZz/sgl19xy3qHHz1Qr2MjJ
11
+ /2c2J7vahUL4NPRkjJClAgMBAAGjTTBLMB0GA1UdDgQWBBS2Wn8E2VZv4oenY+pR
12
+ O8G3zfQXhzAfBgNVHSMEGDAWgBSWAlip9eoPmnG4p4OFZeOUBlAbNDAJBgNVHRME
13
+ AjAAMA0GCSqGSIb3DQEBCwUAA4IBAQAvwPvCiJJ6v9jYcyvYY8I3gP0oCwrylpRL
14
+ n91UlgRSHUmuAObyOoVN5518gSV/bTU2SDrstcLkLFxHvnfpoGJoxsQEHuGxwDRI
15
+ nhYNd62EKLerehNM/F9ILKmvTh8f6QPCzjUuExTXv+63l2Sr6dBS7FHsGs6UKUYO
16
+ llM/y9wMZ1LCuZuBg9RhtgpFXRSgDM9Z7Begu0d/BPX9od/qAeZg9Arz4rwUiCN4
17
+ IJOMEBEPi5q1tgeS0Fb1Grpqd0Uz5tZKtEHNKzLG+zSMmkneL62Nk2HsmEFZKwzg
18
+ u2pU42UaUE596G6o78s1aLn9ICcElPHTjiuZNSiyuu9IzvFDjGQw
19
+ -----END CERTIFICATE-----
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEogIBAAKCAQEAymC0zopFRDYjf6mLqTrKF3e1WGJ68snwgv3SuBQtmqM5G6ox
3
+ cwXbzxgGrKHOMhIh+QhnlzICbjo5NZmqnrZnSLMNNI+KByb4mLJxl88cUubMIQ+7
4
+ KXFuFJOFeLQFM623071v9llv8mAi3uaYVW9nIc9Iy/lmG+GwZnX7P7ekbT/UarKZ
5
+ WAJlad4GepbdmDbbxJPYM9E1ZNw7jtU6riApX0WFI7ssEusQ0r8SfCZfdRHw1jPE
6
+ FPvRfmALYr++MZdlNz9MMDKjbzMX/f92pN5U0BrIDuC+nMGyqVSzDM8Ulbp2c/7I
7
+ Jdfcct6hx89UK9jIyf9nNie72oVC+DT0ZIyQpQIDAQABAoIBADAh7f7NjgnaInlD
8
+ ds8KB3SraPsbeQhzlPtiqRJU4j/MIFH/GYG03AGWQkget67a9y+GmzSvlTpoKKEh
9
+ 6h2TXl9BDpv4o6ht0WRn1HJ5tM/Wyqf2WNpTew3zxCPgFPikkXsPrChYPzLTQJfp
10
+ GkP/mfTFmxfAOlPZSp4j41zVLYs53eDkAegFPVfKSr1XNNJ3QODLPcIBfxBYsiC9
11
+ oU+jRW8xYuj31cEl5k5UqrChJ1rm3mt6cguqXKbISuoSvi13gXI6DccqhuLAU+Kr
12
+ ib2XYrRP+pWocZo/pM9WUVoNGtFxfY88sAQtvG6gDKo2AURtFyq84Ow0h9mdixV/
13
+ gRIDPcECgYEA5nEqE3OKuG9WuUFGXvjtn4C0F6JjflYWh7AbX51S4F6LKrW6/XHL
14
+ Rg4BtF+XReT7OQ6llsV8kZeUxsUckkgDLzSaA8lysNDV5KkhAWHfRqH//QKFbqZi
15
+ JL9t3x63Qt81US8s2hQk3khPYTRM8ZB3xHiXvZYSGC/0x/DxfEO3QJECgYEA4NK5
16
+ sxtrat8sFz6SK9nWEKimPjDVzxJ0hxdX4tRq/JdOO5RncawVqt6TNP9gTuxfBvhW
17
+ MhJYEsQj8iUoL1dxo9d1eP8HEANNV0iX5OBvJNmgBp+2OyRSyr+PA55+wAxYuAE7
18
+ QKaitOjW57fpArNRt2hQyiSzTuqUFRWTWJHCWNUCgYAEurPTXF6vdFGCUc2g61jt
19
+ GhYYGhQSpq+lrz6Qksj9o9MVWE9zHh++21C7o+6V16I0RJGva3QoBMVf4vG4KtQt
20
+ 5tV2WG8LI+4P2Ey+G4UajP6U8bVNVQrUmD0oBBhcvfn5JY+1Fg6/pRpD82/U0VMz
21
+ 7AmpMWhDqNBMPiymkTk0kQKBgCuWb05cSI0ly4SOKwS5bRk5uVFhYnKNH255hh6C
22
+ FGP4acB/WzbcqC7CjEPAJ0nl5d6SExQOHmk1AcsWjR3wlCWxxiK5PwNJwJrlhh1n
23
+ reS1FKN0H36D4lFQpkeLWQOe4Sx7gKNeKzlr0w6Fx3Uwku0+Gju2tdTdAey8jB6l
24
+ 08opAoGAEe1AuR/OFp2xw6V8TH9UHkkpGxy+OrXI6PX6tgk29PgB+uiMu4RwbjVz
25
+ 1di1KKq2XecAilVbnyqY+edADxYGbSnci9x5wQRIebfMi3VXKtV8NQBv2as6qwtW
26
+ JDcQUWotOHjpdvmfJWWkcBhbAKrgX8ukww00ZI/lC3/rmkGnBBg=
27
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1,67 @@
1
+ #!/usr/bin/env bash
2
+ #
3
+ # Shared cleanup routines between different steps
4
+ #
5
+ # Please source .ci/functions/imports.sh as a whole not just this file
6
+ #
7
+ # Version 1.0.0
8
+ # - Initial version after refactor
9
+
10
+ function cleanup_volume {
11
+ if [[ "$(docker volume ls -q -f name=$1)" ]]; then
12
+ echo -e "\033[34;1mINFO:\033[0m Removing volume $1\033[0m"
13
+ (docker volume rm "$1") || true
14
+ fi
15
+ }
16
+ function container_running {
17
+ if [[ "$(docker ps -q -f name=$1)" ]]; then
18
+ return 0;
19
+ else return 1;
20
+ fi
21
+ }
22
+ function cleanup_node {
23
+ if container_running "$1"; then
24
+ echo -e "\033[34;1mINFO:\033[0m Removing container $1\033[0m"
25
+ (docker container rm --force --volumes "$1") || true
26
+ fi
27
+ if [[ -n "$1" ]]; then
28
+ echo -e "\033[34;1mINFO:\033[0m Removing volume $1-${suffix}-data\033[0m"
29
+ cleanup_volume "$1-${suffix}-data"
30
+ fi
31
+ }
32
+ function cleanup_network {
33
+ if [[ "$(docker network ls -q -f name=$1)" ]]; then
34
+ echo -e "\033[34;1mINFO:\033[0m Removing network $1\033[0m"
35
+ (docker network rm "$1") || true
36
+ fi
37
+ }
38
+
39
+ function cleanup_trap {
40
+ status=$?
41
+ set +x
42
+ if [[ "$DETACH" != "true" ]]; then
43
+ echo -e "\033[34;1mINFO:\033[0m clean the network if not detached (start and exit)\033[0m"
44
+ cleanup_all_in_network "$1"
45
+ fi
46
+ # status is 0 or SIGINT
47
+ if [[ "$status" == "0" || "$status" == "130" ]]; then
48
+ echo -e "\n\033[32;1mSUCCESS run-tests\033[0m"
49
+ exit 0
50
+ else
51
+ echo -e "\n\033[31;1mFAILURE during run-tests\033[0m"
52
+ exit ${status}
53
+ fi
54
+ };
55
+ function cleanup_all_in_network {
56
+
57
+ if [[ -z "$(docker network ls -q -f name="^$1\$")" ]]; then
58
+ echo -e "\033[34;1mINFO:\033[0m $1 is already deleted\033[0m"
59
+ return 0
60
+ fi
61
+ containers=$(docker network inspect -f '{{ range $key, $value := .Containers }}{{ printf "%s\n" .Name}}{{ end }}' $1)
62
+ while read -r container; do
63
+ cleanup_node "$container"
64
+ done <<< "$containers"
65
+ cleanup_network $1
66
+ echo -e "\033[32;1mSUCCESS:\033[0m Cleaned up and exiting\033[0m"
67
+ };
@@ -0,0 +1,60 @@
1
+ #!/usr/bin/env bash
2
+ #
3
+ # Sets up all the common variables and imports relevant functions
4
+ #
5
+ # Version 1.0.1
6
+ # - Initial version after refactor
7
+ # - Validate STACK_VERSION asap
8
+
9
+ function require_stack_version() {
10
+ if [[ -z $STACK_VERSION ]]; then
11
+ echo -e "\033[31;1mERROR:\033[0m Required environment variable [STACK_VERSION] not set\033[0m"
12
+ exit 1
13
+ fi
14
+ }
15
+
16
+ require_stack_version
17
+
18
+ if [[ -z $es_node_name ]]; then
19
+ # only set these once
20
+ set -euo pipefail
21
+ export TEST_SUITE=${TEST_SUITE-free}
22
+ export SERVICE=${SERVICE-}
23
+ export RUNSCRIPTS=${RUNSCRIPTS-}
24
+ export DETACH=${DETACH-false}
25
+ export CLEANUP=${CLEANUP-false}
26
+
27
+ export es_node_name=instance
28
+ export elastic_password=changeme
29
+ export elasticsearch_image=elasticsearch
30
+ export elasticsearch_url=https://elastic:${elastic_password}@${es_node_name}:9200
31
+ if [[ $TEST_SUITE != "platinum" ]]; then
32
+ export elasticsearch_url=http://${es_node_name}:9200
33
+ fi
34
+ export external_elasticsearch_url=${elasticsearch_url/$es_node_name/localhost}
35
+ export elasticsearch_container="${elasticsearch_image}:${STACK_VERSION}"
36
+
37
+ export suffix=rest-test
38
+ export moniker=$(echo "$elasticsearch_container" | tr -C "[:alnum:]" '-')
39
+ export network_name=${moniker}${suffix}
40
+
41
+ export ssl_cert="${script_path}/certs/testnode.crt"
42
+ export ssl_key="${script_path}/certs/testnode.key"
43
+ export ssl_ca="${script_path}/certs/ca.crt"
44
+
45
+ fi
46
+
47
+ export script_path=$(dirname $(realpath -s $0))
48
+ source $script_path/functions/cleanup.sh
49
+ source $script_path/functions/wait-for-container.sh
50
+ trap "cleanup_trap ${network_name}" EXIT
51
+
52
+
53
+ if [[ "$CLEANUP" == "true" ]]; then
54
+ cleanup_all_in_network $network_name
55
+ exit 0
56
+ fi
57
+
58
+ echo -e "\033[34;1mINFO:\033[0m Creating network $network_name if it does not exist already \033[0m"
59
+ docker network inspect "$network_name" > /dev/null 2>&1 || docker network create "$network_name"
60
+
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env bash
2
+ #
3
+ # Exposes a routine scripts can call to wait for a container if that container set up a health command
4
+ #
5
+ # Please source .ci/functions/imports.sh as a whole not just this file
6
+ #
7
+ # Version 1.0.1
8
+ # - Initial version after refactor
9
+ # - Make sure wait_for_contiainer is silent
10
+
11
+ function wait_for_container {
12
+ set +x
13
+ until ! container_running "$1" || (container_running "$1" && [[ "$(docker inspect -f "{{.State.Health.Status}}" ${1})" != "starting" ]]); do
14
+ echo ""
15
+ docker inspect -f "{{range .State.Health.Log}}{{.Output}}{{end}}" ${1}
16
+ echo -e "\033[34;1mINFO:\033[0m waiting for node $1 to be up\033[0m"
17
+ sleep 20;
18
+ done;
19
+
20
+ # Always show logs if the container is running, this is very useful both on CI as well as while developing
21
+ if container_running $1; then
22
+ docker logs $1
23
+ fi
24
+
25
+ if ! container_running $1 || [[ "$(docker inspect -f "{{.State.Health.Status}}" ${1})" != "healthy" ]]; then
26
+ cleanup_all_in_network $2
27
+ echo
28
+ echo -e "\033[31;1mERROR:\033[0m Failed to start $1 in detached mode beyond health checks\033[0m"
29
+ echo -e "\033[31;1mERROR:\033[0m dumped the docker log before shutting the node down\033[0m"
30
+ return 1
31
+ else
32
+ echo
33
+ echo -e "\033[32;1mSUCCESS:\033[0m Detached and healthy: ${1} on docker network: ${network_name}\033[0m"
34
+ return 0
35
+ fi
36
+ }
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env bash
2
+ #
3
+ # This script is intended to be run after the build in a Buildkite pipeline
4
+ echo "--- Test summary"
5
+ buildkite-agent artifact download "tmp/*.html" .
6
+
7
+ files="tmp/*.html"
8
+ for f in $files; do
9
+ SERVICE=`echo $f | grep -o "\(appsearch\|enterprisesearch\|workplacesearch\)"`
10
+ RUBY_VERSION=`echo $f | grep -Po "(\d+\.)+\d+"`
11
+ EXAMPLES=`cat $f | grep -o "[0-9]\+ example" | tail -1`
12
+ FAILURES=`cat $f | grep -o "[0-9]\+ failure" | tail -1`
13
+ PENDING=`cat $f | grep -o "[0-9]\+ pending" | tail -1`
14
+ echo "--- :rspec: $EXAMPLES - :x: $FAILURES - :pinched_fingers: $PENDING :test_tube: $SERVICE :ruby: $RUBY_VERSION"
15
+ done
@@ -0,0 +1,25 @@
1
+ steps:
2
+ - label: ":elastic-enterprise-search: Enterprise Search :rspec: {{ matrix.service }} :ruby: v{{ matrix.ruby }}"
3
+ agents:
4
+ provider: "gcp"
5
+ env:
6
+ RUBY_VERSION: "{{ matrix.ruby }}"
7
+ SERVICE: "{{ matrix.service }}"
8
+ STACK_VERSION: 8.6-SNAPSHOT
9
+ matrix:
10
+ setup:
11
+ ruby:
12
+ - "3.2"
13
+ - "3.1"
14
+ - "3.0"
15
+ - "2.7"
16
+ service:
17
+ - enterprisesearch
18
+ - appsearch
19
+ - workplacesearch
20
+ command: ./.buildkite/run-tests.sh
21
+ artifact_paths: "tmp/*"
22
+ - wait: ~
23
+ continue_on_failure: true
24
+ - label: "Log Results"
25
+ command: ./.buildkite/log-results.sh
@@ -0,0 +1,35 @@
1
+ #!/usr/bin/env bash
2
+ #
3
+ # Once called Elasticsearch and Enteprise Search should be up and running
4
+ #
5
+ script_path=$(dirname $(realpath -s $0))
6
+ source $script_path/functions/imports.sh
7
+ set -euo pipefail
8
+
9
+ export RUBY_VERSION=${RUBY_VERSION:-3.1}
10
+
11
+ echo "--- Pinging Elasticsearch :elasticsearch:"
12
+ curl --insecure --fail $external_elasticsearch_url/_cluster/health?pretty
13
+
14
+ enterprise_search_url="http://localhost:3002"
15
+ echo "--- Pinging Enterprise Search :elastic-enterprise-search:"
16
+ curl -I --fail $enterprise_search_url
17
+
18
+ echo "--- :ruby: Building Docker image"
19
+ docker build \
20
+ --file $script_path/Dockerfile \
21
+ --tag elastic/enterprise-search-ruby \
22
+ --build-arg RUBY_VERSION=${RUBY_VERSION} \
23
+ .
24
+
25
+ echo "--- :ruby: Running $SERVICE tests"
26
+ docker run \
27
+ --network ${network_name} \
28
+ --name enterprise-search-ruby \
29
+ --env "ELASTIC_ENTERPRISE_HOST=http://${CONTAINER_NAME}:3002" \
30
+ --env "SERVICE=${SERVICE}" \
31
+ --rm \
32
+ --volume `pwd`:/code/enterprise-search-ruby \
33
+ elastic/enterprise-search-ruby \
34
+ rake spec:integration:${SERVICE}
35
+
@@ -0,0 +1,150 @@
1
+ #!/usr/bin/env bash
2
+ #
3
+ # Launch one or more Elasticsearch nodes via the Docker image,
4
+ # to form a cluster suitable for running the REST API tests.
5
+ #
6
+ # Export the STACK_VERSION variable, eg. '8.0.0-SNAPSHOT'.
7
+ # Export the TEST_SUITE variable, eg. 'free' or 'platinum' defaults to 'free'.
8
+ # Export the NUMBER_OF_NODES variable to start more than 1 node
9
+
10
+ # Version 1.6.1
11
+ # - Initial version of the run-elasticsearch.sh script
12
+ # - Deleting the volume should not dependent on the container still running
13
+ # - Fixed `ES_JAVA_OPTS` config
14
+ # - Moved to STACK_VERSION and TEST_VERSION
15
+ # - Refactored into functions and imports
16
+ # - Support NUMBER_OF_NODES
17
+ # - Added 5 retries on docker pull for fixing transient network errors
18
+ # - Added flags to make local CCR configurations work
19
+ # - Added action.destructive_requires_name=false as the default will be true in v8
20
+ # - Added ingest.geoip.downloader.enabled=false as it causes false positives in testing
21
+ # - Moved ELASTIC_PASSWORD and xpack.security.enabled to the base arguments for "Security On by default"
22
+ # - Use https only when TEST_SUITE is "platinum", when "free" use http
23
+ # - Set xpack.security.enabled=false for "free" and xpack.security.enabled=true for "platinum"
24
+
25
+ script_path=$(dirname $(realpath -s $0))
26
+ source $script_path/functions/imports.sh
27
+ set -euo pipefail
28
+
29
+ echo -e "\033[34;1mINFO:\033[0m Take down node if called twice with the same arguments (DETACH=true) or on seperate terminals \033[0m"
30
+ cleanup_node $es_node_name
31
+
32
+ master_node_name=${es_node_name}
33
+ cluster_name=${moniker}${suffix}
34
+
35
+ declare -a volumes
36
+ environment=($(cat <<-END
37
+ --env ELASTIC_PASSWORD=$elastic_password
38
+ --env node.name=$es_node_name
39
+ --env cluster.name=$cluster_name
40
+ --env cluster.initial_master_nodes=$master_node_name
41
+ --env discovery.seed_hosts=$master_node_name
42
+ --env cluster.routing.allocation.disk.threshold_enabled=false
43
+ --env bootstrap.memory_lock=true
44
+ --env node.attr.testattr=test
45
+ --env path.repo=/tmp
46
+ --env repositories.url.allowed_urls=http://snapshot.test*
47
+ --env action.destructive_requires_name=false
48
+ --env ingest.geoip.downloader.enabled=false
49
+ --env cluster.deprecation_indexing.enabled=false
50
+ END
51
+ ))
52
+ if [[ "$TEST_SUITE" == "platinum" ]]; then
53
+ environment+=($(cat <<-END
54
+ --env xpack.security.enabled=true
55
+ --env xpack.license.self_generated.type=trial
56
+ --env xpack.security.http.ssl.enabled=true
57
+ --env xpack.security.http.ssl.verification_mode=certificate
58
+ --env xpack.security.http.ssl.key=certs/testnode.key
59
+ --env xpack.security.http.ssl.certificate=certs/testnode.crt
60
+ --env xpack.security.http.ssl.certificate_authorities=certs/ca.crt
61
+ --env xpack.security.transport.ssl.enabled=true
62
+ --env xpack.security.transport.ssl.verification_mode=certificate
63
+ --env xpack.security.transport.ssl.key=certs/testnode.key
64
+ --env xpack.security.transport.ssl.certificate=certs/testnode.crt
65
+ --env xpack.security.transport.ssl.certificate_authorities=certs/ca.crt
66
+ END
67
+ ))
68
+ volumes+=($(cat <<-END
69
+ --volume $ssl_cert:/usr/share/elasticsearch/config/certs/testnode.crt
70
+ --volume $ssl_key:/usr/share/elasticsearch/config/certs/testnode.key
71
+ --volume $ssl_ca:/usr/share/elasticsearch/config/certs/ca.crt
72
+ END
73
+ ))
74
+ else
75
+ environment+=($(cat <<-END
76
+ --env node.roles=data,data_cold,data_content,data_frozen,data_hot,data_warm,ingest,master,ml,remote_cluster_client,transform
77
+ --env xpack.security.enabled=false
78
+ --env xpack.security.http.ssl.enabled=false
79
+ END
80
+ ))
81
+ fi
82
+
83
+ cert_validation_flags=""
84
+ if [[ "$TEST_SUITE" == "platinum" ]]; then
85
+ cert_validation_flags="--insecure --cacert /usr/share/elasticsearch/config/certs/ca.crt --resolve ${es_node_name}:443:127.0.0.1"
86
+ fi
87
+
88
+ echo "--- :elasticsearch: Environment setup"
89
+ echo "TEST_SUITE: $TEST_SUITE"
90
+ echo "Elasticsearch URL: $elasticsearch_url"
91
+ echo "Elasticsearch External URL: $external_elasticsearch_url"
92
+
93
+
94
+ echo "--- :elasticsearch: Running container"
95
+ # Pull the container, retry on failures up to 5 times with
96
+ # short delays between each attempt. Fixes most transient network errors.
97
+ docker_pull_attempts=0
98
+ until [ "$docker_pull_attempts" -ge 5 ]
99
+ do
100
+ docker pull docker.elastic.co/elasticsearch/"$elasticsearch_container" && break
101
+ docker_pull_attempts=$((docker_pull_attempts+1))
102
+ echo "Failed to pull image, retrying in 10 seconds (retry $docker_pull_attempts/5)..."
103
+ sleep 10
104
+ done
105
+
106
+ NUMBER_OF_NODES=${NUMBER_OF_NODES-1}
107
+ http_port=9200
108
+ for (( i=0; i<$NUMBER_OF_NODES; i++, http_port++ )); do
109
+ node_name=${es_node_name}$i
110
+ node_url=${external_elasticsearch_url/9200/${http_port}}$i
111
+ if [[ "$i" == "0" ]]; then node_name=$es_node_name; fi
112
+ environment+=($(cat <<-END
113
+ --env node.name=$node_name
114
+ END
115
+ ))
116
+ echo "$i: $http_port $node_url "
117
+ volume_name=${node_name}-${suffix}-data
118
+ volumes+=($(cat <<-END
119
+ --volume $volume_name:/usr/share/elasticsearch/data${i}
120
+ END
121
+ ))
122
+
123
+ # make sure we detach for all but the last node if DETACH=false (default) so all nodes are started
124
+ local_detach="true"
125
+ if [[ "$i" == "$((NUMBER_OF_NODES-1))" ]]; then local_detach=$DETACH; fi
126
+ echo -e "\033[34;1mINFO:\033[0m Starting container $node_name \033[0m"
127
+ set -x
128
+ docker run \
129
+ --name "$node_name" \
130
+ --network "$network_name" \
131
+ --env "ES_JAVA_OPTS=-Xms1g -Xmx1g -da:org.elasticsearch.xpack.ccr.index.engine.FollowingEngineAssertions" \
132
+ "${environment[@]}" \
133
+ "${volumes[@]}" \
134
+ --publish "$http_port":9200 \
135
+ --ulimit nofile=65536:65536 \
136
+ --ulimit memlock=-1:-1 \
137
+ --detach="$local_detach" \
138
+ --health-cmd="curl $cert_validation_flags --fail $elasticsearch_url/_cluster/health || exit 1" \
139
+ --health-interval=2s \
140
+ --health-retries=20 \
141
+ --health-timeout=2s \
142
+ --rm \
143
+ docker.elastic.co/elasticsearch/"$elasticsearch_container";
144
+
145
+ set +x
146
+ if wait_for_container "$es_node_name" "$network_name"; then
147
+ echo -e "\033[32;1mSUCCESS:\033[0m Running on: $node_url\033[0m"
148
+ fi
149
+
150
+ done