Skip to content

Commit 8da61a3

Browse files
authored
[llvm][docs] Expand HowToAddABuilder with guidance on testing locally (#115024)
With <llvm/llvm-zorg#289> and <llvm/llvm-zorg#293> landed, it's now reasonable to ask people to test their builder configurations locally. This patch adds documentation on how to do so.
1 parent 24a8092 commit 8da61a3

File tree

1 file changed

+81
-0
lines changed

1 file changed

+81
-0
lines changed

llvm/docs/HowToAddABuilder.rst

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,87 @@ Here are the steps you can follow to do so:
185185
buildbot.tac file to change the port number from 9994 to 9990 and start it
186186
again.
187187

188+
Testing a Builder Config Locally
189+
================================
190+
191+
It is possible to test a builder running against a local version of LLVM's
192+
buildmaster setup. This allows you to test changes to builder, worker, and
193+
buildmaster configuration. A buildmaster launched in this "local testing" mode
194+
will:
195+
* Bind only to local interfaces.
196+
* Use SQLite as the database.
197+
* Use a single fixed password for workers.
198+
* Disable extras like GitHub authentication.
199+
200+
In order to use this "local testing" mode:
201+
202+
* Within a checkout of `llvm-zorg <https://github.com/llvm/llvm-zorg>`_,
203+
create and activate a Python `venv
204+
<https://docs.python.org/3/library/venv.html>`_ and install the necessary
205+
dependencies.
206+
207+
.. code-block:: bash
208+
209+
python -m venv bbenv
210+
source bbenv/bin/activate
211+
pip install buildbot{,-console-view,-grid-view,-waterfall-view,-worker,-www}==3.11.7 urllib3
212+
213+
* Initialise the necessary buildmaster files, link to the configuration in
214+
``llvm-zorg`` and ask ``buildbot`` to check the configuration. This step can
215+
be run from any directory.
216+
217+
.. code-block:: bash
218+
219+
buildbot create-master llvm-testbbmaster
220+
cd llvm-testbbmaster
221+
ln -s /path/to/checkout/of/llvm-zorg/buildbot/osuosl/master/master.cfg .
222+
ln -s /path/to/checkout/of/llvm-zorg/buildbot/osuosl/master/config/ .
223+
ln -s /path/to/checkout/of/llvm-zorg/zorg/ .
224+
BUILDBOT_TEST=1 buildbot checkconfig
225+
226+
* Start the buildmaster.
227+
228+
.. code-block:: bash
229+
230+
BUILDBOT_TEST=1 buildbot start --nodaemon .
231+
232+
* After waiting a few seconds for startup to complete, you should be able to
233+
open the web UI at ``http://localhost:8011``. If there are any errors or
234+
this isn't working, check ``twistd.log`` (within the current directory) for
235+
more information.
236+
237+
* You can now create and start a buildbot worker. Ensure you pick the correct
238+
name for the worker associated with the build configuration you want to test
239+
in ``buildbot/osuosl/master/config/builders.py``.
240+
241+
.. code-block:: bash
242+
243+
buildbot-worker create-worker <buildbot-worker-root-directory> \
244+
localhost:9990 \
245+
<buildbot-worker-name> \
246+
test
247+
buildbot-worker start --nodaemon <buildbot-worker-root-directory>
248+
249+
* Either wait until the poller sets off a build, or alternatively force a
250+
build to start in the web UI.
251+
252+
* Review the progress and results of the build in the web UI.
253+
254+
This local testing configuration defaults to binding only to the loopback
255+
interface for security reasons.
256+
257+
If you want to run the test worker on a different machine, or to run the
258+
buildmaster on a remote server, ssh port forwarding can be used to make
259+
connection possible. For instance, if running the buildmaster on a remote
260+
server the following command will suffice to make the web UI accessible via
261+
``http://localhost:8011`` and make it possible for a local worker to connect
262+
to the remote buildmaster by connecting to ``localhost:9900``:
263+
264+
.. code-block:: bash
265+
266+
ssh -N -L 8011:localhost:8011 -L 9990:localhost:9990 username@buildmaster_server_address
267+
268+
188269
Best Practices for Configuring a Fast Builder
189270
=============================================
190271

0 commit comments

Comments
 (0)