zuul-log-mode major mode makes it as comfortable to browse a build log as it would be to navigate a local compilation. The package implements a custom filename parser for errors in the logs which allows Emacs to open the correct project file when an error is encountered in the log, even though the absolute path may not be found on the local machine.
(use-package zuul :custom ((zuul-base-url "https://base.url.to.zuul.net") (zuul-tenant "tenant1") (zuul-tenant-configs '((:name "tenant1" :project-roots (("foo" . "~/git/foo-repo") ("baz" . "~/git/baz-repo"))) (:name "tenant2" :project-roots (("bar" . "~/git/bar-repo")))))))
The package doesn't provide any commands, except those used by the
zuul-log-mode. Other packages, or users themselves, needs to implement commands because retrieving builds or buildsets requires knowledge that might not be general. An example of a package that integrates with
zuul.el is egerrit-zuul. It provides the command
egerrit-zuul-open-build-log which can be used as inspiration.
zuul-get-buildsets needs to be called to retrieve builds and buildsets from Zuul. Both functions accepts multiple input parameters specified as keys in the call. The simplest example would be to use a
;; For buildsets (zuul-get-buildsets :change "300203") ;; For builds (zuul-get-builds :change "300203")
A list of builds, or buildsets, can be passed as input to the
zuul-open-build-log in order to view a specific build log.
;; For buildsets (zuul-open-build-log (zuul-get-buildsets :change "300203")) ;; For builds (zuul-open-build-log (zuul-get-builds :change "300203"))
The major mode
zuul-log-mode provides the following commands.
|zuul-switch-build||C-c C-b||Switch to another build|
|zuul-switch-buildset||C-c C-s||Switch to a build from a specific buildset|
|zuul-run-build-command||C-c C-r||Run build command from build log|
|zuul-previous-build||C-c C-p||Switch to previous build|
|zuul-next-build||C-c C-n||Switch to next build|
|zuul-open-build-in-browser||C-c C-o||Open build in browser|
It also integrates with the following built in features:
imenu: navigate to beginning of tasks in the build log
eldoc: echo descriptive information about where in the log point are
The package provides the following customizable variables.
||Base URL to Zuul|
||A list of tenant configurations|
||A list of annotations to display for a build|
||A list of annotations to display for a buildset|
||A list of annotations to display for a build command|
||A list of annotations to display for a imenu|
||The configuration for display-buffer when opening a build.|
||If set to t builds will be added to buildsets|
zuul.el package supports Connection Local Variables which allows the user to customize the
zuul-tenant-configs variable when running on a remote host. In this example
zuul-tenant-configs are configured the same for all remote hosts.
(connection-local-set-profile-variables 'remote-zuul '((zuul-tenant-configs . ((:name "foo" :project-roots (("bar" . "~/other_location/bar"))))))) (connection-local-set-profiles '(:application tramp :protocol "ssh") 'remote-zuul)
The author might try to include the package into ELPA in the future, which means that if you want to contribute you must have a copyright assignment.