@@ -179,6 +179,74 @@ Here are the steps you can follow to do so:
179
179
buildbot.tac file to change the port number from 9994 to 9990 and start it
180
180
again.
181
181
182
+ Testing a Builder Config Locally
183
+ ================================
184
+
185
+ It's possible to test a builder running against a local version of LLVM's
186
+ buildmaster configuration. This can be helpful to allow quickly identifying
187
+ and iterating over fixes to any issues in either the changes that introduce
188
+ the new builder, or the machine configuration for your worker (preinstalled
189
+ packages etc). A buildmaster launched in this "local testing" mode will bind
190
+ only to local interfaces, use SQLite as the database, use a fixed password for
191
+ workers, and disable things like GitHub authentication.
192
+
193
+ * Within a checkout of `llvm-zorg <https://github.com/llvm/llvm-zorg >`_,
194
+ create and activate a Python `venv
195
+ <https://docs.python.org/3/library/venv.html> `_ and install the necessary
196
+ dependencies.
197
+
198
+ .. code-block :: bash
199
+
200
+ python -m venv bbenv
201
+ source bbenv/bin/activate
202
+ pip install buildbot{,-console-view,-grid-view,-waterfall-view,-worker,-www}==3.11.7 urllib3
203
+
204
+ * Initialise the necessary buildmaster files, link to the configuration in
205
+ ``llvm-zorg `` and run a litmus check (run in the directory of your choice):
206
+
207
+ .. code-block :: bash
208
+
209
+ buildbot create-master llvm-testbbmaster
210
+ cd llvm-testbbmaster
211
+ ln -s /path/to/checkout/of/llvm-zorg/buildbot/osuosl/master/master.cfg .
212
+ ln -s /path/to/checkout/of/llvm-zorg/buildbot/osuosl/master/config/ .
213
+ ln -s /path/to/checkout/of/llvm-zorg/zorg/ .
214
+ BUILDMASTER_TEST=1 buildbot checkconfig
215
+
216
+ * Start the buildmaster using the command below. After a few seconds to
217
+ startup, you should be able to open the web UI at ``http://localhost:8011 ``.
218
+ If there are any errors or this isn't working, be sure to check
219
+ ``twistd.log `` for more information.
220
+
221
+ .. code-block :: bash
222
+
223
+ BUILDMASTER_TEST=1 buildbot start --nodaemon .
224
+
225
+ * With the above in place, you can now create and start a buildbot worker.
226
+ Ensure you pick the correct name for the worker attached to the build
227
+ configuration you want to test in
228
+ ``buildbot/osuosl/master/config/builders.py ``. After doing the below, either
229
+ wait until the poller sets off a build, or you can force a build to start in
230
+ the web UI (which is also the best place to review the build results).
231
+
232
+ .. code-block :: bash
233
+
234
+ buildbot-worker create-worker < buildbot-worker-root-directory> \
235
+ localhost:9990 \
236
+ < buildbot-worker-name> \
237
+ test
238
+ buildbot-worker start --nodaemon < buildbot-worker-root-directory>
239
+
240
+ This local testing configuration defaults to binding only to the loopback
241
+ interface for security reasons. If you want to run the test worker on a
242
+ different machine, or to run the buildmaster on a remote server, ssh port
243
+ forwarding can be used to make connection possible. For instance, if running
244
+ the buildmaster on a remote server the following command will suffice to make
245
+ the web UI accessible via ``http://localhost:8011 `` and make it possible for a
246
+ local worker to connect to the remote buildmaster by connecting to
247
+ ``localhost:9900 ``: ``ssh -N -L 8011:localhost:8011 -L 9990:localhost:9990
248
+ username@server_address ``.
249
+
182
250
Best Practices for Configuring a Fast Builder
183
251
=============================================
184
252
0 commit comments