elastic-enterprise-search 8.5.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 370baa568c7b78d3fa58a0c322732c106163b3f91845841287b968966ca70717
4
- data.tar.gz: 76108e767bc9e72f6ca6c981629f69a8c9e99106b07dc460761aaf089be4c86a
3
+ metadata.gz: 39e7df6602a80c776dda6da6ca3bc760170d0f7cee394e5e9ab805093851f054
4
+ data.tar.gz: 06be17689a9957f56f41a5547f1a475d30b6f7ae2db0771b3a9becd5f1cdb9b2
5
5
  SHA512:
6
- metadata.gz: 17ebc4758f08ae8a5e198d02fa45016525f080d8cc357b9a3b5ad82b2b208c89e5534e05f61e784cccc4ab4b9d30c79e6737845f52cd25bc1741ceff95bc893e
7
- data.tar.gz: 0252bf54a1828983f1a8daac3ae4fb123a814aaa4f9d195df7284cea265542cb370242c71dd5fb9c2832f81650e5b17f3b58da8ae585fc08e5e7aff03881b7a3
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
@@ -0,0 +1,72 @@
1
+ #!/usr/bin/env bash
2
+ #
3
+ # Launch one App Search node 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
+
8
+ # Version 1.1.0
9
+ # - Initial version of the run-app-search.sh script
10
+ # - Refactored .ci version
11
+
12
+ script_path=$(dirname $(realpath -s $0))
13
+ source $script_path/functions/imports.sh
14
+ set -euo pipefail
15
+
16
+ CONTAINER_NAME=${CONTAINER_NAME-enterprise-search}
17
+ APP_SEARCH_SECRET_SESSION_KEY=${APP_SEARCH_SECRET_SESSION_KEY-int_test_secret}
18
+
19
+ 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"
20
+ cleanup_node $CONTAINER_NAME
21
+
22
+ http_port=3002
23
+ url=http://127.0.0.1:${http_port}
24
+
25
+ # Pull the container, retry on failures up to 5 times with
26
+ # short delays between each attempt. Fixes most transient network errors.
27
+ docker_pull_attempts=0
28
+ until [ "$docker_pull_attempts" -ge 5 ]
29
+ do
30
+ docker pull docker.elastic.co/enterprise-search/enterprise-search:"$STACK_VERSION" && break
31
+ docker_pull_attempts=$((docker_pull_attempts+1))
32
+ echo "Failed to pull image, retrying in 10 seconds (retry $docker_pull_attempts/5)..."
33
+ sleep 10
34
+ done
35
+
36
+ echo -e "\033[34;1mINFO:\033[0m Starting container $CONTAINER_NAME \033[0m"
37
+ set -x
38
+ docker run \
39
+ --name "$CONTAINER_NAME" \
40
+ --network "$network_name" \
41
+ --env "elasticsearch.host=$elasticsearch_url" \
42
+ --env "elasticsearch.username=elastic" \
43
+ --env "elasticsearch.password=$elastic_password" \
44
+ --env "ENT_SEARCH_DEFAULT_PASSWORD=$elastic_password" \
45
+ --env "secret_management.encryption_keys=[$APP_SEARCH_SECRET_SESSION_KEY]" \
46
+ --env "enterprise_search.listen_port=$http_port" \
47
+ --env "log_level=info" \
48
+ --env "hide_version_info=false" \
49
+ --env "worker.threads=2" \
50
+ --env "allow_es_settings_modification=true" \
51
+ --env "JAVA_OPTS=-Xms1g -Xmx2g" \
52
+ --env "elasticsearch.ssl.enabled=true" \
53
+ --env "elasticsearch.ssl.verify=true" \
54
+ --env "elasticsearch.ssl.certificate=/usr/share/app-search/config/certs/testnode.crt" \
55
+ --env "elasticsearch.ssl.certificate_authority=/usr/share/app-search/config/certs/ca.crt" \
56
+ --env "elasticsearch.ssl.key=/usr/share/app-search/config/certs/testnode.key" \
57
+ --env "ELASTICSEARCH_SEARCH_API=true" \
58
+ --volume $ssl_cert:/usr/share/app-search/config/certs/testnode.crt \
59
+ --volume $ssl_key:/usr/share/app-search/config/certs/testnode.key \
60
+ --volume $ssl_ca:/usr/share/app-search/config/certs/ca.crt \
61
+ --publish "$http_port":3002 \
62
+ --detach="$DETACH" \
63
+ --health-cmd="curl --insecure --fail ${url} || exit 1" \
64
+ --health-interval=30s \
65
+ --health-retries=50 \
66
+ --health-timeout=10s \
67
+ --rm \
68
+ docker.elastic.co/enterprise-search/enterprise-search:"$STACK_VERSION";
69
+
70
+ if wait_for_container "$CONTAINER_NAME" "$network_name"; then
71
+ echo -e "\033[32;1mSUCCESS:\033[0m Running on: ${url}\033[0m"
72
+ fi
@@ -0,0 +1,24 @@
1
+ #!/usr/bin/env bash
2
+ #
3
+ # Script to run Enterprise Search container and Enterprise Search client integration tests on Buildkite
4
+ #
5
+ # Version 0.1
6
+ #
7
+ export TEST_SUITE=platinum
8
+ export CONTAINER_NAME=enterprise-search
9
+
10
+ script_path=$(dirname $(realpath -s $0))
11
+ source $script_path/functions/imports.sh
12
+ set -euo pipefail
13
+
14
+ echo "--- Create the elastic network"
15
+ docker network create elastic
16
+
17
+ echo "--- :elasticsearch: Starting Elasticsearch"
18
+ DETACH=true bash $script_path/run-elasticsearch.sh
19
+
20
+ echo "--- :elastic-enterprise-search: Starting Enterprise Search"
21
+ DETACH=true bash $script_path/run-enterprise-search.sh
22
+
23
+ echo "+++ :ruby: Run Client"
24
+ bash $script_path/run-client.sh
data/.ci/.env ADDED
@@ -0,0 +1,9 @@
1
+ ELASTIC_PASSWORD=changeme
2
+ KIBANA_PASSWORD=changeme
3
+ ES_PORT=9200
4
+ CLUSTER_NAME=es-cluster
5
+ LICENSE=trial
6
+ MEM_LIMIT=1073741824
7
+ KIBANA_PORT=5601
8
+ ENTERPRISE_SEARCH_PORT=3002
9
+ ENCRYPTION_KEYS=secret
@@ -0,0 +1,166 @@
1
+
2
+ version: "2.2"
3
+
4
+ services:
5
+ setup:
6
+ image: docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION}
7
+ volumes:
8
+ - certs:/usr/share/elasticsearch/config/certs
9
+ user: "0"
10
+ command: >
11
+ bash -c '
12
+ if [ x${ELASTIC_PASSWORD} == x ]; then
13
+ echo "Set the ELASTIC_PASSWORD environment variable in the .env file";
14
+ exit 1;
15
+ elif [ x${KIBANA_PASSWORD} == x ]; then
16
+ echo "Set the KIBANA_PASSWORD environment variable in the .env file";
17
+ exit 1;
18
+ fi;
19
+ if [ ! -f certs/ca.zip ]; then
20
+ echo "Creating CA";
21
+ bin/elasticsearch-certutil ca --silent --pem -out config/certs/ca.zip;
22
+ unzip config/certs/ca.zip -d config/certs;
23
+ fi;
24
+ if [ ! -f certs/certs.zip ]; then
25
+ echo "Creating certs";
26
+ echo -ne \
27
+ "instances:\n"\
28
+ " - name: es01\n"\
29
+ " dns:\n"\
30
+ " - es01\n"\
31
+ " - localhost\n"\
32
+ " ip:\n"\
33
+ " - 127.0.0.1\n"\
34
+ > config/certs/instances.yml;
35
+ bin/elasticsearch-certutil cert --silent --pem -out config/certs/certs.zip --in config/certs/instances.yml --ca-cert config/certs/ca/ca.crt --ca-key config/certs/ca/ca.key;
36
+ unzip config/certs/certs.zip -d config/certs;
37
+ fi;
38
+ echo "Setting file permissions"
39
+ chown -R root:root config/certs;
40
+ find . -type d -exec chmod 750 \{\} \;;
41
+ find . -type f -exec chmod 640 \{\} \;;
42
+ echo "Waiting for Elasticsearch availability";
43
+ until curl -s --cacert config/certs/ca/ca.crt https://es01:9200 | grep -q "missing authentication credentials"; do sleep 30; done;
44
+ echo "Setting kibana_system password";
45
+ until curl -s -X POST --cacert config/certs/ca/ca.crt -u elastic:${ELASTIC_PASSWORD} -H "Content-Type: application/json" https://es01:9200/_security/user/kibana_system/_password -d "{\"password\":\"${KIBANA_PASSWORD}\"}" | grep -q "^{}"; do sleep 10; done;
46
+ echo "All done!";
47
+ '
48
+ healthcheck:
49
+ test: ["CMD-SHELL", "[ -f config/certs/es01/es01.crt ]"]
50
+ interval: 1s
51
+ timeout: 5s
52
+ retries: 120
53
+
54
+ es01:
55
+ depends_on:
56
+ setup:
57
+ condition: service_healthy
58
+ image: docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION}
59
+ volumes:
60
+ - certs:/usr/share/elasticsearch/config/certs
61
+ - esdata01:/usr/share/elasticsearch/data
62
+ ports:
63
+ - ${ES_PORT}:9200
64
+ environment:
65
+ - node.name=es01
66
+ - cluster.name=${CLUSTER_NAME}
67
+ - cluster.initial_master_nodes=es01
68
+ - ELASTIC_PASSWORD=${ELASTIC_PASSWORD}
69
+ - bootstrap.memory_lock=true
70
+ - xpack.security.enabled=true
71
+ - xpack.security.http.ssl.enabled=true
72
+ - xpack.security.http.ssl.key=certs/es01/es01.key
73
+ - xpack.security.http.ssl.certificate=certs/es01/es01.crt
74
+ - xpack.security.http.ssl.certificate_authorities=certs/ca/ca.crt
75
+ - xpack.security.http.ssl.verification_mode=certificate
76
+ - xpack.security.transport.ssl.enabled=true
77
+ - xpack.security.transport.ssl.key=certs/es01/es01.key
78
+ - xpack.security.transport.ssl.certificate=certs/es01/es01.crt
79
+ - xpack.security.transport.ssl.certificate_authorities=certs/ca/ca.crt
80
+ - xpack.security.transport.ssl.verification_mode=certificate
81
+ - xpack.license.self_generated.type=trial
82
+ mem_limit: ${MEM_LIMIT}
83
+ ulimits:
84
+ memlock:
85
+ soft: -1
86
+ hard: -1
87
+ healthcheck:
88
+ test:
89
+ [
90
+ "CMD-SHELL",
91
+ "curl -s --cacert config/certs/ca/ca.crt https://localhost:9200 | grep -q 'missing authentication credentials'",
92
+ ]
93
+ interval: 10s
94
+ timeout: 10s
95
+ retries: 120
96
+
97
+ kibana:
98
+ depends_on:
99
+ es01:
100
+ condition: service_healthy
101
+ image: docker.elastic.co/kibana/kibana:${STACK_VERSION}
102
+ volumes:
103
+ - certs:/usr/share/kibana/config/certs
104
+ - kibanadata:/usr/share/kibana/data
105
+ ports:
106
+ - ${KIBANA_PORT}:5601
107
+ environment:
108
+ - SERVERNAME=kibana
109
+ - ELASTICSEARCH_HOSTS=https://es01:9200
110
+ - ELASTICSEARCH_USERNAME=kibana_system
111
+ - ELASTICSEARCH_PASSWORD=${KIBANA_PASSWORD}
112
+ - ELASTICSEARCH_SSL_CERTIFICATEAUTHORITIES=config/certs/ca/ca.crt
113
+ - ENTERPRISESEARCH_HOST=http://enterprisesearch:${ENTERPRISE_SEARCH_PORT}
114
+ mem_limit: ${MEM_LIMIT}
115
+ healthcheck:
116
+ test:
117
+ [
118
+ "CMD-SHELL",
119
+ "curl -s -I http://localhost:5601 | grep -q 'HTTP/1.1 302 Found'",
120
+ ]
121
+ interval: 10s
122
+ timeout: 10s
123
+ retries: 120
124
+
125
+ enterprisesearch:
126
+ depends_on:
127
+ es01:
128
+ condition: service_healthy
129
+ kibana:
130
+ condition: service_healthy
131
+ image: docker.elastic.co/enterprise-search/enterprise-search:${STACK_VERSION}
132
+ volumes:
133
+ - certs:/usr/share/enterprise-search/config/certs
134
+ - enterprisesearchdata:/usr/share/enterprise-search/config
135
+ ports:
136
+ - ${ENTERPRISE_SEARCH_PORT}:3002
137
+ environment:
138
+ - SERVERNAME=enterprisesearch
139
+ - secret_management.encryption_keys=[${ENCRYPTION_KEYS}]
140
+ - allow_es_settings_modification=true
141
+ - elasticsearch.host=https://es01:9200
142
+ - elasticsearch.username=elastic
143
+ - elasticsearch.password=${ELASTIC_PASSWORD}
144
+ - elasticsearch.ssl.enabled=true
145
+ - elasticsearch.ssl.certificate_authority=/usr/share/enterprise-search/config/certs/ca/ca.crt
146
+ - kibana.external_url=http://kibana:5601
147
+ mem_limit: ${MEM_LIMIT}
148
+ healthcheck:
149
+ test:
150
+ [
151
+ "CMD-SHELL",
152
+ "curl -s -I http://localhost:3002 | grep -q 'HTTP/1.1 302 Found'",
153
+ ]
154
+ interval: 10s
155
+ timeout: 10s
156
+ retries: 120
157
+
158
+ volumes:
159
+ certs:
160
+ driver: local
161
+ enterprisesearchdata:
162
+ driver: local
163
+ esdata01:
164
+ driver: local
165
+ kibanadata:
166
+ driver: local
@@ -1,12 +1,12 @@
1
1
  ---
