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
Graham Christensen
26b197ea62
RunCommand: calculate all the commands to run against before starting
2021-12-08 20:29:32 -05:00
Graham Christensen
2ce0ab9f51
RunCommand: move JSON generation to its own function
2021-12-08 20:09:48 -05:00
Graham Christensen
7a5b8a38d9
builds page: capitalize tabs ( #1072 )
...
Make tabs Title Case
2021-12-08 20:02:14 -05:00
Graham Christensen
2cbeca5c44
Merge pull request #1071 from DeterminateSystems/log-fetches-evals
...
hydra-eval-jobset: log fetches and evaluations
2021-12-08 16:00:29 -05:00
Graham Christensen
264092169c
hydra-eval-jobset: log fetches and evaluations
2021-12-08 09:25:27 -05:00
Cole Helbling
47cabac4bf
hydra-eval-jobset: fix use of uninitialized value
...
This happens with flake jobsets for obvious reasons (namely, that nixexprinput
and nixexprpath may be undefined for a flake jobset).
12:38:59 hydra-evaluator.1 | Use of uninitialized value $args[0] in join or string at /home/vin/workspace/vcs/hydra/src/script/hydra-eval-jobset line 648.
12:38:59 hydra-evaluator.1 | Use of uninitialized value $args[1] in join or string at /home/vin/workspace/vcs/hydra/src/script/hydra-eval-jobset line 648.
2021-12-03 12:12:53 -08:00
Cole Helbling
5659d2982c
Hydra/Controller/Root: remove deprecated LocalRegex
...
11:38:20 hydra-server.1 | DEPRECATION WARNING: The Regex dispatch type is deprecated.
11:38:20 hydra-server.1 | It is recommended that you convert Regex and LocalRegex
11:38:20 hydra-server.1 | methods to Chained methods. at /nix/store/aa6gw57fnahd4824pbhmvcs0jlypmynq-hydra-perl-deps/lib/perl5/site_perl/5.32.1/Catalyst/DispatchType/Regex.pm line 210.
2021-12-03 12:12:53 -08:00
Cole Helbling
d56815cae6
Hydra/Helper/CatalystUtils: default trim arg to empty string
...
12:34:12 hydra-server.1 | Use of uninitialized value $s in substitution (s///) at /home/vin/workspace/vcs/hydra/src/script/../lib/Hydra/Helper/CatalystUtils.pm line 283, <$fh> line 1.
2021-11-30 13:10:31 -08:00
Cole Helbling
78233b8083
Hydra: Unicode::Encoding is auto-applied
...
11:28:20 hydra-server.1 | [warn] Unicode::Encoding plugin is auto-applied, please remove this from your appclass and make sure to define "encoding" config
2021-11-30 12:42:05 -08:00
Cole Helbling
f26b3e1779
Hydra/Event: fix scalar context warning
...
12:10:15 hydra-notify.1 | %channels_to_events{...} in scalar context better written as $channels_to_events{...} at /home/vin/workspace/vcs/hydra/src/lib/Hydra/Event.pm line 20.
2021-11-30 12:42:01 -08:00
Graham Christensen
b06457c75c
Titles of pages: make project:jobset:job names clickable
...
But don't make the final element clickable when we're looking at that
thing.
2021-11-22 20:20:06 -05:00
Graham Christensen
f1343b3a4c
layout.tt: support a title with HTML in it
...
By default, title is escaped. To support links in titles, support
providing the title with HTML in it.
2021-11-22 13:38:53 -05:00
Graham Christensen
03323f6ef1
TT: add helpers for linking to jobs, jobsets, and projects, and for generating colon separated names.
2021-11-22 13:38:53 -05:00
Graham Christensen
ecb4697930
update-dbix: overwrite modifications
...
Prevents authors from mistakenly corrupting the hashes
2021-11-19 15:02:07 -05:00
Eelco Dolstra
9ae676072c
Merge pull request #1051 from DeterminateSystems/restart-cancel-resultset-p2
...
Validate and fix canceling builds
2021-10-27 18:22:20 +02:00
Graham Christensen
d19890a4e1
JobsetEval/cancel: test & fix
2021-10-27 11:43:36 -04:00
Graham Christensen
ef9a9fa481
Merge pull request #1025 from lukegb/hydra-better-errors
...
Produce better errors for failing jobsets
2021-10-26 12:35:45 -04:00
Luke Granger-Brown
67ebce8493
Output evaluation errors without crashing if aggregate job is broken.
...
At the moment, aggregate jobs can easily break and cause the entire
evaluation to fail, which is not ideal. For Nixpkgs, we do have some
important aggregate jobs (like `tested`), but for debugging and building
purposes it's still useful to get a partial result even if the channel
won't actually advance.
This commit changes the behaviour of hydra-eval-jobs such that it
aggregates any errors found during the construction of an aggregate, and
will instead annotate the job with the evaluation failure such that it
shows up in a "cleaner" way.
There are really two types of failure that we care about: one is where
the attribute just ends up missing altogether in the final output, and
also where the attribute is in the output but fails to evaluate. Both
are handled here.
Note that this does mean that the same error message may be output
multiple times, but this aids debuggability because it'll be much
clearer what's blocking the job from being created.
2021-10-26 10:14:34 +01:00
Graham Christensen
ffedbe5996
restart/cancelBuilds: always pass resultsets explicitly
2021-10-25 22:21:48 -04:00
Graham Christensen
592fef9d82
Merge pull request #1049 from DeterminateSystems/drop-systemtypes
...
SystemTypes: drop database table.
2021-10-24 21:46:57 -04:00
Graham Christensen
802a5dfe68
Merge pull request #1048 from DeterminateSystems/fixup-1003
...
Hydra::Helper::Nix::getMachines: add a test
2021-10-24 21:38:38 -04:00
Graham Christensen
ff888032eb
SystemTypes: drop database table. It was originally removed in #65 , but put back in fcd511c4de
, and now totally unused.
2021-10-24 21:38:04 -04:00
Graham Christensen
5fbf1470bd
(perl) machines file: support machine lines with multiple spaces between fields
2021-10-24 21:30:53 -04:00
Graham Christensen
b817124337
Hydra::Helper::Nix::getMachines: add a test
...
Fix parsing breakage from #1003 : assigning the lines to $lines broke chomp and the filters.
This test validates the parsing works as expected, and also fixes
a minor bug where '-' in features isn't pruned, like in the C++
repo.
2021-10-23 22:53:55 -04:00
Graham Christensen
8cf158b7a9
Revert "Fix unhelpful error messages in aggregate jobs."
2021-10-23 22:23:29 -04:00
Graham Christensen
3516950d3c
Merge pull request #825 from samueldr/fix/unhelpful-errors-in-aggregates
...
Fix unhelpful error messages in aggregate jobs.
2021-10-23 20:34:50 -04:00
Graham Christensen
d98d74fa4f
perlcritic: doesn't like prototypes
2021-10-20 13:09:39 -04:00
Graham Christensen
7095d00608
perlcritic: make all open() calls three-argument
...
Two-argument calls end up parsing the second argument to guess what
should happen, three-arg parses ... less?
2021-10-20 13:09:39 -04:00
Graham Christensen
f0d0358ee4
Merge pull request #1043 from DeterminateSystems/perl-warnings
...
Fixup Perl warnings around undefined variables
2021-10-20 10:48:05 -04:00
Graham Christensen
a887b3d346
fixup! EmailNotification: address Use of uninitialized value in numeric eq (==)
2021-10-20 10:40:08 -04:00
Graham Christensen
a36d23c1dd
fixup! BitBucketStatus: address Use of uninitialized value in numeric eq (==)
2021-10-20 10:40:08 -04:00
Graham Christensen
3c38629fad
GitHubPulls: output sorted json without using jq
2021-10-20 10:05:31 -04:00
Graham Christensen
30d36da057
CoverityScan: fixup tarballshandle introduced in 21e1ff0da1
2021-10-19 22:04:57 -04:00
Graham Christensen
093e235bf0
GithubRefs: fixup "my" variable $type masks earlier declaration in same scope
2021-10-19 22:02:41 -04:00
Graham Christensen
0f8d02894a
hydra-eval-jobset: Scalar value @declInputs[0] better written as $declInputs[0] at hydra-eval-jobset line 570.
2021-10-19 21:52:39 -04:00
Graham Christensen
31cf249aed
S3Backup: check for bzip2 and xz Nix Config support (Use of uninitialized value ::Config::xz in concatenation)
2021-10-19 21:52:39 -04:00
Graham Christensen
bf692c9e8c
BitBucketStatus: address Use of uninitialized value in numeric eq (==)
2021-10-19 21:52:39 -04:00
Graham Christensen
4fd90ec784
EmailNotification: address Use of uninitialized value in numeric eq (==)
2021-10-19 21:52:39 -04:00
Graham Christensen
01112e9bd3
GitInput: deal with undefined deepClone
2021-10-19 21:52:39 -04:00
Eelco Dolstra
888ba467fd
/eval: Return more columns
...
Fixes #1038 .
2021-10-12 12:41:37 +02:00
Graham Christensen
4c8279044b
Merge pull request #1026 from DeterminateSystems/constituents
...
add api endpoint: /build/<id>/constituents
2021-09-28 09:21:21 -04:00
Eelco Dolstra
19e668b7cd
Merge pull request #981 from jonringer/pure_eval
...
Allow for evaluator_pure_eval to be configured
2021-09-27 20:25:01 +02:00
Eelco Dolstra
2745226ada
Merge pull request #1003 from DeterminateSystems/perlcritic-level-4
...
perlcritic: level 4
2021-09-27 20:23:55 +02:00
Eelco Dolstra
66375fd2d9
Fix 'Error loading tab: 0 error' with uBlock Origin
...
/metrics-tab matches a rule in one of uBlock Origin's default
blocklists, so let's name it something else.
2021-09-27 17:42:56 +02:00
Eelco Dolstra
9bb3e30a46
Fix building $(srcdir)/static
...
Fixes
mv: cannot move './static/bootstrap-4.3.1-dist' to './static/bootstrap/bootstrap-4.3.1-dist': Directory not empty
when 'make' is called more than once.
2021-09-27 17:01:25 +02:00
Graham Christensen
c60c8d10ea
add api endpoint: /build/<id>/constituents
...
Returns a list of constituent builds
2021-09-24 16:30:44 -04:00
Maximilian Bosch
255d4a91bc
jobset-eval: pass full
parameter to "Compare to..."
...
When I take a look at *all* failing builds (by clicking at `[...] more
jobs omitted`) and I try to compare the failures to another jobset, I'd
like to still view *all* failing builds in the compare-view.
This wasn't the case before since the `full=`-param was ignored by the
compare-buttons.
2021-09-08 23:23:29 +02:00
Graham Christensen
741590c923
perlcritic: explicitly assign the result of readdir/file reads
2021-09-07 21:55:55 -04:00
Graham Christensen
85bb1c7ef9
(perlcritic) JSON::Any -> JSON::MaybeXS
2021-09-07 21:55:55 -04:00
Graham Christensen
c603ae35f0
perlcritic: Don't conditionally declare variables
2021-09-07 21:35:01 -04:00
Graham Christensen
b1879132af
ResultSet::TaskRetries: add missing method, get_retryable_task
...
Yet again, manual testing is proving to be insufficient. I'm pretty
sure I wrote this code but lost it in a rebase, or perhaps the switch
to result classes.
At any rate, this implements the actual "fetch a retry row and run it"
for the hydra-notify daemon.
Tested by hand.
2021-09-07 11:12:10 -04:00
Graham Christensen
d6aa3f8d15
Merge pull request #1011 from DeterminateSystems/retryable-notifications
...
Retryable notifications
2021-09-07 10:04:32 -04:00
Graham Christensen
21e1ff0da1
perlcritic: don't open files as bare words
2021-09-06 22:20:17 -04:00
Graham Christensen
efd1d78b97
Hydra::Helper::Nix: getHydraNotifyPrometheusConfig fixup strict warning around double-declaring cfg
2021-09-06 22:13:33 -04:00
Graham Christensen
c880888f1e
File::Slurp -> File::Slurper
2021-09-06 22:13:33 -04:00
Your Name
c54629b732
Helper/Nix.pm: perlcritic statsd in scalar context
2021-09-06 22:13:33 -04:00
Your Name
4677a7c894
perlcritic: use strict, use warnings
2021-09-06 22:13:33 -04:00
Graham Christensen
dd06ab7a99
Merge pull request #1004 from DeterminateSystems/avoid-a-b
...
Avoid $a, $b
2021-09-06 21:35:17 -04:00
Graham Christensen
ca4b8d449f
BitBucketStatus: tbuild -> build (typo)
2021-09-06 21:12:13 -04:00
Graham Christensen
d9df26ac5a
POD: improve wording, punctuation, caps
...
Co-authored-by: Cole Helbling <cole.helbling@determinate.systems>
2021-09-03 09:13:34 -04:00
Graham Christensen
ea3ae0693e
Hook up the retryable tasks with hydra-notify
2021-09-02 10:06:26 -04:00
Graham Christensen
c0e86faa78
hydra-notify: call TaskRetries->save_task if a task fails
2021-09-02 10:06:26 -04:00
Graham Christensen
b0055a23df
TaskDispatcher: Support re-queueing tasks, and dropping tasks after 100 failures.
2021-09-02 10:06:26 -04:00
Graham Christensen
d0b0fc21b3
ResultSet::TaskRetries: teach about saving tasks
2021-09-02 10:06:26 -04:00
Graham Christensen
147fa4d029
Result::TaskRetries: Teach about requeue
2021-09-02 10:06:26 -04:00
Graham Christensen
42c2d2f387
Hydra::Math: add an exponential_backoff function
2021-09-02 10:06:26 -04:00
Graham Christensen
29738364fb
ResultSet::TaskRetries: add get_seconds_to_next_retry
...
Get the number of seconds before the next retriable task is ready.
This number is specifically intended to be used as a timeout, where
`undef` means never time out.
2021-09-02 10:06:26 -04:00
Graham Christensen
c4134c8e84
TaskRetries: init table
2021-09-02 10:06:26 -04:00
Graham Christensen
1f2adf61aa
hydra-notify: extract runPluginsForEvent to a TaskDispatcher
2021-09-02 10:06:26 -04:00
Graham Christensen
fa57fb8f25
hydra.sql: explain update-dbix.pl map
2021-08-26 22:10:19 -04:00
Graham Christensen
397d13a300
DBIx::Class: migrate to use_namespaces
...
This gives us a place to put helper functions that act on entire
tables, not just individual records.
This should be a backwards compatible change, except in places we're
manually using result class names.
2021-08-26 12:37:19 -04:00
Your Name
24467a7bde
Nix::getHydraNotifyPrometheusConfig: print errors if the configuration provided is invalid.
2021-08-24 11:35:38 -04:00
Your Name
4ebdcc290e
fixup! hydra-notify: pre-declare metrics
2021-08-24 10:57:23 -04:00
Your Name
45e8fa5319
hydra-notify: support sending diagnostic dumps to STDERR on request
2021-08-24 10:56:13 -04:00
Your Name
de2282bcf4
hydra-notify: print out log lines indicating it is or is not launching the exporter
2021-08-24 10:56:13 -04:00
Your Name
5c1228e141
hydra-notify: pre-declare metrics
2021-08-24 10:56:13 -04:00
Your Name
6d7ee27d25
hydra-notify: make the prometheus endpoint configurable, default-off
2021-08-24 10:56:13 -04:00
Your Name
5d0ad5f649
hydra-notify: initial scratch take of prometheus events
2021-08-24 10:56:12 -04:00
Graham Christensen
e9ba0b56f6
BuildFinished : $b -> $build (perlcritic)
2021-08-20 21:52:32 -04:00
Graham Christensen
5e10648a98
CoverityScan: $b -> $build (perlcritic)
2021-08-20 21:52:32 -04:00
Graham Christensen
c929f5cac0
SlackNotification: $build -> $topbuild, $b -> $build (perlcritic)
2021-08-20 21:52:32 -04:00
Graham Christensen
b4f9807290
GithubStatus: $build -> $topbuild, $b -> $build (perlcritic)
2021-08-20 21:52:32 -04:00
Graham Christensen
5c9d8794b1
GiteaStatus: $build -> $topbuild, $b -> $build (perlcritic)
2021-08-20 21:52:32 -04:00
Graham Christensen
3920bf1df3
BitBucketStatus: $build -> $topbuild, $b -> $build (perlcritic)
2021-08-20 21:52:32 -04:00
Graham Christensen
bcf37ab705
GitlabStatus: $build -> $topbuild, $b -> $build (perlcritic)
2021-08-20 21:52:32 -04:00
Graham Christensen
b4a19fd3c8
HIpChatNotification: $build -> $topbuild, $b -> $build (perlcritic)
2021-08-20 21:52:32 -04:00
Graham Christensen
0d4ce15c62
EmailNotification: $build -> $topbuild, $b -> $build (perlcritic)
2021-08-20 21:52:32 -04:00
Graham Christensen
0f88014631
CircleCiNotification: $b -> $build (perlcritic)
2021-08-20 21:52:32 -04:00
Graham Christensen
b6714cdce3
JobsetEval: $a, $b to $left, $right (perlcritic)
2021-08-20 21:52:32 -04:00
Graham Christensen
d0fb3cbf8f
Job: $b -> $build (perlcritic)
2021-08-20 21:52:32 -04:00
Graham Christensen
1cda08351f
CatalystUtils: rename $b to $builds (perlcritic)
2021-08-20 21:52:32 -04:00
Your Name
4632132d02
fixup perlcritic: indirect new
...
> Subroutine new called using indirect syntax at line 14, column 14. See page 349 of PBP. (Severity: 5)
2021-08-20 11:39:19 -04:00
Your Name
6e65c3b320
hydra-notify: fixup printing of build IDs
...
Used to print:
sending notifications for build Hydra::Model::DB::Builds=HASH(0x124cf960)->id...
Now it prints:
sending notifications for build 123...
2021-08-16 16:09:05 -04:00
Your Name
2c50227082
hydra-notify: properly call new_event
2021-08-16 15:52:25 -04:00
Your Name
e572a5e576
hydra-notify: use Hydra::Event
2021-08-16 15:52:14 -04:00
Graham Christensen
fda3ed1d4e
Merge pull request #999 from DeterminateSystems/fixup/pr-998
...
lib/makefile: include Event/*.pm
2021-08-16 14:13:18 -04:00
Your Name
cfd3034af8
lib/makefile: include Event/*.pm
2021-08-16 14:04:48 -04:00
Graham Christensen
fa6d7abc13
hydra-notify: move BuildFinished processing to an Event
2021-08-13 16:51:29 -04:00
Graham Christensen
4a1389e36e
hydra-notify: move StepFinished processing to an Event
2021-08-13 16:51:29 -04:00
Graham Christensen
4fdb20d3bd
hydra-notify: move BuildStarted processing to an Event
2021-08-13 16:51:29 -04:00
Graham Christensen
10e85e3422
hydra-notify: Create a helper for running each plugin on an event
2021-08-13 16:51:29 -04:00
Graham Christensen
d02c6794f4
Event: teach how to execute a plugin
2021-08-13 16:51:29 -04:00
Graham Christensen
4e86e55008
Event.pm: add a new_event helper to parse and construct an Event
...
An Event will be part of many Tasks
2021-08-13 16:51:29 -04:00
Graham Christensen
64a3e75c10
Event: init structure and parse existing messages
2021-08-13 16:51:29 -04:00
Graham Christensen
a14c8ad5f8
Merge pull request #995 from DeterminateSystems/declarative-jobsets-plugin
...
Declarative jobsets: move event handling to a plugin
2021-08-12 15:56:13 -04:00
Graham Christensen
0f958f3425
Merge pull request #997 from DeterminateSystems/abstract-listener
...
Abstract over postgres' LISTEN/NOTIFY
2021-08-12 14:00:34 -04:00
Graham Christensen
5027003285
Abstract over postgres' LISTEN/NOTIFY
...
This lets us test the event loop if we wanted, and lets us
test the listening behavior in isolation.
2021-08-12 13:54:05 -04:00
Graham Christensen
593af41808
Declarative jobsets: move event handling to a plugin
...
Declarative jobsets were sort of tucked in to the event hanlder
itself. It turned out that it could have been implemented as a
plugin without much trouble.
2021-08-12 12:48:18 -04:00
Graham Christensen
9c5f317453
hydra-notify: move buildFinished query in to the function impl
...
This is more consistent with the other event handlers, of dealing
with IDs and not objects.
2021-08-12 12:30:35 -04:00
Eelco Dolstra
5edb58b314
Fix build
2021-08-10 13:47:16 +02:00
Graham Christensen
c7c322545d
Merge pull request #992 from DeterminateSystems/sql/fixup-comment
...
hydra.sql: Update comment on regeneration
2021-08-06 14:54:12 -04:00
Graham Christensen
4169f22231
update-dbix.pl: correct indentation
2021-08-06 14:40:57 -04:00
Graham Christensen
5bd8dc171b
hydra.sql: Update comment on regeneration
...
We no longer need to generate the hydra-postgres.sql document,
that is a relic from when sqlite was also supported.
2021-08-06 14:40:34 -04:00
Shay Bergmann
503b0e0b6f
Remove unnecessary comment
2021-07-26 17:16:40 +00:00
Shay Bergmann
173ecb5d92
Apply requested changes to Config.pm
2021-07-26 17:16:40 +00:00
Shay Bergmann
4f95774ca3
Factor out common options
2021-07-26 03:43:09 +00:00
Shay Bergmann
e98bd0ec8d
Comment around dupe to avoid drift
2021-07-22 23:27:21 -04:00
Shay Bergmann
54c8028ec0
Make hydra-server honor config file includes
2021-07-22 17:25:30 -04:00
Nathan van Doorn
5c47343b40
Fix deprecation warnings with libpqxx usage
2021-07-05 19:45:25 +01:00
Graham Christensen
e02f34722f
Merge pull request #887 from helsinki-systems/feat/eval-overview-duration
...
Show evaluation time in the evaluations overview
2021-06-29 10:59:02 -04:00
Janne Heß
94b88b34ae
Show evaluation time in the evaluations overview
...
Parts of this code have been authored by @grahamc
2021-06-29 16:53:10 +02:00
Jonathan Ringer
24959a3ca6
Allow for evaluator_pure_eval to be configured
2021-06-28 16:24:40 -07:00
Damien Diederen
df7dab1291
GitInput: Include deepClone option in the cache key
...
Without this commit, two jobsets using the same repository as input,
but different `deepClone` options, end up incorrectly sharing the same
"checkout" for a given (`uri`, `branch`, `revision`) tuple. The
presence or absence of `.git` is determined by the jobset execution
order.
This patch adds the missing `isDeepClone` boolean to the cache key.
The database upgrade script empties the `CachedGitInputs` table, as we
don't know if existing checkouts are deep clones. Unfortunately, this
generally forces rebuilds even for correct `deepClone` checkouts, as
the binary contents of `.git` are not deterministic.
Fixes #510
2021-06-19 17:37:40 +02:00
Graham Christensen
09ad52ab60
Document getEvals a bit
...
Also drop the $self parameter.
Co-authored-by: gustavderdrache
2021-06-16 13:15:01 -04:00
Graham Christensen
5d95abf540
getBuilds: clarify the names of evals vs. the query builder
2021-06-16 11:53:04 -04:00
Graham Christensen
bf5c76feb6
getEvals: order by the eval table's ID
...
I broke this when I added `me.` in f1e75c8bff
I added me. to disambiguate `id`, but:
* eval.id works on the per-build page
* me.id works on the other pages
* Just id works everywhere if I drop:
, prefetch => { evaluationerror => [ ] },
but this causes a query per row to collect the evaluationerror
records later, this becomes significantly slow on non-trivial
datasets.
Using evals->current_source_alias will use the correct alias
whether it is me or eval or something else.
2021-06-16 11:24:30 -04:00
Graham Christensen
71453dd341
Expose Prometheus metrics at /metrics
...
Exposes metrics:
* http_request_duration_seconds_bucket
* http_request_size_bytes_bucket
* http_response_size_bytes_bucket
* http_requests_total
with labels of action and controller to help identify popular
endpoints and their performance characteristics.
2021-06-10 20:02:42 -04:00
Graham Christensen
382ba590ad
Drop unused query from GET Build.
2021-06-01 11:47:05 -04:00
Graham Christensen
a9e4ede006
SQL: create better indexes for builds based on the jobset id
...
These are primarily used by the jobsetOverview renders.
2021-06-01 11:23:22 -04:00
Graham Christensen
719d0a6134
jobset overview: join jobsets to builds by jobset id
2021-06-01 11:19:33 -04:00
Graham Christensen
508d99d611
Join to builds via jobset_id when easy
2021-06-01 11:16:47 -04:00
Cole Helbling
45ced33ab6
Projects: don't respond with unnecessary declarative field
...
If the project isn't declarative, who cares about it in the response? After
setting the `declfile` to an empty string, everything related to declarative-
ness is wiped out, anyways.
2021-05-24 15:26:34 -07:00
Graham Christensen
3dc745de68
Merge pull request #964 from DeterminateSystems/fix-cascade
...
Jobsets: remove defunct Jobs relationship
2021-05-09 21:17:12 -04:00
Cole Helbling
7ba58ca3ea
Jobsets: remove defunct Jobs relationship
...
It appears the Jobs table was removed in
8adb433e3b
, but the Jobsets schema was never
updated to reflect this. This relationship was added in
efa1f1d4fb
, roughly 3 months prior.
Previously, one would see a message similar to the following logged when
deleting a jobset:
17:38:23 hydra-server.1 | DBIx::Class::Relationship::CascadeActions::delete(): Skipping cascade delete on relationship 'jobs' - related resultsource 'Hydra::Schema::Jobs' is not registered with this schema at /home/vin/workspace/vcs/hydra/src/script/../lib/Hydra/Controller/Jobset.pm line 106
2021-05-09 17:52:48 -07:00
Graham Christensen
67b6f0d7ed
Merge pull request #962 from DeterminateSystems/del-.jobsets
...
Project: delete the `.jobsets` jobset if project is no longer declarative
2021-05-06 11:57:34 -04:00
Cole Helbling
6107040bf5
Project: clear decltype
and declvalue
when project is no longer declarative
2021-05-06 08:47:18 -07:00
Cole Helbling
bd9c52dbd0
Project: delete the .jobsets
jobset if project is no longer declarative
...
"No longer declarative" as defined by the "Edit project" page is an empty spec
file.
2021-05-05 14:03:51 -07:00
Graham Christensen
6c1151b14a
lazy tabs: trigger the load event
...
Something in the upgrade of Bootstrap and JQuery broke lazy tab loading.
I don't understand what is providing the tab behavior, how it should
work, or what the correct fix is.
I can tell you that this patch fixes the issue: when loading a tab
with a URL fragment deep-linking to a lazily loaded tab... it now
loads.
Close #959
2021-05-05 14:42:12 -04:00
Eelco Dolstra
886e6f85e4
Merge pull request #924 from hackworthltd/fix-flake-github-status
...
Fix GitHub status update for private flakes.
2021-05-03 16:24:51 +02:00
Cole Helbling
f3947acfc4
Projects: use JSON in Schema
2021-05-02 18:25:37 -07:00
Cole Helbling
ad13d13436
Project: add declfile, decltype, declvalue to API
...
This makes it possible to create declarative projects via a PUT request, and
also exposes the currently-configured values to GET requests.
2021-05-02 17:45:14 -07:00
Cole Helbling
7c9ed6b919
Project: fix DELETE route
...
This appears to have been broken in ac3e8a4a59
,
which removed the `jobsetevals` column from the Projects schema, but didn't
update the Controller accordingly.
Fixes the test added in the previous commit.
2021-04-30 10:43:21 -07:00
Cole Helbling
03d5a858a7
Jobset: list known inputs in invalid input type response
2021-04-29 18:19:44 -07:00
Graham Christensen
8492db033e
Jobsets,JobsetInputs: use JSON
2021-04-29 08:32:47 -04:00
Cole Helbling
f1dd5d202e
Jobsets: update schema to align with the API
...
To further align with the API, we return custom JSON in order to display a
`visible` field rather than `hidden` -- a `PUT` request expects `visible`, while
a `GET` request returns `hidden`.
This also allows us to rename the `jobsetinputs` field to `inputs` for the same
reason: `PUT` expects `inputs`, while `GET` returns `jobsetinputs`.
2021-04-29 07:50:23 -04:00
Cole Helbling
d23f431889
JobsetInputs: update schema to align with the API
...
`PUT /jobsets/{project-id}/{jobset-id}` expects a JSON object `inputs` which
maps a name to a name, a type, a value, and a boolean that enables emailing
responsible parties. However, `GET /jobsets/{project-id}/{jobset-id}` responds
with an object that doesn't contain a value, but does contain a jobsetinputalts
(which is old and should be unused).
This commit aligns the two by removing the old and unused `jobsetinputalts` from
the response and replaces it with `value`.
2021-04-29 07:50:23 -04:00
Cole Helbling
fff0db10e3
ToJSON: allow custom as_json function
...
This allows us to modify what the API responds with, which in turn lets us unify
the OpenAPI specification and the actual API's responses.
2021-04-29 07:50:23 -04:00
Graham Christensen
fdb6e7dd97
fixup: return the user entity on login
2021-04-28 18:30:35 -04:00
Graham Christensen
823da22e4f
Merge pull request #937 from DeterminateSystems/flesh-out-api
...
hydra-api: flesh out Jobset, JobsetInput schemas; implement DELETE /jobset/{project-id}/{jobset-id}
2021-04-28 13:43:04 -04:00
Graham Christensen
725c9c2f81
login: redirect to the current-user page
2021-04-28 08:32:10 -07:00
Graham Christensen
d589db2ed9
login: missing parameters are 400s
2021-04-28 08:31:59 -07:00
regnat
abff212d06
Use system-features from the Nix conf in the default machine file
...
Fix #936
2021-04-28 11:43:04 +02:00
Cole Helbling
72fec31dbb
hydra-api: flesh out JobsetInput schema
2021-04-27 16:16:42 -07:00
Cole Helbling
2600810551
hydra-api: flesh out Jobset schema
...
* made all columns available via the API (except for forceeval)
* renamed flakeref to flake to unify the API with the database schema
* renamed inputs to jobsetinputs to unify the API with the database schema
2021-04-27 16:16:42 -07:00
Cole Helbling
50fab154a4
ToJSON: serialize string_columns to JSON
...
If the column is undefined, then it should be an empty string according to your
API spec.
2021-04-26 16:39:13 -07:00
Graham Christensen
f2b9649bf2
Projects: serialize enabled
and hidden
as boolean
2021-04-26 16:03:32 -07:00
Graham Christensen
4aea02e1e1
ToJSON: serialize boolean_columns to JSON boolean
2021-04-26 16:03:32 -07:00
Cole Helbling
c757867b9e
Add homepage to Projects schema
2021-04-26 15:46:30 -07:00
Graham Christensen
453b8479be
Merge pull request #927 from cole-h/nonexistent-user-400
...
Return HTTP 400 when creating Project with nonexistent user
2021-04-26 14:40:15 -04:00
Cole Helbling
47e19ba22c
Return HTTP 400 when creating Project with nonexistent user
2021-04-26 11:32:39 -07:00
Drew Hess
523d6df5b8
Fix GitHub status update for private flakes.
...
Also, if the parse fails, don't try to update the GitHub status, as
this will eventually cause rate-limiting.
2021-04-26 01:38:24 +01:00
Maximilian Bosch
21ed005c84
Make it possible to enable email notifications when creating a jobset
...
The checkbox is only enabled if `email_notification = 1` is set in
`hydra.conf`. However, when creating jobset (in contrast to the edit
form), the checkbox is always disabled because the `emailNotification`
parameter in Catalyst's stash was missing.
2021-04-24 19:48:43 +02:00
Graham Christensen
05636de7d2
hydra-init: upgrade passwords to Argon2 on startup
2021-04-16 12:32:13 -04:00
Graham Christensen
79b0ddc27d
hydra-create-user: re-hash sha1 as Argon2
2021-04-16 12:32:13 -04:00
Graham Christensen
d10d8964f2
Users: add a validation step which lets the user's password be a Argon2 hashed sha1 hash.
...
OWASP suggests expiring all passwords and requiring users to update their password.
However, we don't have a way to do this. They suggest this mechanism
as a good alternative:
https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html#upgrading-legacy-hashes
2021-04-16 12:32:13 -04:00
Eelco Dolstra
fa924ea697
Merge pull request #915 from grahamc/hydra-auth
...
Hydra auth: support Argon2, transparently upgrade hashes
2021-04-15 17:40:32 +02:00
Graham Christensen
9225be0897
Drop remaining sha1_hex references
...
Co-authored-by: Graham Christensen <graham@grahamc.com>
2021-04-15 11:35:18 -04:00
Graham Christensen
1d956be61e
hydra-create-user: support Argon2
...
Co-authored-by: Graham Christensen <graham@grahamc.com>
2021-04-15 11:35:16 -04:00
Graham Christensen
beb5be4302
Users: password changes via the web UI now use Argon2
...
Co-authored-by: Graham Christensen <graham@grahamc.com>
2021-04-15 11:35:13 -04:00
Graham Christensen
1da70030b7
Users: transparently upgrade passwords to Argon2
...
Passwords that are sha1 will be transparently upgraded to argon2,
and future comparisons will use Argon2
Co-authored-by: Graham Christensen <graham@grahamc.com>
2021-04-15 11:35:11 -04:00
Graham Christensen
29620df85e
Passwords: check in constant time
...
The default password comparison logic does not use
constant time validation. Switching to constant time
offers a meager improvement by removing a timing
oracle.
A prepatory step in moving to Argon2id password storage, since we'll need this change anyway after
for validating existing passwords.
Co-authored-by: Graham Christensen <graham@grahamc.com>
2021-04-15 11:34:56 -04:00
Graham Christensen
d4d8f1ba1b
Plugin::Authentication config: modernize
...
Some time in the last decade the plugin switched to preferring
a flatter namespace for realm config.
Co-authored-by: Graham Christensen <graham@grahamc.com>
2021-04-15 11:34:47 -04:00
Eelco Dolstra
0bee194ce9
Merge pull request #914 from Ma27/fix-remote-builds
...
Fix `std::bad_alloc` errors for remote builds
2021-04-15 17:05:54 +02:00
Maximilian Bosch
2808227eb7
Fix std::bad_alloc
errors for remote builds
...
In Nix the protocol was slightly altered[1] to also contain more
information about realisations. This however wasn't read from the pipe
that was used to read from the store.
After the `cmdBuildDerivation` command which caused this issue, Hydra
will issue a `cmdQueryPathInfos` that tries to read from the remote
store as well. However, there's still left over to read from the
previous command and thus Nix fails to properly allocate the expected
string.
[1] See rev a2b69660a9b326b95d48bd222993c5225bbd5b5f
Fixes #898
2021-04-15 15:16:52 +02:00
Graham Christensen
b9bcedbfdb
Merge pull request #596 from kquick/local_inp_url
...
Update prompt for Local path input to indicate a URL is also valid.
2021-04-14 20:01:58 +00:00
Graham Christensen
ffc4be6743
Merge pull request #910 from grahamc/ui-fixups
...
UI fixups
2021-04-12 17:42:01 +00:00
Graham Christensen
afd064d19d
Merge pull request #867 from ck3d/fix-proxy-login
...
Fix login if Hydra runs behind HTTP proxy with sub-path location
2021-04-12 17:36:55 +00:00
Graham Christensen
82953389e4
Make new jobsets enabled by default in the UI
...
If the jobset is brand new, none of the options matched. This
makes all new jobsets default to Enabled.
2021-04-12 12:01:24 -04:00
Graham Christensen
0fe4cba5b7
edit-jobset: make the "add a new input" button span the whole way
...
Previously it would only cross 4 of the 5 columns.
2021-04-12 12:01:24 -04:00
Graham Christensen
e674fb6139
edit user: make the role changer checkboxes
...
Also, it makes the role changer a bit of a dangerzone visually for
admins.
2021-04-09 14:07:10 +00:00
Graham Christensen
258b39f1e5
Merge pull request #677 from twhitehead/javascripts-update
...
Javascript libraries update
2021-04-09 14:05:47 +00:00
Eelco Dolstra
20c1efeb5b
Merge pull request #904 from Ma27/gitea-integration
...
Add `GiteaStatus`-Plugin
2021-04-08 17:57:38 +02:00
Tyson Whitehead
e51a6a4bca
Cards are now required to decorate pre blocks
2021-04-08 11:32:30 -04:00
Tyson Whitehead
7d3bd08c9b
Fix tab link spacing issue by dropping old sticky navbar css hack
2021-04-08 11:32:29 -04:00
Samuel Dionne-Riel
def05105bb
Add top spacing to tab contents
2021-04-08 11:32:26 -04:00
Samuel Dionne-Riel
d85b846357
Fix spacing with search inputs
...
And more importantly, crucially, fix the "appended" button so the round
corners are on the right (heh) side.
2021-04-08 11:32:08 -04:00
Samuel Dionne-Riel
20e3c51ba9
Style unstyled alerts
2021-04-08 11:32:02 -04:00
Graham Christensen
db2c9fe96a
layout.tt: make the header constrained to the center
2021-04-08 11:31:56 -04:00
Graham Christensen
9c903e9991
renderEvals: fixup colspan on Jobs and More
2021-04-08 11:31:47 -04:00
Graham Christensen
c8dd5b57c4
src/root/Makefile: fixup extraction of the fontawesome and bootstrap archives
2021-04-08 11:31:39 -04:00
Tyson Whitehead
abe082c1d6
Couple of upstream/bootstrap items missed in rebase
2021-04-08 11:31:34 -04:00
Tyson Whitehead
b5e18ce62c
Fix the empty popovers
2021-04-08 11:31:34 -04:00
Tyson Whitehead
2902684c61
Update jobset comparison button
2021-04-08 11:31:34 -04:00
Tyson Whitehead
3f77bd240f
Bring deep-embedding (tab anchors) javascript up-to-date
2021-04-08 11:31:34 -04:00
Tyson Whitehead
b6f5b6eb38
Labels are now badges
2021-04-08 11:31:34 -04:00
Tyson Whitehead
70df5e6312
Update button styles as btn-mini is no more
2021-04-08 11:31:34 -04:00
Graham Christensen
1e34cd3d3d
fixups to the rebase
2021-04-08 11:30:49 -04:00
regnat
26ffd4a93e
Fix build with latest master
2021-04-08 17:11:15 +02:00
Graham Christensen
cc9c91fe12
jobsets: put hidden and enabled jobsets at the end
...
Allows for generally correct zebra striping
2021-03-31 14:33:20 +00:00
Graham Christensen
a46f655c56
root project listing: show hidden projects at the end
...
Makes the zebra striping correct.
2021-03-31 14:33:20 +00:00
Maximilian Bosch
f9f5ab2fb1
Make gitea public URL configurable
...
Otherwise, it will be obtained from the jobset input that contains the
URL to the git repo to build.
2021-03-30 23:01:36 +02:00
Maximilian Bosch
eecea56131
Implement VM-test for gitea plugin
2021-03-30 22:35:39 +02:00
Maximilian Bosch
56997d8e8b
Fix error codes for GiteaStatus plugin
...
* `failure` if a build error occurred, on e.g. an aborted build send
`error`.
2021-03-30 14:13:46 +02:00
Maximilian Bosch
fef142f13a
Implement simple status notifications for Git repos hosted on gitea
2021-03-30 14:10:21 +02:00
Graham Christensen
9bb04ed97a
Merge pull request #893 from grahamc/fake-channel-nested
...
Test the fake derivations channel, asserting nested packages are properly represented.
2021-03-24 17:56:55 -04:00
Tyson Whitehead
eb8a0f279a
Add fontawesome as required by newer bootstrap
2021-03-24 17:10:28 -04:00
Tyson Whitehead
cd0ff484f7
Add popper.js as required by newer bootstrap
2021-03-24 17:10:28 -04:00
Tyson Whitehead
4d881b59ad
Update bootbox to latest 5.2.0
2021-03-24 17:10:27 -04:00
Tyson Whitehead
230a0387d2
Update boostrap to latest 4.3.1
...
Co-authored-by: Graham Christensen <graham@grahamc.com>
... but just fixing up merge conflicts from the introduction of flakes
and the removal of the Jobs table.
2021-03-24 17:10:27 -04:00
Tyson Whitehead
627af61abe
Update jquery to latest 3.4.1 (considered by some as more secure)
2021-03-24 17:10:27 -04:00
Graham Christensen
425c7ff17f
hydra-send-stats: add a --once option for testing
2021-03-20 09:16:08 -04:00
Jörg Thalheim
6bb180a0f2
hydra-send-stats: fix imports
2021-03-20 09:16:04 -04:00
Graham Christensen
6b7ca554f9
Update src/lib/Hydra/Helper/Escape.pm: fewer ()s
...
Co-authored-by: Stig <stig@stig.io>
2021-03-18 16:27:21 -04:00
Graham Christensen
019aef3d41
Test the fake derivations channel, asserting nested packages are properly represented.
...
This is a breaking change. Previously, packages named `packageset.foo`
would be exposed in the fake derivation channel as `packageset-foo`.
Presumably this was done to avoid needing to track attribute sets, and
to avoid the complexity. I think this now correctly handles the
complexity and properly mirrors the input expressions layout.
2021-03-18 11:33:37 -04:00
Graham Christensen
88e0198a8e
Create a helper for dealing with nested attribute sets
2021-03-18 11:33:36 -04:00
Graham Christensen
d62a2c1657
NixExprs: extract the escape
function and test it
2021-03-18 11:24:17 -04:00
Eelco Dolstra
aeb3d2f44c
Merge pull request #892 from grahamc/hydra-queue-runner-build-one
...
hydra-queue-runner: --build-one: correctly handle a cached build
2021-03-16 21:28:32 +01:00
Graham Christensen
87d46ad5d6
hydra-queue-runner: --build-one: correctly handle a cached build
...
Previously, the build ID would never flow through channels which
exited.
This patch tracks the buildOne state as part of State and exits avoids
waiting forever for new work.
The code around buildOnly is a bit rough, making this a bit weird to
implement but since it is only used for testing the value of improving
it on its own is a bit questionable.
2021-03-16 16:13:38 -04:00
Janne Heß
3c86083d21
Fixup #717 "Add the project name to declarative inputs"
...
```
Mar 10 16:22:35 hydra-b hydra-evaluator[41419]: DBIx::Class::Storage::DBI::_dbh_execute(): DBI Exception: DBD::Pg::st execute failed: ERROR: null value in column "type" violates not-null constraint
Mar 10 16:22:35 hydra-b hydra-evaluator[41419]: DETAIL: Failing row contains (62358, projectName, 0, null, null, null, hackworthltd, null, , null). [for Statement "INSERT INTO jobsetevalinputs ( altnr, dependency, eval, name, path, revision, sha256hash, type, uri, value) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )" with ParamValues: 1='0', 2=undef, 3='62358', 4='projectName', 5='', 6=undef, 7=undef, 8=undef, 9=undef, 10='hackworthltd'] at /nix/store/cmqblv437mp57yz5lwvkzcqca4ldf3r5-hydra-0.1.20210308.ebf1cd2/bin/.hydra-eval-jobset-wrapped line 793
Mar 10 16:22:35 hydra-b hydra-evaluator[25828]: evaluation of jobset ‘hackworthltd:.jobsets (jobset#1)’ failed with exit code 1
```
Use the abstraction for creating inputs for simulating the project
name input.
Co-authored-by: Graham Christensen <graham@grahamc.com>
2021-03-16 09:52:36 -04:00
Shea Levy
930f05c38e
Bump Nix version
2021-03-10 12:53:03 -05:00
Graham Christensen
b9fb66401b
Merge pull request #880 from grahamc/runcommand-finished-bool
...
RunCommand: emit the `finished` field as a boolean
2021-03-09 09:58:43 -05:00