[Toaster] [PULL][v2] Improvements to build dashboard and most recent builds area
Smith, Elliot
elliot.smith at intel.com
Fri Jul 22 04:07:36 PDT 2016
I have just updated this branch, as for some reason the migrations decided
to clash when I ran the test suite again. (They hadn't been doing this
earlier in the day when I'd run them, inexplicably.)
As this is a pull request, it won't affect my request for a review, but
note that the file diff is slightly different from the one advertised in my
v2 overview email.
Elliot
On 22 July 2016 at 11:54, Elliot Smith <elliot.smith at intel.com> wrote:
> NB 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
>
> CHANGES IN V2
>
> In response to Belen's feedback on v1, these fixes were made:
>
> * Fixed an issue where the state of builds on the project builds page never
> updated (due to missing project_id querystring parameter).
> * Replaces "...targets unknown..." with more optimistic "Fetching
> recipes...".
> * Fixed formatting of warnings which were the colour of errors (missing CSS
> classes).
> * Made sure that warnings are shown for failed builds.
> * Show build summary for builds with task failures.
>
> 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.)
>
> Related bugs:
> https://bugzilla.yoctoproject.org/show_bug.cgi?id=9631
> https://bugzilla.yoctoproject.org/show_bug.cgi?id=8443
> https://bugzilla.yoctoproject.org/show_bug.cgi?id=8440
>
> The following changes since commit 1826de5234aadb9aa51c83f86471cdd7e88b48cf
> (toaster-next):
>
> toaster: loadconf Partially add back some of the layerSource parsing
> (2016-07-21 11:23:00 +0100)
>
> are available in the git repository at:
>
> git://git.yoctoproject.org/poky-contrib
> elliot/toaster/9631-recent_builds_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/LICENSE | 2 +
> 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 | 127 +++++--
> .../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 | 6 +
> .../toastergui/templates/basebuildpage.html | 176 +++++-----
> .../toastergui/templates/builddashboard.html | 158 +++++----
> .../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 +
> 29 files changed, 1329 insertions(+), 551 deletions(-)
> create mode 100644
> bitbake/lib/toaster/bldcontrol/migrations/0005_reorder_buildrequest_states.py
> create mode 100644
> bitbake/lib/toaster/orm/migrations/0010_recipe_parse_progress_fields.py
> create mode 100644
> bitbake/lib/toaster/orm/migrations/0011_allow_empty_buildname.py
> create mode 100644
> bitbake/lib/toaster/tests/browser/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
> ---------------------------------------------------------------------
> Intel Corporation (UK) Limited
> Registered No. 1134945 (England)
> Registered Office: Pipers Way, Swindon SN3 1RJ
> VAT No: 860 2173 47
>
> This e-mail and any attachments may contain confidential material for
> the sole use of the intended recipient(s). Any review or distribution
> by others is strictly prohibited. If you are not the intended
> recipient, please contact the sender and delete all copies.
>
>
--
Elliot Smith
Software Engineer
Intel Open Source Technology Centre
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/toaster/attachments/20160722/09935ace/attachment.html>
More information about the toaster
mailing list