2
2
  - job:
3
- name: elastic+enterprise-search-ruby+8.2
4
- display-name: 'elastic / enterprise-search-ruby # 8.2'
5
- description: Testing the enterprise-search-ruby 8.2 branch.
3
+ name: elastic+enterprise-search-ruby+8.5
4
+ display-name: 'elastic / enterprise-search-ruby # 8.5'
5
+ description: Testing the enterprise-search-ruby 8.5 branch.
6
6
  junit_results: "*-junit.xml"
7
7
  parameters:
8
8
  - string:
9
9
  name: branch_specifier
10
- default: refs/heads/8.2
10
+ default: refs/heads/8.5
11
11
  description: the Git branch specifier to build (&lt;branchName&gt;, &lt;tagName&gt;,
12
12
  &lt;commitId&gt;, etc.)
data/.ci/run-kibana.sh ADDED
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/env bash
2
+
3
+ script_path=$(dirname $(realpath -s $0))
4
+ source $script_path/functions/imports.sh
5
+ set -euo pipefail
6
+
7
+ docker run \
8
+ --name "kibana" \
9
+ --network "$network_name" \
10
+ --publish "5601:5601" \
11
+ --interactive \
12
+ --tty \
13
+ --rm \
14
+ --env "ENTERPRISESEARCH_HOST=http://localhost:3002" \
15
+ "docker.elastic.co/kibana/kibana:${STACK_VERSION}"
16
+
17
+ # --volume $ssl_ca:/usr/share/elasticsearch/config/certs/ca.crt \
18
+
19
+ # --env "ELASTICSEARCH_HOSTS=${elasticsearch_url}" \
20
+ # --env "ELASTICSEARCH_USERNAME=enterprise_search" \
21
+ # --env "ELASTICSEARCH_PASSWORD=${elastic_password}" \
22
+ # --env "ELASTICSEARCH_SSL_CERTIFICATEAUTHORITIES=${ssl_ca}" \
data/.ci/run-stack.sh ADDED
@@ -0,0 +1 @@
1
+ STACK_VERSION=${STACK_VERSION} docker-compose up --remove-orphans
data/.ci/test-matrix.yml CHANGED
@@ -5,7 +5,7 @@ RUBY_VERSION:
5
5
  - 2.7
