Announce of the new LLVM buildbot,

At first, thanks to the sponsor, who lets me using 36-core machine for my builder. I have been running the unofficial buildbot, since 2011. As you know, I suppose it has been useful to you guys.

I introduce the new buildbot, , although it is in alpha stage. I have started running it for weeks.

What is Buildbot Nine?

Buildbot Nine has advantages;

  • The frontend is isolated from the backend with API and web socket. At the moment, frontends should be written in AngularJS1 and CoffeeScript.

  • Web socket makes clients available to see status real-time.

I think Nine is still immature but very promising.

What I have improved the bb9 from the upstream Nine?

I did many works to spend my time. Some of them are pushed into the Github. See bb-automaton and buildbot.

  • Prioritized build. Each build has upstreams and waits for them. It makes failures less noisy. It has been implemented in legacy
  • Auto-bisecting. It doesn’t blame many guys anymore. FYI, it is implemented in the buildmaster and doesn’t use git-bisect.
  • Auto-reverting. Problematic commit will be reverted locally for builders. Any failures won’t hide subsequent potential failures.
  • Reporting failures by SUCC->FAIL edge. The upstream can detect failure event when each build becomes success->failure. It emits many noises for bisection. I made bb9 detect the edge to seeking build status by revisions (changes).
    It also reports failure when subsequent commit didn’t resolve the precedent failure.
  • Auto-recommitting. Reverted commits may be recommitted in any opportunities. For example,
    • The author of reverted commit is committing something
    • An incoming commit conflicts against already-reverted commits. bb9 attempts to recommit reverted commits by merge squashing.
      I think auto-recommitting will become the key feature of bb9. I have to improve its behavior.
  • And other tweaks, … tweak revision-friendly, tweak console-view fancy, etc.

With features above, bb9 has been working to detect failures that other buildbot couldn’t do, in daily testing run. Reporting can be seen at, #llvm-build .
I am certain that bb9 can help the community.

I would like to improve bb9 as below;

  • Send emails as notification. Personally I was too afraid of sending noisy spams, therefore I disabled email feature. When I will confirm bb9 works well, I will enable email feature.

  • Improve auto-recommitting. I am planning other strategies including “recommit periodically”, but I think I just need “recommitting particular commit manually from the frontend”.

  • Implement “resolved” notification. It is related to auto-recommitting.

  • Implement “try” branches. I would like guys can push their commits as “try” branch via Github. I suppose they have to use the monorepo. I am planning that “try” branche disappears when its builds are completed.

  • Implement the “dev/trunk” branch in advance of SVN upstream. In contrast to “try” branches, bb9 may accept and merge guys’ branches to bb9’s master branch. I am planning to let some developer push commits to the branch.
    They should “graduate” when they are committed to the upstream svn.

  • Improve performance of the frontend. It is due to the upstream Nine. I will investigate and improve issues if I had time.

  • Improve performance of the backend. It is due to the upstream Nine. It makes impossible to run bb9 on AWS t2.nano to spend too much processor time. At the moment, bb9 is using t2.micro.
    FYI, is running fine on t2.nano.

  • Improve Waterfall view. I prefer legacy view with buildsteps. And you?

  • And many…

They are not straight-forward tasks.


My position is “an individual volunteer developer” for months. I have been working for LLVM to spend my savings and debt.
I would like to continue working on to improving bb9 and LLVM Project. I really want a sponsor for them, or I would have less time for LLVM, due to boring non-LLVM job. Please consider how I am useful for the community. Feel free to contact me via email or irc @chapuni.
I am not expensive :wink:

Thank you,
Takumi Nakamura