1
0
mirror of https://github.com/ohwgiles/laminar.git synced 2024-09-28 14:30:45 +00:00
Commit Graph

77 Commits

Author SHA1 Message Date
Oliver Giles
5e64844440 frontend: "builds" -> "runs"
use consistent naming
2020-12-05 13:52:40 +13:00
Oliver Giles
308d679ea4 update vue and vue-router
to 2.6.12 and 3.4.8 respectively, as they are the versions available
in Debian. fix an exposed issue where the status handler attempted
to manipulate the DOM before vue had rendered it - such manipulations
need to be deferred with $nextTick().
2020-11-20 14:34:26 +13:00
Oliver Giles
b851c72d53 progress bar: fix initial delayed update
when the displayed frontend state changes, any progress bar
should begin in the initial correct state before smoothly
transitioning with time.
2020-11-20 14:08:02 +13:00
Oliver Giles
579c192d89 builds per day: fix dynamic update to wrong result
the wrong dataset was updated, causing the graph to increase
the number of failed builds when a build succeeded and vice-versa.
2020-11-13 14:00:59 +13:00
Oliver Giles
bd489bdbb0 frontend refactor
use a more modern style, reduce variable scopes where possible,
fix several minor bugs such as pagination and scales in chart
tooltips
2020-10-16 21:19:12 +13:00
Oliver Giles
1ea9713536 implement wallboard view
resolves #51
2020-10-09 13:06:03 +13:00
Oliver Giles
746ab24676 move buildTimeDist chart to examples
too esoteric for the front page, converting it to an example
of querying laminar db directly and using gnuplot should provide
more value to those needing deeper insights into job behaviour.
2020-09-26 15:12:02 +12:00
Oliver Giles
06a5f3d8ef assign run numbers at queue time
This allows build chains to be traced in the common case where
an upstream job calls `laminarc queue' instead of `laminarc start'.
Incomplete job runs now have database entries, which requires
some adjustments in queries. Queued jobs can now be viewed in
the frontend and there is a corresponding status icon.
2020-09-25 15:29:30 +12:00
Oliver Giles
4b62e6dbf3 fix colours of per-job build time graph 2020-09-19 15:22:01 +12:00
Oliver Giles
dc3e41fb28 prettier graphs 2020-09-04 13:21:29 +12:00
Oliver Giles
e74332595e build time graph: simplify success/failed color logic 2020-09-04 13:15:30 +12:00
Oliver Giles
a793a97424 fix time scales in graphs
these were not correct at all
2020-09-04 13:12:52 +12:00
Oliver Giles
4e9c4bfb04 run page: switch progress bar and nav buttons
the navigation buttons are more usable next to other
navigation elements. This is especially noticeable on
large monitors.
2020-09-04 13:10:09 +12:00
Oliver Giles
e29568f627 improve layout on large screens 2020-09-04 13:08:34 +12:00
Oliver Giles
09a208ebeb report version and usage messages
add -h|--help usage messages to laminarc and laminard

add a mechanism to compile in a version number, and display the
version in the help messages and in the frontend.

resolves #119
2020-07-03 15:13:11 +12:00
Oliver Giles
ae560b9de4 webui refresh
WebUI rewritten in a more modern style, bootstrap is dropped in favour of
plain css/grid. Hand-crafted svgs replace utf-8 glyphs for a more uniform
look and smoother animation. webmanifest added for better mobile behaviour.

No doubt minor tweaks will follow...

resolves #57
2020-06-27 10:45:47 +12:00
Oliver Giles
c690be3a90 set html lang="en"
This fixes weird offers from browsers to translate erroneously
detected languages
2020-06-19 12:13:09 +12:00
Oliver Giles
1cc6cc6ae9 unify SSE reconnect behaviour
Chrome auto-reconnects when an EventSource connection is interrupted
but Firefox doesn't. Enforce consistent behaviour by implementing
reconnect logic.
2020-06-19 12:01:46 +12:00
Oliver Giles
2bf04d8157 allow setting a job description
adding DESCRIPTION=foo to $JOBNAME.conf will display "foo"
in the job overview page on the frontend

Resolves #97
2019-12-25 14:37:16 +02:00
Oliver Giles
0384fc9a0a
Replace nodes/tags with contexts
The nodes/tags system has not been particularly successful, it's not as
intuitive as it could be, and in an attempt to be a single feature to address
many use cases, ends up addressing none of them particularly well.

This commit replaces nodes and tags with contexts.

Each job may define which context(s) the job may be associated with.
Laminar will only pop the job off the waiting queue when it can be assigned
to a context. A context defines an integer number of executors, which
represents how many runs can be simultaneously assigned to it. A context
may provide extra environment variables.

Essentially, a context replaces a node, and tags are gone. You just assign
jobs to contexts directly, and you can use a glob expression. This should be
more intuitive.

For grouping jobs in the WebUI, a separate mechanism called "groups" is provided.
2019-12-13 10:42:22 +02:00
Oliver Giles
39ca7e86cf replace websockets with sse and refactor
Large refactor that more closely aligns the codebase to the kj async
style, more clearly exposes an interface for functional testing and
removes cruft. There is a slight increase in coupling between the
Laminar and Http/Rpc classes, but this was always an issue, just until
now more obscured by the arbitrary pure virtual LaminarInterface class
(which has been removed in this change) and the previous lumping
together of all the async stuff in the Server class (which is now
more spread around the code according to function).

This change replaces the use of Websockets with Server Side Events
(SSE). They are simpler and more suitable for the publish-style messages
used by Laminar, and typically require less configuration of the
reverse proxy HTTP server.

Use of gmock is also removed, which eases testing in certain envs.