6
6
 
7
7
  STACK_VERSION:
8
- - 8.5.0-SNAPSHOT
8
+ - 8.6-SNAPSHOT
9
9
 
10
10
  SERVICE:
11
11
  - appsearch
@@ -27,7 +27,7 @@ jobs:
27
27
  strategy:
28
28
  fail-fast: false
29
29
  matrix:
30
- ruby: [ jruby-9.3 ]
30
+ ruby: [ jruby-9.3, jruby-9.4 ]
31
31
  runs-on: ubuntu-latest
32
32
  steps:
33
33
  - uses: actions/checkout@v2
data/.gitignore CHANGED
@@ -11,4 +11,5 @@ doc
11
11
  .#*
12
12
  *junit.xml
13
13
  .byebug_history
14
- coverage
14
+ coverage
15
+ tmp
data/README.md CHANGED
@@ -20,7 +20,7 @@ Or add it to your project's Gemfile:
20
20
  gem 'elastic-enterprise-search', 'VERSION'
21
21
  ```
22
22
 
23
- The Enterprise Search client is implemented with [`elastic-transport`](https://github.com/elastic/elastic-transport-ruby/) as the HTTP layer, which uses [Faraday](https://rubygems.org/gems/faraday). Faraday supports several [adapters](https://lostisland.github.io/faraday/adapters/) and will use `Net::HTTP` by default. For optimal performance with the Enterprise Search API, we suggest using an HTTP library which supports persistent ("keep-alive") connections. For the standard Ruby implementation, this could be https://github.com/drbrain/net-http-persistent[Net::HTTP::Persistent], [patron](https://github.com/toland/patron) or [Typhoeus](https://github.com/typhoeus/typhoeus). For JRuby, [Manticore](https://github.com/cheald/manticore) is a great option as well. Require the library for the adapter in your code and then pass in the `:adapter` parameter to the client when you initialize it:
23
+ The Enterprise Search client is implemented with [`elastic-transport`](https://github.com/elastic/elastic-transport-ruby/) as the HTTP layer, which uses [Faraday](https://rubygems.org/gems/faraday). Faraday supports several [adapters](https://lostisland.github.io/faraday/adapters/) and will use `Net::HTTP` by default. For optimal performance with the Enterprise Search API, we suggest using an HTTP library which supports persistent ("keep-alive") connections. For the standard Ruby implementation, this could be [Net::HTTP::Persistent](https://github.com/drbrain/net-http-persistent), [patron](https://github.com/toland/patron) or [Typhoeus](https://github.com/typhoeus/typhoeus). For JRuby, [Manticore](https://github.com/cheald/manticore) is a great option as well. Require the library for the adapter in your code and then pass in the `:adapter` parameter to the client when you initialize it:
24
24
 
25
25
  ```ruby
