#+title: buildbot.el
#+author: Yuchen Pei
#+language: en

[[https://www.buildbot.net/][Buildbot]] is a free software continuous integration tool. buildbot.el
is an emacs interface to view build information on a Buildbot
instance. It supports [[https://docs.buildbot.net/latest/relnotes/0.9.0.html][newer versions]]* of Buildbot (>=0.9.0) but not
older versions (<0.9.0) and shows views for branches, revisions,
builds, steps, logs and builders.

It has been tested for the following instances (the urls are to be
used as ~buildbot-host~):
- [[https://buildbot.mariadb.org][mariadb]] (works better with ~(setq buildbot-api-changes-direct-filter t)~)
- [[https://buildbot.python.org/all][python]]
- [[https://buildbot.buildbot.net][buildbot]]
- [[https://buildbot.scummvm.org][scummvm]]
- [[http://build.sagemath.org][sagemath]]
- [[https://buildbot.staging.openwrt.org/images][openwrt]]
- [[https://gkernelci.gentoo.org][gentoo]]
- [[https://buildbot.libsdl.org][SDL]]

*: The linked release notes describes the significant changes at
0.9.0.

* Install

** From ELPA
   :PROPERTIES:
   :UPDATED:  [2023-07-15 Sat 16:16]
   :END:

Buildbot is currently available at elpa-devel:

#+begin_src elisp
(add-to-list 'package-archives
             ("elpa-devel" . "https://elpa.gnu.org/devel/"))
(package-refresh-contents)
(package-install 'buildbot)
#+end_src

** Manual install
   :PROPERTIES:
   :UPDATED:  [2023-07-15 Sat 16:24]
   :END:

Clone this repo, and add to load path (assuming you clone to
=~/.emacs.d=):

#+begin_src sh
cd ~/.emacs.d
git clone https://g.ypei.me/buildbot.el.git
#+end_src

#+begin_src elisp
(add-to-list 'load-path "~/.emacs.d/buildbot.el")
#+end_src

After that, require buildbot and set the host and builders, like so

#+begin_src elisp
(require 'buildbot)
(setq buildbot-default-host "https://buildbot.mariadb.org")
#+end_src

* Use
  :PROPERTIES:
  :UPDATED:  [2023-07-15 Sat 16:38]
  :END:

Entry points:
- ~M-x buildbot-revision-open~ prompts for a revision id (e.g. commit
  hash in git), and opens a view of the revision, including builds
  associated with changes associated with the revision.
- ~M-x buildbot-branch-open~ prompts for a branch name, and opens up a
  view of revisions of this branch.
- ~M-x buildbot-builder-open~ prompts for a builder name from a list
  of available builders, and opens up a view of recent builds by this
  builder.
- The first time any of these commands is invoked it may take a bit
  longer than usual because it needs to make an extra call to get all
  builders.

* TODOs
  :PROPERTIES:
  :UPDATED:  [2023-06-26 Mon 17:04]
  :END:

- org link integration.
- older buildbot api (not really sure if feasible)
- copy url of the current view
- highlight certain builders (e.g. mandatory for push)

* Contact and Copyright

~buildbot.el~ is maintained by Yuchen Pei <id@ypei.org> and covered by
[[https://www.gnu.org/licenses/agpl-3.0.en.html][GNU AGPLv3+]].  You may find the license text in a file named
COPYING.agpl3 in the project tree.
