Because this contains a new JS file (jsrender) which has lines too long for
git send-email, I'm sending it as a pull request.

The branch containing the work described below is:

  poky-contrib, elliot/toaster/9631-recent_builds_states

OVERVIEW

This is a rewrite of the "most recent builds" area.

The most recent builds area (on the all builds and project builds pages) now
shows state for a build as follows:

* Queued (not shown for cli builds): build request created but not actioned
* Parsing recipes: shown as progress bar, using ParseProgress events to
drive it
* Tasks starting: shown while bitbake is constructing the runqueue and
before
any tasks have been completed
* Task progress: as tasks are being completed, shown as progress bar
* Completed or failed state

If a build is cancelled, you will see:

* Cancelling state, while waiting for bitbake to exit (note that this is
also
persistent across state reloads, and not just temporarily visible after the
cancel button is clicked)

* Cancelled state

In addition, because this area also impacts and overlaps with fixes for
other bugs in the build dashboard which I had hanging around, the following
pieces are also on this branch:

* Addition of a BuildInit event to capture failed builds (with bad targets)
earlier. This was required as we need to make a Build object earlier, so
that
we have something to attach recipe parse progress to.

* Changes to buildinfohelper so that the Build can be created on
ParseStarted,
but later embellished as BuildInit and BuildStarted trigger.

* Hiding the left-hand menu and build summary area for builds which fail
before
the BuildStarted event occurs. This entailed adding a started() method to
Build so that we can tell when BuildStarted has occurred.

* Remove build time links for builds which have no time data (because they
failed early).

IMPLEMENTATION NOTES

I added a BuildInit event to cooker, which I have tried to do
(unsuccessfully)
in previous patches. However, I have amended where this event is fired so
that
tasks have been sanitised before they are sent with the event.

I added a new get_state() method to the Build model. This puts the logic for
determining the state of a build in the business logic, instead of partly in
the front end and partly in the UI code.

I also added a /mostrecentbuilds JSON API which the most recent builds area
uses to fetch the build data. This provides a clean separation between
server
and client, meaning that the server doesn't have to generate much HTML.

Finally, I moved a lot of templating code to the client so that we don't
have
such an unwieldy mix of client-side and server-side templating. The
templating library I used is jsrender (http://www.jsviews.com/), as this
integrates simply with jQuery. This makes it much easier to add new state
transitions to that area of the page (such as the git checkout progress we
want
to add later).

RELATED BUGS

https://bugzilla.yoctoproject.org/show_bug.cgi?id=9631 (add state
transitions
to most recent builds area)

https://bugzilla.yoctoproject.org/show_bug.cgi?id=8443 (custom dashboard for
builds which fail at the build request stage)

https://bugzilla.yoctoproject.org/show_bug.cgi?id=8440 (better display of
builds
which fail at the build request stage)

CHANGES

(I've kept a record of the commits in this pull request for reference, but
"toaster: move most recent builds templating to client" can't be handled
by git send-email.)

The following changes since commit 2a127b1a6cd3df47879bda5e0d7bb123484013cb:

  toaster-tests: add class SeleniumTestCaseBase for browser tests
(2016-07-15 11:29:29 +0100)

are available in the git repository at:

  git://git.yoctoproject.org/poky-contrib elliot/toaster/9631-recent_bui
lds_states

http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=elliot/toaster/9631-recent_builds_states

Elliot Smith (12):
  cooker: add BuildInit event
  toaster: move most recent builds templating to client
  toaster: show progress of recipe parsing in recent builds area
  toaster: show "Tasks starting..." until the first task completes
  toaster: tweak styling and typos in recent builds area
  toaster: remove links from time field on failed builds
  toaster: add started property to Build
  toaster: adjust build dashboard for failed builds
  toaster-tests: add tests for build time links in the all builds page
  toaster-tests: add tests for build dashboard menu and summary
    visibility
  toaster-tests: add tests for most recent builds state changes
  toaster-tests: fix erroneous message when test fails

 bitbake/lib/bb/cooker.py                           |   4 +
 bitbake/lib/bb/event.py                            |   6 +-
 bitbake/lib/bb/ui/buildinfohelper.py               | 118 ++++---
 bitbake/lib/bb/ui/toasterui.py                     |  31 +-
 .../migrations/0005_reorder_buildrequest_states.py |  19 ++
 bitbake/lib/toaster/bldcontrol/models.py           |  12 +-
 .../0010_recipe_parse_progress_fields.py           |  24 ++
 .../orm/migrations/0011_allow_empty_buildname.py   |  19 ++
 bitbake/lib/toaster/orm/models.py                  |  87 ++++-
 .../toaster/tests/browser/test_all_builds_page.py  |  93 +++++-
 .../tests/browser/test_builddashboard_page.py      |  44 ++-
 .../browser/test_builddashboard_page_artifacts.py  |   7 +-
 .../tests/browser/test_layerdetails_page.py        |   8 +-
 .../browser/test_most_recent_builds_states.py      | 211 ++++++++++++
 bitbake/lib/toaster/toastergui/api.py              | 115 ++++++-
 .../lib/toaster/toastergui/static/css/default.css  |   1 +
 .../toaster/toastergui/static/js/jsrender.min.js   |   4 +
 .../lib/toaster/toastergui/static/js/libtoaster.js |  16 +
 .../lib/toaster/toastergui/static/js/mrbsection.js | 180 ++++++----
 bitbake/lib/toaster/toastergui/tables.py           |   8 +-
 bitbake/lib/toaster/toastergui/templates/base.html |   5 +
 .../toastergui/templates/basebuildpage.html        | 174 +++++-----
 .../toastergui/templates/builddashboard.html       | 188 ++++++-----
 .../toastergui/templates/buildrequestdetails.html  |  64 ----
 .../toaster/toastergui/templates/mrb_section.html  | 371
+++++++++++++--------
 .../templates/projectbuilds-toastertable.html      |   2 +-
 .../toaster/toastergui/templatetags/projecttags.py |   8 -
 bitbake/lib/toaster/toastergui/urls.py             |   3 +
 28 files changed, 1277 insertions(+), 545 deletions(-)
 create mode 100644 bitbake/lib/toaster/bldcontrol/migrations/0005_reorder_
buildrequest_states.py
 create mode 100644 bitbake/lib/toaster/orm/migrat
ions/0010_recipe_parse_progress_fields.py
 create mode 100644 bitbake/lib/toaster/orm/migrat
ions/0011_allow_empty_buildname.py
 create mode 100644 bitbake/lib/toaster/tests/brow
ser/test_most_recent_builds_states.py
 create mode 100644 bitbake/lib/toaster/toastergui/static/js/jsrender.min.js
 delete mode 100644 bitbake/lib/toaster/toastergui
/templates/buildrequestdetails.html

-- 
Elliot Smith
Software Engineer
Intel Open Source Technology Centre
-- 
_______________________________________________
toaster mailing list
[email protected]
https://lists.yoctoproject.org/listinfo/toaster

Reply via email to