26
26
  require 'elastic-enterprise-search'
@@ -1,6 +1,18 @@
1
1
  [[release_notes_717]]
2
2
  === 7.17 Release notes
3
3
 
4
+ [discrete]
5
+ [[release_notes_7171]]
6
+ === 7.17.1 Release notes
7
+
8
+ - Updates in Documentation: CHANGELOG, CODE_OF_CONDUCT, CONTRIBUTING, NOTICE, README
9
+ - Adds the option to specify an adapter for Faraday when initializing a client. See https://github.com/elastic/enterprise-search-ruby/blob/main/README.md#elastic-enterprise-search-client[README]
10
+ - Fixes typo in meta data for CLIENT_NAME.
11
+
12
+ [discrete]
13
+ [[release_notes_7170]]
14
+ === 7.17.0 Release notes
15
+
4
16
  [discrete]
5
17
  ==== General
6
18
 
@@ -0,0 +1,9 @@
1
+ [[release_notes_86]]
2
+ === 8.6 Release notes
3
+
4
+ [discrete]
5
+ [[release_notes_860]]
6
+ === 8.6.0 Release notes
7
+
8
+ - Tested versions of Ruby for 8.6.0: Ruby (MRI) 2.7, 3.0 and 3.1, JRuby 9.3 and JRuby 9.4.
9
+ - Updated for compatibility with Elastic Enterprise Search 8.6's API.
@@ -4,6 +4,7 @@
4
4
  [discrete]
