Graham Christensen
3cce0c5ef6
Only run dynamic runcommand hooks if the jobset enables them
2022-02-01 10:57:30 -05:00
Graham Christensen
97a1d2d1d4
Jobsets: add enable_dynamic_run_command
2022-02-01 10:57:30 -05:00
Graham Christensen
216d8bee35
DynamicRunCommand: don't run if the build failed
2022-02-01 10:57:30 -05:00
Graham Christensen
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
Graham Christensen
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
Graham Christensen
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
Graham Christensen
ea311a0eb4
RunCommand: enable the plugin if dynamicruncommand is set
2022-02-01 10:57:30 -05:00
Graham Christensen
85b842e0ac
Merge pull request #1137 from DeterminateSystems/runcommand-logs
...
Store and display the output of RunCommands
2022-01-31 16:26:31 -05:00
Cole Helbling
8c67e32480
RunCommand: ensure we reset the umask
2022-01-31 12:55:36 -08:00
Cole Helbling
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
Cole Helbling
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
Cole Helbling
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
Cole Helbling
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
Cole Helbling
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
Cole Helbling
ff390e89a6
Controller/Build: remove unused parameter from showLog
2022-01-31 08:58:33 -08:00
Cole Helbling
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
Graham Christensen
dcb0c1425c
RunCommandLogs: set a UUID automatically
2022-01-31 08:58:33 -08:00
Graham Christensen
cf49a05ff5
RunCommandLogs: add a uuid to each log entry
2022-01-31 08:58:33 -08:00
Graham Christensen
94ed9ed7ff
Merge pull request #1136 from DeterminateSystems/github-status-cached-evals
...
GithubStatus: try pushing statuses for cached buildqueued/buildfinished events
2022-01-31 09:11:37 -05:00
Cole Helbling
244300c1ad
RunCommand: remove unused and problematic imports
...
Since breaking the filename construction out to a helper function,
Hydra::Model::DB is no longer used. Importing Hydra::Helper::Nix,
however, has the potential to break tests, so just use the functions we
need without importing the entire module.
2022-01-28 13:07:11 -08:00
Cole Helbling
fdf6f4d3da
RunCommand: use IPC::Run3::run3 instead
...
run3 just seems to do better handling for what we want to do, and
requires less deep-reaching changes to this plugin to get it to play
nice, as IPC::Run::run would.
2022-01-28 13:07:11 -08:00
Cole Helbling
1554750acc
RunCommand: use make_path over mkdir
...
This will make all necessary parent directories a la `mkdir -p`.
2022-01-28 13:03:15 -08:00
Cole Helbling
bf3c46ed43
RunCommand: use IPC::Run to spawn the command
...
This allows `logPath`s with spaces and other characters that might
otherwise cause problems inside a `system()` call.
2022-01-28 13:03:15 -08:00
Cole Helbling
bb16f4fb10
RunCommand: set umask when creating log paths
...
This uses the somewhat restrictive umask of 0027 so that people outside
the user or group cannot read the files. This also helps to inhibit
TOCTOU where someone else has a handle to our file before we chmod it
and after we close it.
2022-01-28 13:03:15 -08:00
Cole Helbling
5d3912962b
RunCommand: use helper functions to ensure filenames and paths are the same
...
Otherwise, it's possible someone updates the format in one place but not
the others, leading to broken or incorrect functionality.
2022-01-28 13:03:15 -08:00
Cole Helbling
14090fbb86
runcommand-log.tt: init
2022-01-28 13:03:15 -08:00
Janne Heß
796ce165d4
RunCommand: Allow displaying command output
2022-01-28 13:03:15 -08:00
Janne Heß
4cb5e6cd94
RunCommand: Capture the output of the commands
2022-01-28 13:00:17 -08:00
Graham Christensen
ef362e92d1
GithubStatus: try pushing statuses for cached buildqueued/buildfinished events
2022-01-25 12:42:28 -05:00
Graham Christensen
44cd890ae3
Merge pull request #1130 from DeterminateSystems/prompt-password
...
hydra-create-user: support prompting for password
2022-01-21 15:38:39 -05:00
Graham Christensen
b8f72d7ff2
LDAP support: require the prefix 'hydra_' to match documentation
2022-01-21 10:48:04 -05:00
Graham Christensen
3a6c25489c
Hydra::Helper::Nix: expose a captureStdoutStderrWithStdin, make it available in tests
2022-01-21 10:40:06 -05:00
Graham Christensen
d4fe7e55dd
Hydra::Helper::Nix: sort exported functions
2022-01-21 10:40:06 -05:00
Graham Christensen
8c50cd06e4
machines: ensure the jobset name is present
2022-01-15 17:11:08 -05:00
Graham Christensen
c8dc6a9419
Plugins: get project and jobset information from the project and jobset tables
2022-01-15 15:58:02 -05:00
Graham Christensen
c539deea99
builds: add a build->project func to get the project via the jobset
2022-01-15 15:58:02 -05:00
Graham Christensen
f120909547
builds: drop project, jobset columns
...
Indexes were haphazardly dropped.
2022-01-15 15:58:02 -05:00
Graham Christensen
17c6bd4fd8
DeclarativeJobsets: get the jobset name from the jobset table
2022-01-15 13:46:32 -05:00
Graham Christensen
b2cdde0901
DeclarativeJobsets: test basic functionality
2022-01-15 13:46:32 -05:00
Graham Christensen
2abcd84931
Merge pull request #1115 from DeterminateSystems/project-jobset/builds-json-repr
...
Project jobset: update builds json repr
2022-01-15 12:09:45 -05:00
Graham Christensen
6bb9adc1a5
Builds: get the project and jobset names from the their tables
2022-01-14 22:45:26 -05:00
Graham Christensen
f4c4b496d8
Projects: delete: delete all builds first
...
Deleting jobsets first would fail because buildmetrics has an FK
to the jobset. However, the jobset / project relationship is not
marked as CASCADE.
Deleting all the builds automatically cascades to delete
buildmetrics, so deleting the relevant builds first, then deleting
the jobset solves it.
2022-01-14 20:37:55 -05:00
Graham Christensen
c7c4759600
search: fix references to jobset / project info
2022-01-14 16:38:25 -05:00
Graham Christensen
42a871e413
Merge pull request #1111 from DeterminateSystems/project-jobset/queue-summary-machines
...
Project jobset columns: fixup /queue-summary and /machines
2022-01-14 15:34:43 -05:00
Graham Christensen
8a663f2cf8
machines: fixup refs
2022-01-14 15:23:19 -05:00
Graham Christensen
c945529f05
queue summary: fix refs
2022-01-14 15:23:19 -05:00
Graham Christensen
a81e358016
API: test api/push-github
2022-01-14 14:57:32 -05:00
Graham Christensen
20db82b001
API test /api/push
2022-01-14 14:57:24 -05:00
Graham Christensen
fe095a56c5
API: test /nrbuilds and fix jobset / project references
2022-01-14 14:57:15 -05:00
Graham Christensen
86473f4b3c
API: fixup filtering latestbuilds by project and jobset
2022-01-14 14:57:10 -05:00