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 -- _______________________________________________ toaster mailing list [email protected] https://lists.yoctoproject.org/listinfo/toaster
