elastic-enterprise-search 8.5.0 → 8.6.0

Sign up to get free protection for your applications and to get access to all the features.
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