5
5
  === 8.x
6
6
 
7
+ * <<release_notes_86, 8.6.0 Release Notes>>
7
8
  * <<release_notes_85, 8.5.0 Release Notes>>
8
9
  * <<release_notes_84, 8.4.0 Release Notes>>
9
10
  * <<release_notes_83, 8.3.0 Release Notes>>
@@ -23,6 +24,7 @@
23
24
  * <<release_notes_711, 7.11.0 Release Notes>>
24
25
  * <<release_notes_710, 7.10.0.beta.1 Release Notes>>
25
26
 
27
+ include::86.asciidoc[]
26
28
  include::85.asciidoc[]
27
29
  include::84.asciidoc[]
28
30
  include::83.asciidoc[]
@@ -54,7 +54,7 @@ Gem::Specification.new do |s|
54
54
  s.add_development_dependency 'rspec', '~> 3.9.0'
55
55
  s.add_development_dependency 'rspec_junit_formatter'
56
56
  s.add_development_dependency 'rubocop', '~> 1'
57
- s.add_development_dependency 'vcr', '~> 3.0.3'
57
+ s.add_development_dependency 'vcr'
58
58
  s.add_development_dependency 'webmock'
59
59
  # Adapters
60
60
  s.add_development_dependency 'faraday-httpclient'
