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
ba96a13407
Record metrics when getting the closure to localhost
2022-01-21 15:38:05 -05:00
Graham Christensen
7e9e82398d
build-remote: copy missing paths from the binary cache to localhost
...
In a Hydra instance I saw:
possibly transient failure building ‘/nix/store/X.drv’ on ‘localhost’:
dependency '/nix/store/Y' of '/nix/store/Y.drv' does not exist,
and substitution is disabled
This is confusing because the Hydra in question does have substitution enabled.
This instance uses:
keep-outputs = true
keep-derivations = true
and an S3 binary cache which is not configured as a substituter in the nix.conf.
It appears this instance encountered a situation where store path Y was built
and present in the binary cache, and Y.drv was GC rooted on the instance,
however Y was not on the host.
When Hydra would try to build this path locally, it would look in the binary
cache to see if it was cached:
(nix)
439 bool valid = isValidPathUncached(storePath);
440
441 if (diskCache && !valid)
442 // FIXME: handle valid = true case.
443 diskCache->upsertNarInfo(getUri(), hashPart, 0);
444
445 return valid;
Since it was cached, the store path was considered Valid.
The queue monitor would then not put this input in for substitution, because
the path is valid:
(hydra)
470 if (!destStore->isValidPath(*i.second.path(*localStore, step->drv->name, i.first))) {
471 valid = false;
472 missing.insert_or_assign(i.first, i.second);
473 }
Hydra appears to correctly handle the case of missing paths that need
to be substituted from the binary cache already, but since most
Hydra instances use `keep-outputs` *and* all paths in the binary cache
originate from that machine, it is not common for a path to be cached
and not GC rooted locally.
I'll run Hydra with this patch for a while and see if we run in to the
problem again.
A big thanks to John Ericson who helped debug this particular issue.
2022-01-21 15:26:45 -05:00
Graham Christensen
e351054f61
Merge pull request #1129 from DeterminateSystems/fixup-argon2
...
Fixup argon2 instructions in hydra-create-user
2022-01-21 13:01:37 -05:00
Graham Christensen
0eeced7f08
hydra-create-user: Warn that creating users with a plaintext password is deprecated
2022-01-21 12:56:15 -05:00
Graham Christensen
98928a4125
fixups
2022-01-21 12:52:06 -05:00
Graham Christensen
76fbde6d6b
Set noecho when reading passwords
2022-01-21 11:11:09 -05:00
Graham Christensen
b8f72d7ff2
LDAP support: require the prefix 'hydra_' to match documentation
2022-01-21 10:48:04 -05:00
Graham Christensen
bb893d0bd5
hydra-create-user: support prompting for passwords
...
I'm not sure this is a good implementation as-is. It does work,
but the password gets echo'd to the screen. I tried to use IO::Prompt
but IO::Prompt really seems to want to read the password from ARGV.
2022-01-21 10:40:56 -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
4945306a2b
hydra-create-user: make docs about using --password-hash better
2022-01-21 10:39:22 -05:00
John Ericson
e7a1ae87aa
simplify, computeFSClosure
can take a set now
2022-01-20 14:53:01 -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
9dc40e0816
evaluator: don't save project, jobset on builds
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
1caff3a250
Merge pull request #1117 from DeterminateSystems/project-jobset/queue-runner
...
queue-runner: track jobsets by ID
2022-01-15 15:57:14 -05:00
Graham Christensen
9671d4d135
Merge pull request #1119 from DeterminateSystems/project-jobset/update-gc-roots
...
Project jobset: update-gc-roots
2022-01-15 15:57:06 -05:00
Graham Christensen
7544d4ff47
hydra-update-gc-roots: get project and jobset information from the project and jobset tables
2022-01-15 14:26:45 -05:00
Graham Christensen
72c3110002
queue-runner: track jobsets by ID
2022-01-15 14:06:00 -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
8c3c573953
hydra-eval-jobset: fixup old reference to project / jobset columns
2022-01-15 12:32:16 -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
31c6c26121
common.tt: fixup refs
2022-01-14 16:49:58 -05:00
Graham Christensen
c7c4759600
search: fix references to jobset / project info
2022-01-14 16:38:25 -05:00
Graham Christensen
0b33550871
search.tt: fixup project and jobset reference
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
Graham Christensen
1f49a5af66
Fixup project name, jobset name, in buildToHash
2022-01-14 14:57:00 -05:00
Graham Christensen
97596c3e93
buildListColumns: remove project, jobset.
2022-01-14 12:48:48 -05:00
Graham Christensen
2803f06e6e
CatalystUtils::buildListColumns: add jobset_id
2022-01-14 11:28:39 -05:00
Graham Christensen
12ff981d24
Builds: LatestSucceeded*: remove project, jobset references
2022-01-14 11:28:39 -05:00
Graham Christensen
5c5ecdb9fc
Helper::Nix::isLocalStore: a file store is local
2022-01-14 11:28:39 -05:00
Graham Christensen
e019028ce9
common.tt: access project and jobset names from respective tables
2022-01-14 11:28:39 -05:00
Graham Christensen
4086f3bafd
Result::Projects: give a builds method to access all of a project's builds
2022-01-14 11:28:39 -05:00
Graham Christensen
29f9e30b10
Merge pull request #1107 from DeterminateSystems/runcommand/project-jobset-name
...
RunCommand: update the source of project and jobset names
2022-01-14 09:26:07 -05:00
Graham Christensen
42edd3a9d8
hydra-notify: respond to cached_build_queued
2022-01-14 09:13:17 -05:00
Graham Christensen
6b7f1da11e
hydra-notify: operate on cached_build_finished events
2022-01-14 09:13:17 -05:00
Graham Christensen
5b35a597b4
RunCommand: update project / jobset name refs
2022-01-13 20:44:51 -05:00
Maximilian Bosch
a18b487403
hydra-queue-runner: support store URIs declaring an alternate store location
...
When having a builder like this in `/etc/nix/machines`
ssh://mfbuild?remote-store=/home/bosch/store
Hydra cannot build there since it tries to pass the entire value to
`ssh(1)` which doesn't work. Also, an alternate store-location is e.g.
used if the user isn't a trusted user on the remote system and thus
cannot use `/nix/store`.
If such a URI is given, Hydra will now add a `--store /home/bosch/store`
to the `ssh`-command to select the appropriate location remotely.
2022-01-12 15:56:05 +01:00
Graham Christensen
96b2200895
hydra-notify: sort subscriptions
2022-01-11 13:28:04 -05:00
Graham Christensen
4da80e736e
hydra-eval-jobset: send notifications when cached queued / finished builds are submitted
2022-01-11 13:28:04 -05:00
Graham Christensen
f30ca3c423
showJobName: use jobset/project columns
2022-01-11 11:51:31 -05:00
Graham Christensen
ceb6ea252a
CatalystUtils.pm: don't use Hydra::Helper::Nix
...
Using it causes database information to get fixated early, before tests can set a
new database. We only used it in one case, and that is an absolute reference anyway. The
tests for channel generation are passing, and that uses
[requireLocalStore, so this should be fine.
2022-01-11 11:47:42 -05:00
Cole Helbling
9b12a88d81
BuildDiff: ensure buildstatus is defined
...
buildstatus won't be defined if e.g. a build is queued but none have
failed.
2022-01-10 12:11:06 -08:00
Cole Helbling
b98dbe01c3
BuildDiff: slight cleanup
...
Remove debugging Data::Dumper import, make comment describing function
inputs more readable.
2022-01-10 12:11:06 -08:00
Cole Helbling
ef6a2c96e7
JobsetEval: add the result of buildDiff to $c->stash
2022-01-10 12:11:06 -08:00
Cole Helbling
98375e9086
BuildDiff: bring back the sort
2022-01-10 12:11:05 -08:00
Cole Helbling
ceb81e7d78
BuildDiff: actual list reference to $builds2
2022-01-10 12:11:05 -08:00
Cole Helbling
458214381d
BuildDiff: document what the inputs mean
...
They were tripping me up, so it helped to know exactly what they were at
the ~point they're used.
2022-01-10 12:11:05 -08:00
Cole Helbling
ff12218d02
BuildDiff: cleanup imports and make slightly more readable
2022-01-10 12:11:05 -08:00
Cole Helbling
ec98bdaaaa
BuildDiff: move cmdBuilds from Controller/JobsetEval
2022-01-10 12:11:05 -08:00
Cole Helbling
0c51f3ca7d
BuildDiff: make actual hash ref
2022-01-10 12:11:05 -08:00
Cole Helbling
1349887974
BuildDiff: split out from JobsetEval GET impl
2022-01-10 12:11:05 -08:00
Cole Helbling
aba0422865
JobsetEval: allow restarting failed builds even with no eval to compare to
2022-01-10 12:10:56 -08:00
Graham Christensen
98c88a4dbf
Merge pull request #1097 from DeterminateSystems/api-test-warnings
...
Api test warnings: clean up
2022-01-10 14:03:38 -05:00
Graham Christensen
265908c1cd
Merge pull request #1099 from helsinki-systems/feat/dark-theme
...
Provide a dark theme when the user prefers it
2022-01-10 14:01:36 -05:00
Janne Heß
680cd43e40
Provide a dark theme when the user prefers it
2022-01-10 19:33:51 +01:00
Graham Christensen
e254b62f13
Merge pull request #1096 from DeterminateSystems/pathinput-revision-hash
...
PathInput: make the hash part of the revision
2022-01-10 13:32:58 -05:00
Janne Heß
a69693a832
hydra-eval-jobset: Fix two minor bugs
...
I'm honestly too lazy to create two commits for fixing these one-line
issues so here's one.
The first hunk fixes the name of the projectName input. This is relevant
now because it gets logged and the log message looks stupid when there
is an input without a name.
The second hunk fixes a warning when using declarative non-flake
jobsets. The implementation may look weird but it's just the same as the
logical implication operator of nix.
2022-01-10 18:28:41 +01:00
Graham Christensen
3874db4fb7
PathInput: make the hash part of the revision
2022-01-10 11:23:22 -05:00
Graham Christensen
832fa8c73d
Controller/Jobset: make some warnings about undef's go away
2022-01-10 10:33:33 -05:00
Graham Christensen
e72d2225e9
Merge pull request #1094 from helsinki-systems/feat/print-whats-evaluated
...
hydra-eval-jobset: Print the jobset that is evaluated
2022-01-10 09:29:46 -05:00
Janne Heß
22f9045a03
Merge branch 'master' into feat/print-whats-evaluated
2022-01-10 13:45:57 +01:00
Janne Heß
f3d77c3e6b
hydra-eval-jobset: Print the jobset that is evaluated
...
This is useful for systems that use concurrent evals
2022-01-10 13:44:07 +01:00
Graham Christensen
1505a56a70
build.tt: only show RunCommandLogs tab if there are any to show
2022-01-07 15:14:02 -05:00
Graham Christensen
2f382ba067
Add migration 79: RunCommand logs
2022-01-07 15:05:33 -05:00
Graham Christensen
fe149613b3
Builds page: show RunCommand logs
2022-01-07 15:05:33 -05:00
Graham Christensen
a7aeb766aa
RunCommandLogs: add a helper for if it failed with an exec error
2022-01-07 15:05:33 -05:00
Graham Christensen
d849856dcd
RunCommandLogs: add helpers for if it is running/failed/signaled
2022-01-07 15:05:33 -05:00
Graham Christensen
c81acbf93e
RunCommandLogs: test recording a signaled process without a core dump
2022-01-07 15:05:33 -05:00
Graham Christensen
d003fec8a5
RunCommandLogs: add a did_succeed helper
2022-01-07 15:05:33 -05:00
Graham Christensen
5bb3e2be78
Record the errno if exec fails
2022-01-07 15:05:33 -05:00
Graham Christensen
4ce8239cea
RunCommand: create run logs for each execution
2022-01-07 15:05:33 -05:00
Graham Christensen
52843195db
RunCommandLogs: init table
2022-01-07 15:05:33 -05:00
Graham Christensen
9708f6bf6f
Fetch the tracker HTML from the config file, remove HYDRA_TRACKER
...
The indentation in the hydra.conf makes it possible to include multi-line
strings without it being likely that the contents of the tracker
is mis-parsed or interrupts tho config parser.
It isn't impossible / foolproof probably, but it shouldn't be likely.
2022-01-05 15:27:21 -05:00
Graham Christensen
2db422f7b0
Event: interested -> interestedIn
2021-12-21 20:57:53 -05:00
Graham Christensen
e84bbc7f90
hydra-eval-jobset: notify build_queued
2021-12-21 20:57:53 -05:00
Graham Christensen
a14501c616
Tasks: only execute the event if the plugin is interested in it
2021-12-21 20:57:53 -05:00
Graham Christensen
633fc36d6a
TaskDispatcher: pre-declare the notify_no_such_plugin metric
2021-12-21 20:57:53 -05:00
Graham Christensen
d195e545f5
hydra-notify: listen for build_queued events
2021-12-21 20:57:53 -05:00
Graham Christensen
cf514baaf2
hydra-notify: track the duration of handling an event
...
Currently we only track how long individual plugins take.
With #1083 we stop executing a lot of plugins, but we
don't have a way to measure its practical impact on the
execution time of handling events.
2021-12-21 19:46:19 -05:00
Graham Christensen
f2f8d571f3
queue-runner-status: fixup from perlcritic-level-2
...
>
> from_json was legacy / deprecated. This was the only use.
2021-12-15 17:24:23 -05:00
Graham Christensen
e43f487157
perlcritic: return undef in list context too
2021-12-14 10:24:53 -05:00
Graham Christensen
aa7b37838a
PerlCritic: MoreUtils -> SomeUtils
2021-12-14 10:16:25 -05:00
Graham Christensen
a658b80863
perlcritic: Readonly -> ReadonlyX
2021-12-14 10:16:25 -05:00
Graham Christensen
30a7f068b7
AttributeSet helper: skip wantarray
2021-12-14 10:16:25 -05:00
Graham Christensen
d2f03ca050
fixup foreach
2021-12-14 10:16:25 -05:00
Graham Christensen
4dfe787bc2
perlcritic: each() called at line 752, column 35. The each function may cause undefined behavior when operating on the hash while iterating. Use a foreach loop over the hash's keys or values instead.
2021-12-14 10:16:25 -05:00
Graham Christensen
7dcf6a01c6
JSON -> JSON::MaybeXS
2021-12-13 15:37:56 -05:00