7107ce2bc7
t/Event/* -> t/Hydra/Event/
2022-02-07 16:08:40 -05:00
8a18326f2b
Sort notification classes / events
2022-02-07 16:08:27 -05:00
7b7c03a521
Merge pull request #1141 from amerocu/amerocu/fix-dev-env
...
missing develop dependencies
2022-02-06 14:35:27 -05:00
5ae26aa760
Update Nix to 2.6
2022-02-06 15:05:15 +01:00
73f2cc184f
missing develop dependencies
2022-02-05 20:28:44 +01:00
d8b56f022d
RunCommand: print a warning if the hook isn't run because the project / jobset doens't have it enabled
2022-02-01 10:58:54 -05:00
3aa2393091
Jobsets: add a supportsDynamicRunCommand which also checks the project's dynamic runcommand support
2022-02-01 10:58:54 -05:00
daa6864a58
Project result: add a supportsDynamicRunCommand helper
2022-02-01 10:58:54 -05:00
38514ae494
fanout tests: capture warnings and test their relevance
2022-02-01 10:58:54 -05:00
bc1630bd27
fixup! RunCommand: Add a WIP execution of dynamic commands
2022-02-01 10:58:54 -05:00
2635607b6e
whoops: add a test on the enable_dynamic_run_command field
2022-02-01 10:58:54 -05:00
8a96f07f58
Project: enable enabling dynamic runcommand per project
2022-02-01 10:58:54 -05:00
1affb1cfb1
jobset API: expose and check the enable_dynamic_run_command
2022-02-01 10:58:54 -05:00
726ea80e99
HTTP/Jobset: support setting / reading enable_dynamic_run_command
2022-02-01 10:58:54 -05:00
1802bd0113
Declarative Jobs: add support for the enable_dynamic_run_command flag
2022-02-01 10:58:54 -05:00
0810f5debc
finish making the dynamic hooks only run on project & jobset agreement
2022-02-01 10:58:54 -05:00
aef11685a0
regenerate schema files after adding the flag to the projects
2022-02-01 10:58:54 -05:00
0c96172c28
RunCommand: only run dynamic runcommand hooks if the project AND jobset agree they should be enabled
2022-02-01 10:58:54 -05:00
85a53694c8
sql: add enable_dynamic_run_command to the Project as well
2022-02-01 10:58:54 -05:00
a9bfabd672
sql: add a migration for enable_dynamic_run_command
2022-02-01 10:58:23 -05:00
3cce0c5ef6
Only run dynamic runcommand hooks if the jobset enables them
2022-02-01 10:57:30 -05:00
97a1d2d1d4
Jobsets: add enable_dynamic_run_command
2022-02-01 10:57:30 -05:00
216d8bee35
DynamicRunCommand: don't run if the build failed
2022-02-01 10:57:30 -05:00
1a30a0c2f1
Dynamic RunCommand: validate that the job's out exists, is a file (or points to a file) which is executable.
2022-02-01 10:57:30 -05:00
c2be27e82b
fanout.t: switch to makeAndEvaluateJobset
2022-02-01 10:57:30 -05:00
e7f68045f4
DynamicRunCommand: pull out the function determining if a build is
...
eligible for execution under dynamic run commands.
2022-02-01 10:57:30 -05:00
e56c49333f
RunCommand: Add a WIP execution of dynamic commands
...
This in-progress feature will run a dynamically generated set of
buildFinished hooks, which must be nested under the `runCommandHook.*`
attribute set. This implementation is not very good, with some to-dos:
1. Only run if the build succeeded
2. Verify the output is named $out and that it is an executable file
(or a symlink to a file)
3. Require the jobset itself have a flag enabling the feature, since
this feature can be a bit dangerous if various people of different
trust levels can create the jobs.
2022-02-01 10:57:30 -05:00
ea311a0eb4
RunCommand: enable the plugin if dynamicruncommand is set
2022-02-01 10:57:30 -05:00
6ffc93c01a
RunCommand: write documentation for dynamic commands
2022-02-01 10:57:30 -05:00
4ea646130c
RunCommand: split out documentation, fixup the matcher syntax
2022-02-01 10:57:30 -05:00
85b842e0ac
Merge pull request #1137 from DeterminateSystems/runcommand-logs
...
Store and display the output of RunCommands
2022-01-31 16:26:31 -05:00
b57345ba1f
hydra.sql: add IndexRunCommandLogsOnBuildID index
2022-01-31 12:56:34 -08:00
d0b6329aa8
sql/upgrade-81: remove unnecessary comment
2022-01-31 12:55:36 -08:00
9c4e6f78e7
hydra-module: don't bzip2 runcommand-logs
2022-01-31 12:55:36 -08:00
8c67e32480
RunCommand: ensure we reset the umask
2022-01-31 12:55:36 -08:00
34e4c119f4
build.tt: don't duplicate RunCommandLog buttons
2022-01-31 11:40:16 -08:00
61189ecca9
Helper/Nix: constructRunCommandLogPath: verify uuid is valid
...
This shouldn't be possible normally, but it is possible to:
$db->resultset('RunCommandLogs')->new({ uuid => "../etc/passwd" });
if you have access to the `$db`.
2022-01-31 08:58:33 -08:00
e381751564
Helper/Nix: constructRunCommandLogPath: return undef in case of an error
...
This allows us to give a web request to an invalid UUID a 404.
2022-01-31 08:58:33 -08:00
2c6487b8d7
t/Helper: test constructRunCommandLogPath
2022-01-31 08:58:33 -08:00
8bf3cdbc67
t/Helper: switch to using test_context()
2022-01-31 08:58:33 -08:00
8eab7b8543
Helper/Nix: constructRunCommandLogPath: take RunCommandLog as input
...
This way we ensure that it actually exists in the database, rather than
blindly trusting user-generated input.
2022-01-31 08:58:33 -08:00
61914d56c6
runcommand-log.tt: escape the command
2022-01-31 08:58:33 -08:00
71bbb042db
build.tt: link to the pretty, raw, and tail versions of the log
...
Also split it out to a new div -- there are now 3 lines per
RunCommandLog -- the first saying when it started, the second saying how
long it ran for (or has been running), and the third with the buttons
for the pretty, raw, and tail versions of the log.
2022-01-31 08:58:33 -08:00
3594ba942a
Controller/Build: use showLog in view_runcommandlog
...
This also adds the `runcommandlog` object to the stash so that we can
access its uuid as well as command run in order to display more useful
and specific information on the webpage.
2022-01-31 08:58:33 -08:00
1d0076408b
Controller/Build: pass log_uri to showLog in place of drvPath
...
This way, we can reuse the `showLog` sub for other things, such as
`view_runcommandlog` (which doesn't have a drvPath attached).
2022-01-31 08:58:33 -08:00
ff390e89a6
Controller/Build: remove unused parameter from showLog
2022-01-31 08:58:33 -08:00
38896db6b6
t/RunCommand: init http.t
...
Test that we can indeed visit the pages of a valid runcommand log and
not of an invalid one.
2022-01-31 08:58:33 -08:00
47c1f89d5a
t/RunCommand: fixup basic.t to use uuid
2022-01-31 08:58:33 -08:00
fc3cf4ecb2
RunCommandLogs: identify and access via uuid
...
Using a sha1 of the command combined with the build ID is not a
particularly good or unique identifier:
* A build could fail, be restarted, and then succeed -- assuming no
configuration changes, the sha1 hash of the command as well as the build
ID will be the same. This would lead to an overwritten log file.
* Allowing user input to influence filenames is not the best of ideas.
2022-01-31 08:58:33 -08:00
dcb0c1425c
RunCommandLogs: set a UUID automatically
2022-01-31 08:58:33 -08:00