Resolves #90.
2019-10-05 20:06:35 +03:00
Oliver Giles
95482c78a5 resolves #80: reverse-proxy with custom base URL
Fix all hrefs and vue routes to correctly operate against the
<base href> tag. Add a configuration parameter to override the
content of the href attribute, and describe its use.
2019-03-29 22:43:16 +03:00
Oliver Giles
b15166e83b resolves #82: implement /latest endpoint
for run page on webui and archive (via symlink)
2019-02-18 23:06:11 +02:00
Oliver Giles
137f35bdd7 additional fixes for #79: chunked http log
fix a missing js function call that broke log output in the
webui, and replace TextDecoderStream with TextDecoder because
the former isn't supported in Firefox
2019-02-18 23:03:14 +02:00
Oliver Giles
cec4721e52 resolves #79: serve logs over plain chunked http 2019-02-15 19:05:44 +02:00
Oliver Giles
b4df6f5c02 fix job-finished event on run page
fixes regression introduced in 63301c73
2018-10-05 17:53:37 +03:00
Oliver Giles
48854239a5 label per-job build-time graph axes
commonalize some js for configuring time axes
2018-09-30 13:00:23 +03:00
Oliver Giles
63301c73d9 resolves #61: clickable up/downstream triggers
Recognises triggers in build logs and converts them to
hyperlinks. Also separates upstream job from reason string
and allows both to be provided
2018-09-30 09:04:17 +03:00
Oliver Giles
f5e719ac02 improve graph labelling 2018-09-28 15:37:39 +03:00
Oliver Giles
a2d30ad2ea resolves #62: add average line to build time graphs 2018-09-08 21:02:58 +03:00
Oliver Giles
010af57ed4 resolves #45: new graphs
- regressions and recoveries: list of jobs whose run status changed,
  ordered first by currently failing jobs, secondly by count of jobs
  since the status change, descending for currently failing jobs and
  ascending for currently passing jobs
- low pass rates: list of the jobs with the worst pass rates calculated
  over all time
- run time changes: jobs with the largest changes in build time. This
  is calculated as the difference between the range and the standard
  deviation over the past 10 runs.
- average run time distribution: shows the number of jobs in the
  system divided into buckets based on their average runtime
2018-09-08 18:16:30 +03:00
Oliver Giles
1f122518dd resolves #64: graph jumps to previous values
Ensure the old chart is completely removed before loading a new
set of values due to different page or sort options
2018-08-24 13:32:07 +03:00
Oliver Giles
f2bbfd91bb charts: set linear minimum to 0 2018-08-24 13:31:29 +03:00
Oliver Giles
2349791676 resolves #47: jobs don't refresh on jobs page
The computed list of filtered jobs wasn't updated when a notification
was received from the server. Switch to using a method rather than a
computed property to fix this. Also add tags to jobs reported in
job_started and job_completed notifications
2018-08-24 13:10:00 +03:00
Oliver Giles
8bcce4d5cc resolves #40: implement frontend sorting
This feature allows runs to be sorted by result, number, start time
or duration, in ascending or descending order, on the Job page. Request
is processed server-side so that the correct page division can be done.
Currently running jobs are not sorted.
2018-08-24 12:15:40 +03:00
Oliver Giles
e506142fa4 Update Chart.js to latest: 2.7.2
Adapt to new API. This removes a few workarounds and should
contribute nicely to #44, #45 and #57
2018-07-20 14:18:12 +03:00
Oliver Giles
0b15939f90 resolves #59: pagination doesn't work after reconnect
A subtle tweak to the websocket logic needed to handle
this edge case. Better comments added.
2018-06-30 20:19:54 +03:00
Oliver Giles
d241d6757f resolves #58: 'connecting' overlay not removed
Now that the 'status' message can be used also as an update
(since 2a14567), extra care has to be taken with the popup
reconnecting overlay
2018-06-30 19:42:11 +03:00
Oliver Giles
2a14567b79 resolves #54: page number remembered between jobs 2018-06-16 17:07:04 +03:00
Oliver Giles
a0f586581d resolves #38: implement pagination for the job page 2018-06-01 14:51:34 +03:00
Oliver Giles
d1ca6392a4 resolves #43: limit the results displayed on home page
Limit "runs per job in last 24h" and "average runtime per job"
graphs to the top 5 in each case
2018-06-01 10:33:25 +03:00
Vaclav Valicek
fba2d226ef Show file sizes of artifacts (#53)
Show artifacts sizes in webui
2018-06-01 10:14:59 +03:00
Oliver Giles
30f2203a3b resolves #28: compensate for server/client clock skew 2018-02-03 16:52:46 +02:00
David Kalnischkies
ae961b97cb replace gif status indicators with unicode symbols 2018-01-08 08:03:46 +02:00
Oliver Giles
6e4c89bd73 improve web notification format 2018-01-05 10:50:50 +02:00
Oliver Giles
3b0efcac9d resolves #23: In-browser notification
This implements web notifications on job completion. Opt-in
by default, the preference is saved in js localStorage and
can be toggled directly on any page
2017-12-29 17:18:43 +02:00
Oliver Giles
93b428529e webui may be modified with custom style.css 2017-12-29 11:14:20 +02:00
Oliver Giles
e1a0c7bd0b resolves #24: notify and reconnect interrupted connections
A notification is shown on the webui when the websocket
connection is lost, and periodic retry is attempted
2017-12-23 17:15:48 +02:00
Václav Valíček
1bd4300d1b Enable colored output for output logs 2017-12-21 08:57:24 +02:00
Oliver Giles
1f23ec5fb2 escape html tags in log output
While normally this isn't enough to prevent XSS, this output will only
appear in the body of a <pre>, and anyway the scripts are semi-privileged
2017-12-21 08:46:00 +02:00