@@ -19,6 +19,6 @@
19
19
 
20
20
  module Elastic
21
21
  module EnterpriseSearch
22
- VERSION = '8.5.0'
22
+ VERSION = '8.6.0'
23
23
  end
24
24
  end
@@ -96,7 +96,7 @@ describe Elastic::EnterpriseSearch::Client do
96
96
  context 'meta-header' do
97
97
  let(:transport) { Elastic::EnterpriseSearch::Client.new.instance_variable_get('@transport') }
98
98
  let(:subject) { transport.transport.connections.first.connection.headers }
99
- let(:regexp) { /^[a-z]{1,}=[a-z0-9.\-]{1,}(?:,[a-z]{1,}=[a-z0-9._-]+)*$/ }
99
+ let(:regexp) { /^[a-z]{1,}=[a-z0-9.-]{1,}(?:,[a-z]{1,}=[a-z0-9._-]+)*$/ }
100
100
 
101
101
  it 'sends the correct meta header to transport' do
102
102
  expect(subject['x-elastic-client-meta']).to match(regexp)
data/spec/spec_helper.rb CHANGED
@@ -32,6 +32,10 @@ RSpec.configure do |config|
32
32
 
33
33
  config.add_formatter('documentation')
34
34
  config.add_formatter('RspecJunitFormatter', 'enterprise-search-junit.xml')
35
+ config.add_formatter(
36
+ 'RSpec::Core::Formatters::HtmlFormatter',
37
+ "tmp/enterprise-search-#{ENV['SERVICE']}-#{RUBY_VERSION}.html"
38
+ )
35
39
 
36
40
  VCR.configure do |c|
37
41
  c.cassette_library_dir = 'spec/fixtures/vcr'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elastic-enterprise-search
3
3
  version: !ruby/object:Gem::Version
4
- version: 8.5.0
4
+ version: 8.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fernando Briano
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-11-02 00:00:00.000000000 Z
11
+ date: 2023-01-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: elastic-transport
@@ -118,16 +118,16 @@ dependencies:
118
118
  name: vcr
119
119
  requirement: !ruby/object:Gem::Requirement
120
120
  requirements:
