Oliver Giles
a0f586581d
resolves #38 : implement pagination for the job page
6 years ago
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
6 years ago
Vaclav Valicek
fba2d226ef
Show file sizes of artifacts ( #53 )
...
Show artifacts sizes in webui
6 years ago
Oliver Giles
180b5b7117
fix: spell out the constructor for gcc4.8
6 years ago
Oliver Giles
f1e4d10be3
resolves #36 : queue/start/run
6 years ago
Oliver Giles
649caee297
resolves #30 : job execution timeout
...
Add the ability to configure a timeout in seconds
after which a job run will be automatically aborted
6 years ago
Oliver Giles
083f136186
resolves #41 : strange behaviour of limits
...
On a configuration change, update existing Nodes in Laminar's NodeMap
rather than replacing it with a new map.
6 years ago
Oliver Giles
c937362961
Update comment about loading configuration files
...
Dynamic reloading of config files was implemented in 216ecee7c5
6 years ago
Oliver Giles
216ecee7c5
resolves #34 : watch for configuration changes
...
Reload the configuration if a change is detected
without requiring a server restart
6 years ago
Oliver Giles
9c256815e4
resolves #29 : graceful shutdown
...
on SIGINT/SIGTERM:
1. stop accepting new connections
2. send SIGTERM to all child tasks
3. wait for processes to end
4. drop all websockets
6 years ago
Oliver Giles
30f2203a3b
resolves #28 : compensate for server/client clock skew
6 years ago
Oliver Giles
46efb07285
test: add LaminarTest stub
6 years ago
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
7 years ago
Oliver Giles
93b428529e
webui may be modified with custom style.css
7 years ago
Oliver Giles
3129f0e73b
fix pedantic compiler warnings
7 years ago
Oliver Giles
e0a130f33d
add named getters to RunSet
...
this improves readability by removing the index-based
get<> methods in favour of explicitly named methods
7 years ago
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
7 years ago
Oliver Giles
76e0e9e62a
resolves #22 : allow keeping N rundirs
...
This replaces LAMINAR_KEEP_RUNDIR (bool) with LAMINAR_KEEP_RUNDIRS (int)
7 years ago
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)
7 years ago
Oliver Giles
9c92c5b514
don't leak file descriptors into runs
7 years ago
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
7 years ago
Oliver Giles
28a939316c
resolves #18 : don't error out when rundir already exists
7 years ago
Oliver Giles
9685563338
debug: don't assert on signo != SIGCHLD
7 years ago
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
7 years ago
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
7 years ago
Oliver Giles
32426ee34f
rundir could not be kept, use consistent naming
7 years ago
Oliver Giles
0e31fed78e
fix pedantic 32-bit compile error
7 years ago
Oliver Giles
e7aa979303
bugfix: wrong log compression limit check operator
7 years ago
Oliver Giles
b307e06a87
use comma as a tag separator instead of space
7 years ago
Oliver Giles
56d2f30976
align abstract socket address syntax to new capnp
7 years ago
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
7 years ago
Oliver Giles
f42325b472
implement .init script to populate workspace
7 years ago
Oliver Giles
4fc2310ed9
allow Run::addScript to accept a CWD for scripts
7 years ago
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
7 years ago
Oliver Giles
9aa172e8f5
adapt nodes and tags to new folder structure
7 years ago
Oliver Giles
b45de55ed1
bugfix: correct path to node .before script
7 years ago
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
7 years ago
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
7 years ago
Oliver Giles
668ada74d1
move from directory-based to file-based job scripts
7 years ago
Oliver Giles
8080d38cfe
fix reported estimated time of completion from websocket
7 years ago
Oliver Giles
492ddd2ceb
"Laminar" as default page title
7 years ago
Oliver Giles
4e911756bc
update copyright year
8 years ago
Oliver Giles
2ea27d46ed
implement proper child cleanup
8 years ago
Oliver Giles
7b7de751e3
fix for new non-COW std::strings
8 years ago
Oliver Giles
82b39c2961
compress logs in database
9 years ago
Oliver Giles
e7fe117426
don't log full file paths, remove use of KJ_DBG
9 years ago
Oliver Giles
f181c87d3b
report running state, only show spinner when actually running
9 years ago
Oliver Giles
10d7ad8960
create db with primary key and index
9 years ago
Oliver Giles
e40fb52554
output a warning when archive exists instead of failing
9 years ago
Oliver Giles
d44d5ba0e6
boost compatibility
9 years ago
Oliver Giles
56a8301e85
increment busyExecutors only when queueing cannot fail
9 years ago
Oliver Giles
695b52c101
error on non-existent job
9 years ago
Oliver Giles
cb954f0ff8
FE cleanup, send missing messages
9 years ago
Oliver Giles
beede38643
propagate job_completed message to run page
9 years ago
Oliver Giles
e140221c72
cleanup, dynamically present artifacts
9 years ago
Oliver Giles
1e0a2ebc36
frontend love
9 years ago
Oliver Giles
0df97e95fd
support for job and node tags
9 years ago
Oliver Giles
a729a6782e
implement display and serving of archived artifacts
9 years ago
Oliver Giles
dbc75000a5
readability: move runFinished into its own function
9 years ago
Oliver Giles
50dd7b47af
use an empty string for the default node name
9 years ago
Oliver Giles
ae59da1245
implement LAMINAR_KEEP_WORKDIR
9 years ago
Oliver Giles
291428ef2d
add support for global, node and job level env files
9 years ago
Oliver Giles
f260b7813c
remove iniparser, laminar.conf must be sourced
9 years ago
Oliver Giles
cf10d5c795
expose lArchive
9 years ago
Oliver Giles
2147346493
expose lResult and lLastResult
9 years ago
Oliver Giles
a2701dcfd9
Initial commit
9 years ago