1
0
mirror of https://github.com/ohwgiles/laminar.git synced 2024-10-27 20:34:20 +00:00
Commit Graph

252 Commits

Author SHA1 Message Date
Oliver Giles
6e4c89bd73 improve web notification format 2018-01-05 10:50:50 +02:00
Oliver Giles
d7351c0c70 fix compile error on 32-bit Linux
On 32-bit Linux, time_t is a long. Laminar extensively uses
time_t but provided only int and int64 db access, making the
use of long ambiguous. Since there is no explicit use of int64,
and because on 32-bit Linux long and int are recognized as
different types despite being the same width, replacing the
int64 handlers with long handlers fixes the compile error
2018-01-04 08:40:10 +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
Oliver Giles
3129f0e73b fix pedantic compiler warnings 2017-12-21 08:19:45 +02:00
Oliver Giles
e0a130f33d add named getters to RunSet
this improves readability by removing the index-based
get<> methods in favour of explicitly named methods
2017-12-20 09:02:15 +02:00
Oliver Giles
bb9486e066 use compliant include guards 2017-12-20 08:24:25 +02:00
Oliver Giles
9e1a65ccee server: minor websocket client handler refactor
Now explicitly closed connections on the client side are
closed with a clean error code. This is motivated by upcoming
work to detect broken websockets and automatically reconnect
2017-12-16 18:21:33 +02:00
Oliver Giles
ff42dae7cc read remaining data in run pipe when reaping
This fixes a bug where the last pieces of console output were lost. In that
case, the event loop scheduled the ended child process's SIGCHLD handler
before the handler to read the last of the process's output. We work around
that by doing an additional (non-blocking) read in the SIGCHLD handler
2017-12-09 20:27:08 +02:00
Oliver Giles
76e0e9e62a resolves #22: allow keeping N rundirs
This replaces LAMINAR_KEEP_RUNDIR (bool) with LAMINAR_KEEP_RUNDIRS (int)
2017-12-09 20:23:24 +02:00
Oliver Giles
74443c292a Fix copyright years
This reverts commit 4e911756bc.