121
- - - "~>"
121
+ - - ">="
122
122
  - !ruby/object:Gem::Version
123
- version: 3.0.3
123
+ version: '0'
124
124
  type: :development
125
125
  prerelease: false
126
126
  version_requirements: !ruby/object:Gem::Requirement
127
127
  requirements:
128
- - - "~>"
128
+ - - ">="
129
129
  - !ruby/object:Gem::Version
130
- version: 3.0.3
130
+ version: '0'
131
131
  - !ruby/object:Gem::Dependency
132
132
  name: webmock
133
133
  requirement: !ruby/object:Gem::Requirement
@@ -207,6 +207,24 @@ executables: []
207
207
  extensions: []
208
208
  extra_rdoc_files: []
209
209
  files:
210
+ - ".buildkite/Dockerfile"
211
+ - ".buildkite/certs/README.md"
212
+ - ".buildkite/certs/ca.crt"
213
+ - ".buildkite/certs/ca.key"
214
+ - ".buildkite/certs/testnode.crt"
215
+ - ".buildkite/certs/testnode.key"
216
+ - ".buildkite/certs/testnode_no_san.crt"
217
+ - ".buildkite/certs/testnode_no_san.key"
218
+ - ".buildkite/functions/cleanup.sh"
219
+ - ".buildkite/functions/imports.sh"
220
+ - ".buildkite/functions/wait-for-container.sh"
221
+ - ".buildkite/log-results.sh"
222
+ - ".buildkite/pipeline.yml"
223
+ - ".buildkite/run-client.sh"
224
+ - ".buildkite/run-elasticsearch.sh"
225
+ - ".buildkite/run-enterprise-search.sh"
226
+ - ".buildkite/run-tests.sh"
227
+ - ".ci/.env"
210
228
  - ".ci/.gitignore"
211
229
  - ".ci/Dockerfile"
212
230
  - ".ci/certs/README.md"
@@ -216,21 +234,24 @@ files:
216
234
  - ".ci/certs/testnode.key"
217
235
  - ".ci/certs/testnode_no_san.crt"
218
236
  - ".ci/certs/testnode_no_san.key"
237
+ - ".ci/docker-compose.yml"
219
238
  - ".ci/functions/cleanup.sh"
220
239
  - ".ci/functions/imports.sh"
221
240
  - ".ci/functions/wait-for-container.sh"
222
241
  - ".ci/jobs/defaults.yml"
223
242
  - ".ci/jobs/elastic+enterprise-search-ruby+7.17.yml"
224
- - ".ci/jobs/elastic+enterprise-search-ruby+8.2.yml"
225
243
  - ".ci/jobs/elastic+enterprise-search-ruby+8.3.yml"
226
244
  - ".ci/jobs/elastic+enterprise-search-ruby+8.4.yml"
245
+ - ".ci/jobs/elastic+enterprise-search-ruby+8.5.yml"
227
246
  - ".ci/jobs/elastic+enterprise-search-ruby+main.yml"
228
247
  - ".ci/jobs/elastic+enterprise-search-ruby+pull-request.yml"
229
248
  - ".ci/make.sh"
230
249
  - ".ci/run-elasticsearch.sh"
231
250
  - ".ci/run-enterprise-search.sh"
251
+ - ".ci/run-kibana.sh"
232
252
  - ".ci/run-local.sh"
233
253
  - ".ci/run-repository.sh"
254
+ - ".ci/run-stack.sh"
234
255
  - ".ci/run-tests"
235
256
  - ".ci/test-matrix.yml"
236
257
  - ".github/check_license_headers.rb"
@@ -269,6 +290,7 @@ files:
269
290
  - docs/guide/release_notes/83.asciidoc
270
291
  - docs/guide/release_notes/84.asciidoc
271
292
  - docs/guide/release_notes/85.asciidoc
293
+ - docs/guide/release_notes/86.asciidoc
272
294
  - docs/guide/release_notes/index.asciidoc
273
295
  - docs/guide/workplace-search-api.asciidoc
274
296
  - elastic-enterprise-search.gemspec