* [PULL][v2] Improvements to build dashboard and most recent builds area
@ 2016-07-22 10:54 Elliot Smith
2016-07-22 11:07 ` Smith, Elliot
0 siblings, 1 reply; 2+ messages in thread
From: Elliot Smith @ 2016-07-22 10:54 UTC (permalink / raw)
To: toaster
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
^ permalink raw reply [flat|nested] 2+ messages in thread* Re: [PULL][v2] Improvements to build dashboard and most recent builds area
2016-07-22 10:54 [PULL][v2] Improvements to build dashboard and most recent builds area Elliot Smith
@ 2016-07-22 11:07 ` Smith, Elliot
0 siblings, 0 replies; 2+ messages in thread
From: Smith, Elliot @ 2016-07-22 11:07 UTC (permalink / raw)
To: toaster
[-- Attachment #1: Type: text/plain, Size: 9231 bytes --]
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@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
[-- Attachment #2: Type: text/html, Size: 11322 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2016-07-22 11:07 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-07-22 10:54 [PULL][v2] Improvements to build dashboard and most recent builds area Elliot Smith
2016-07-22 11:07 ` Smith, Elliot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.