In addition, copyright years are now expressed in the form of
(year file added)-(year file last changed)
2017-12-09 12:21:34 +02:00
Oliver Giles
e371f8ca5a server: use regular char array as buffer
This approach finally solves the crash under hardened gentoo
discussed in #19
2017-12-07 18:28:12 +02:00
Oliver Giles
4c63cef7ac remove unnecessary attach() 2017-12-06 21:59:22 +02:00
Oliver Giles
272176a6a5 server: allocate a single buffer per file descriptor 2017-12-06 21:51:50 +02:00
Oliver Giles
b70e501d6d attempt to solve segfault under hardened gentoo
Can't reproduce this locally, but looks like using a std::string
as an arbitrary buffer is causing problems. See #19
2017-12-06 09:24:35 +02:00
Oliver Giles
9c92c5b514 don't leak file descriptors into runs 2017-12-04 20:31:23 +02:00
Oliver Giles
d91816097a resolves #19: laminard crashes under load
reading into a static buffer is a race condition that is only
manifested under load. There's no guarantee the clause in then()
will run before another task overwrites the buffer. Allocating
a local string is the only correct solution
2017-12-04 20:29:19 +02:00
Oliver Giles
7dce535264 webui: navbar with square corners 2017-12-02 20:52:34 +02:00
Oliver Giles
28a939316c resolves #18: don't error out when rundir already exists 2017-12-02 20:52:19 +02:00
Oliver Giles
07c024e6ed resolves #21: executors graph incorrect after refresh 2017-12-02 19:10:00 +02:00
Oliver Giles
288b950f9e resolves #20: queued runs lost on job page refresh 2017-12-02 19:06:54 +02:00
Oliver Giles
9685563338 debug: don't assert on signo != SIGCHLD 2017-12-02 18:54:39 +02:00
Oliver Giles
ea133382b0 improve run status icon consistency 2017-12-02 18:30:45 +02:00
Oliver Giles
2214bef262 show first run of a job on all jobs page 2017-12-02 17:55:32 +02:00
palica
c7c70538c3 formating changes for time display 2017-12-01 14:12:03 +02:00
Oliver Giles
e94f4e2651 resolves #16: first run of a job does not update duration 2017-11-18 11:26:04 +02:00
Oliver Giles
298f72f81b fix duplicated progress spinner on run page 2017-11-07 19:04:49 +02:00
Oliver Giles
ce0a127a30 Dynamically update duration on job page
Show dynamically updating duration for active jobs on the
job page. This adds to the resolution for #8
2017-11-07 08:35:49 +02:00
Oliver Giles
309654ef8a
Merge pull request #13 from palica/patch-1
typo
2017-11-07 08:30:06 +02:00
Oliver Giles
d3e4db1f29 show active jobs on Jobs page
Rows on the jobs page now updated also during their execution. This
improvement was discussed in #8 and #9
2017-11-07 08:21:01 +02:00
palica
3c658abb27
typo 2017-11-07 01:37:21 +01:00
Oliver Giles
022aa0d804 Show active job running time on dashboard 2017-11-06 19:22:03 +02:00
Oliver Giles
116dfaa3d0 calculate all duration in the client
This cleans up some inconsistency where sometimes 'completed-started' happened
on the client side and sometimes on the server. Also should fix the 'cumulative
time' issue mentioned in #8
2017-11-06 19:08:14 +02:00
Oliver Giles
7a7c5bc5aa resolves #10: make total build graph semi-transparent 2017-11-06 07:38:04 +02:00
Oliver Giles
7d47bc4b89 resolves #8: show execution time of the running job 2017-11-06 07:38:04 +02:00
Oliver Giles
576159d8e9 send correct Content-Type header for static resources 2017-10-31 20:07:12 +02:00
Oliver Giles
32426ee34f rundir could not be kept, use consistent naming 2017-10-14 17:51:24 +03:00
Oliver Giles
47ef181043 if https then use wss 2017-09-23 14:36:04 +03:00
Oliver Giles
6c853f045e archive url must be absolute 2017-09-23 11:11:38 +03:00
Oliver Giles
0e31fed78e fix pedantic 32-bit compile error 2017-09-22 19:00:55 +03:00
Oliver Giles
91baf358da plain run vars override vars from parameterized triggers 2017-08-16 09:09:01 +03:00
Oliver Giles
636dfb8651 use shorter build vars in traditional style 2017-08-16 09:08:57 +03:00
Oliver Giles
0b9fb54b02 laminarc: read LAMINAR_BIND_RPC 2017-08-15 08:41:53 +03:00
Oliver Giles
b7644494fc unlink unix sockets before binding 2017-08-15 08:33:15 +03:00
Oliver Giles
713462f37f update progress bar when navigating between Runs
When navigating between Run pages, the jobsRunning array used
by the ProgressUpdater was cleared after the status message had
inserted the new Run instead of before
2017-08-15 08:33:15 +03:00
Oliver Giles
e7aa979303 bugfix: wrong log compression limit check operator 2017-08-15 08:33:15 +03:00
Oliver Giles
b307e06a87 use comma as a tag separator instead of space 2017-08-15 08:33:15 +03:00
Oliver Giles
56d2f30976 align abstract socket address syntax to new capnp 2017-08-15 08:33:07 +03:00
Oliver Giles
c12fb3f030 remove unnecessary default parameter 2017-08-12 15:10:06 +03:00
Oliver Giles
eda906b805 refactor: remove transport knowledge from Laminar class
Improve the boundary between RpcImpl and LaminarInterface such
that the Laminar class doesn't require any types from kj/async.h.
The necessary logic moved from Laminar to RpcImpl and the notification
now happens by abstract virtual callback instead of kj::Promise.
Also remove the fairly useless 'wait' RPC call and drop the wrappers
around kj::PromiseFulfillerPair
2017-08-10 08:25:20 +03:00
Oliver Giles
ab99af7ca7 implement general-purpose locks 2017-08-10 07:40:30 +03:00
Oliver Giles
f42325b472 implement .init script to populate workspace 2017-08-07 08:15:35 +03:00
Oliver Giles
4fc2310ed9 allow Run::addScript to accept a CWD for scripts 2017-08-07 08:07:50 +03:00
Oliver Giles
ae213b4f74 assymetric queueing logic
allow tagged job execution on an untagged node, but not
vice-versa. This allows the admin to assign tags for UI
grouping without worrying about nodes at all
2017-08-06 08:21:17 +03:00
Oliver Giles
9aa172e8f5 adapt nodes and tags to new folder structure 2017-08-06 08:19:58 +03:00
Oliver Giles
b45de55ed1 bugfix: correct path to node .before script 2017-08-06 08:19:00 +03:00
Oliver Giles
66b62f70f3 only compress logs larger than a certain size
this fixes an issue where empty or very small logs
resulted in a larger compressed log, which was
truncated and cannot be decompressed
2017-07-31 08:56:58 +03:00
Oliver Giles
3068180f8e give capnp ownership of process output fd
this fixes an intermittent issue (race condition?) where
the IoContext attempts to poll an already-closed fd
2017-07-31 08:53:50 +03:00
Oliver Giles
668ada74d1 move from directory-based to file-based job scripts 2017-07-31 08:51:46 +03:00
Oliver Giles
1bcb2c8dfe remove no longer used frontend templates 2017-07-31 08:31:43 +03:00
Oliver Giles
8080d38cfe fix reported estimated time of completion from websocket 2017-07-13 21:59:59 +03:00
Oliver Giles
492ddd2ceb "Laminar" as default page title 2017-07-13 21:59:59 +03:00
Oliver Giles
ad9837fd96 frontend: replace angular with vue 2017-07-13 21:59:59 +03:00
Oliver Giles
4e911756bc update copyright year 2016-07-25 15:00:49 +03:00
Oliver Giles
2ea27d46ed implement proper child cleanup 2016-07-25 14:59:45 +03:00
Oliver Giles
7b7de751e3 fix for new non-COW std::strings 2016-07-23 18:07:33 +03:00
Oliver Giles
82b39c2961 compress logs in database 2015-12-06 13:47:43 +01:00
Oliver Giles
1eb6a9138e better message on execl failure 2015-12-06 12:41:38 +01:00
Oliver Giles
e7fe117426 don't log full file paths, remove use of KJ_DBG 2015-12-06 12:36:12 +01:00
Oliver Giles
99fd47de68 order recent builds in job page chronologically 2015-12-06 12:20:14 +01:00
Oliver Giles
f181c87d3b report running state, only show spinner when actually running 2015-12-06 12:15:05 +01:00
Oliver Giles
87ebf91f1e don't show previous build button for first job run 2015-12-06 11:54:34 +01:00
Oliver Giles
10d7ad8960 create db with primary key and index 2015-12-06 11:53:06 +01:00
Oliver Giles
e40fb52554 output a warning when archive exists instead of failing 2015-12-06 11:37:24 +01:00
Oliver Giles
d44d5ba0e6 boost compatibility 2015-11-19 21:43:08 +01:00
Oliver Giles
56a8301e85 increment busyExecutors only when queueing cannot fail 2015-11-01 11:35:46 +01:00
Oliver Giles
695b52c101 error on non-existent job 2015-11-01 11:35:07 +01:00
Oliver Giles
cb954f0ff8 FE cleanup, send missing messages 2015-11-01 11:34:18 +01:00
Oliver Giles
16081adb30 add missing enum conversion 2015-11-01 11:30:18 +01:00
Oliver Giles
beede38643 propagate job_completed message to run page 2015-11-01 11:29:06 +01:00
Oliver Giles
e140221c72 cleanup, dynamically present artifacts 2015-11-01 11:28:22 +01:00
Oliver Giles
b3cd9929b7 client: when job fails, still wait for others to complete 2015-11-01 11:25:43 +01:00
Oliver Giles
2b6cbc18b1 spinner+progress 2015-11-01 11:24:28 +01:00
Oliver Giles
1e0a2ebc36 frontend love 2015-09-26 22:54:27 +02:00
Oliver Giles
0df97e95fd support for job and node tags 2015-09-24 22:02:11 +02:00
Oliver Giles
79c3ee5fcb fix spelling mistake 2015-09-24 21:07:48 +02:00
Oliver Giles
3ee5b4f8f6 better socket closing 2015-09-23 08:15:08 +02:00
Oliver Giles
f923762c7e server cleanup, fix logic error in early promise resolution 2015-09-21 22:30:50 +02:00
Oliver Giles
cf9bee07db add favicon, nav logo 2015-09-20 19:57:05 +02:00
Oliver Giles
a729a6782e implement display and serving of archived artifacts 2015-09-19 17:24:20 +02:00
Oliver Giles
dbc75000a5 readability: move runFinished into its own function 2015-09-19 15:41:19 +02:00
Oliver Giles
50dd7b47af use an empty string for the default node name 2015-09-19 15:40:53 +02:00
Oliver Giles
1caeeabbfd expose lNode 2015-09-19 15:40:09 +02:00
Oliver Giles
ae59da1245 implement LAMINAR_KEEP_WORKDIR 2015-09-19 15:29:07 +02:00
Oliver Giles
291428ef2d add support for global, node and job level env files 2015-09-19 14:55:16 +02:00
Oliver Giles
f260b7813c remove iniparser, laminar.conf must be sourced 2015-09-19 14:36:03 +02:00
Oliver Giles
cf10d5c795 expose lArchive 2015-09-19 13:40:00 +02:00
Oliver Giles
2147346493 expose lResult and lLastResult 2015-09-19 10:38:34 +02:00
Oliver Giles
a2701dcfd9 Initial commit 2015-09-13 22:25:26 +02:00