Use Docker for Elasticsearch source builds#1570
Conversation
b59ce3b to
098f006
Compare
|
@elasticmachine run rally/it-python310 |
|
So ITs pass, but the |
|
The docker build method also hangs on my Intel equipped Mac when running either ITs or |
|
@elasticmachine run rally/it-python310 |
dliappis
left a comment
There was a problem hiding this comment.
Did a first pass and left some less-important comments.
Will test it out / dig further tomorrow.
0523244 to
f201b51
Compare
|
@pquentin / @dliappis - there were enough changes that the commit history was messy so I've force pushed the branch to start 'fresh'. I had to introduce a |
dliappis
left a comment
There was a problem hiding this comment.
I left a minor comment (and we discussed offline several other small improvements that @b-deam 's been pushing).
Tested locally (on Linux) works like a charm. One gotcha is that if you already have an ES checkout in ~./rally/benchmarks/src/elasticsearch containing files/dirs with ownership different to local euid/gid, gradlew will fail within the builder container. The easiest way to troubleshoot it is to inspect ~/.rally/logs/build.log.
| image_container = self.client.containers.run( | ||
| detach=True, | ||
| name=self.image_builder_container_name, | ||
| image=self.resolve_jdk_build_container_image(self.build_jdk), |
There was a problem hiding this comment.
maybe we specify the new image name somewhere? atm it's nameless (and it helps troubleshooting)
There was a problem hiding this comment.
I tested setting the image repository and tags locally, but because we pass in an explicit image ID when running the actual builder container, the name doesn't appear in the docker ps output:
rally/esrally/mechanic/supplier.py
Line 890 in 1b3415e
With this commit we introduce a new a way to build Elasticsearch and
core plugins from source using Docker. This new method is configured via
the new CLI argument (
--source-build-method), which allows users tospecify the desired method. Currently, there are only two options,
'default', and 'docker'.
Relates #1462
Sample invocations
esrally race --revision="@2022-07-07" --track=geonames --test-mode --target-hosts=127.0.0.1:29200 --challenge=append-no-conflicts --car=4gheap,basic-license --elasticsearch-plugins= --runtime-jdk=bundled --kill-running-processes --source-build-method=dockeresrally install --revision="@2022-07-15" --node-name="rally-node-0" --network-host="127.0.0.1" --http-port=39200 --master-nodes="rally-node-0" --seed-hosts="127.0.0.1:29300" --kill-running-processes --source-build-method=dockerNote for reviewers
Apple Silicon equipped Macs can't run ITs:
FYI: The actor system is bugged on MacOS and will hang when running
esrally race --revision=..., you can work around this by commenting out line1342in.venv/lib/python3.8/site-packages/thespian/system/transport/TCPTransport.py.