Commit graph

1372 commits

Author SHA1 Message Date
Eelco Dolstra 4a2cb5e206 Update bootstrap to 2.3.1 2013-04-26 17:51:05 +02:00
Eelco Dolstra bbc3e25d5a Use bootstrap's pager (instead of pagination) class 2013-04-26 17:51:05 +02:00
Eelco Dolstra 002793bf2d makeLink -> menuItem 2013-04-26 17:51:05 +02:00
Eelco Dolstra 77a0fd9488 Remove unused file 2013-04-26 17:51:05 +02:00
Eelco Dolstra 3058ce2ca3 Don't do <tt> on input type 2013-04-26 17:51:05 +02:00
Eelco Dolstra 71eaa115f8 Ellipsize long jobset/job names to prevent bootstrap navbar breakage 2013-04-26 17:51:05 +02:00
Rob Vermaas fd7acd9bbf When searching a path / drv path, use separate queries for both options to prevent seq. scan. 2013-04-26 08:51:49 -04:00
Eelco Dolstra 591aee0793 getPrimaryBuildsForView: Return all view results
Returning only the first 20 results can cause NixOS/Nixpkgs channel
generation to fail, if the first 20 view results correspond to
evaluations that haven't finished yet.  Then URLs like
/view/nixos/tested/latest-finished will return 500 rather than the
latest finished view.
2013-04-26 13:21:41 +02:00
Rob Vermaas bfc1b0e76a Allow searching for store and drv paths. Only does a complete match to reduce load on database. 2013-04-25 09:57:30 -04:00
Eelco Dolstra 2c7a479994 Minor tweak 2013-04-23 15:39:05 +02:00
Eelco Dolstra 72a44cfcaa Make negative narinfo responses much smaller 2013-04-23 15:33:58 +02:00
Eelco Dolstra 54b03527cb Remove some redundant SQL queries 2013-04-23 15:23:08 +02:00
Eelco Dolstra 7528a9c7e7 Machine status: Don't show removed machines anymore
This requires a sequential scan on the BuildSteps table, which by now
takes > 8s.
2013-04-23 15:20:24 +02:00
Eelco Dolstra b3612b8a81 Fix showing build steps in the machine status page
This was broken because of the comparison

  step.machine.match('@(.*)').0 == m.key

where m.key contains the SSH user.

Also some style tweaks.
2013-04-23 14:24:48 +02:00
Ludovic Courtès bd5454d5d9 hydra-eval-guile-jobs: Use `--fresh-auto-compile'.
* src/script/hydra-eval-guile-jobs.in (main): Run `guile' with
  `--fresh-auto-compile'.
2013-04-13 18:59:42 +02:00
Peter Simons ccbe75781b hydra-queue-runner: don't clutter the system log with debug message
Avoid the frequently printed

  hydra-queue-runner[10293]: system type `x86_64-linux': 2 active, 2 allowed, starting 0 builds

message. That information is only interesting when some build are
actually started.
2013-04-11 10:56:40 +02:00
Eelco Dolstra 9f027b22b1 Allow users to reproduce builds on their own systems
You can now do:

  bash <(curl http://hydra-server/build/1238757/reproduce)

to download and execute a script that reproduces a Hydra build
locally.  This script fetches all inputs (e.g. Git repositories) and
then invokes nix-build.

The downloaded sources are stored in /tmp/build-<buildid> and reused
between invocations of the script.

Any additional command line options are passed to nix-build.  So

  bash <(curl http://hydra-server/build/1238757/reproduce) --run-env

will drop you in a shell where you can interactively hack on the
build, e.g.

  $ source $stdenv/setup
  $ set +e
  $ unpackPhase
  $ cd $sourceRoot
  $ configurePhase
  $ emacs foo.c &
  $ make

and so on.
2013-04-04 17:30:07 +02:00
Eelco Dolstra 48bb9c48ed Security: Prevent shell injection attack in rendering build contents 2013-04-03 00:13:03 +02:00
Eelco Dolstra 841e03ecba Hack to render empty lines in logs correctly 2013-04-02 23:40:19 +02:00
Eelco Dolstra e7926e046b Security: Improve checking of build products
Build product paths cannot reference locations outside of the Nix
store.  We previously disallowed paths from being symlinks, but this
didn't take into account that parent path elements can be symlinks as
well.  So a build product /nix/store/bla.../foo/passwd, with
/nix/store/bla.../foo being a symlink to /etc, would still work.

So now we check all paths encountered during path resolution.
Symlinks are allowed again so long as they point to the Nix store.
2013-04-02 23:32:04 +02:00
Eelco Dolstra 94984270b0 Pretty log: Number lines and make them linkable 2013-04-02 11:25:46 +02:00
Eelco Dolstra b8369a6a5f Put build status in front of the notification mail subject 2013-04-02 10:40:50 +02:00
Hydra 16dbec332d Postgresql 8.x needs as for column. 2013-04-01 20:18:00 -04:00
Eelco Dolstra 61405ec58a hydra-eval-jobs: Use function argument default values 2013-03-29 01:14:24 +01:00
Eelco Dolstra d734b435fa Remove the link for creating views since they're deprecated 2013-03-29 00:59:48 +01:00
Eelco Dolstra ee5b762919 Disable account creation for now 2013-03-28 11:56:12 +01:00
Ludovic Courtès f3aa48978e hydra-eval-guile-jobs: Allow use of the installed Guix.
* src/script/hydra-eval-guile-jobs.in: Leave GUILE_LOAD_PATH and
  GUILE_LOAD_COMPILED_PATH unchanged.
2013-03-27 00:07:57 +01:00
Ludovic Courtès 9a9f37f209 hydra-eval-guile-jobs: Adjust to multiple-output format.
This is a followup to commit
10882a1ffd ("Add multiple output
support").

* src/script/hydra-eval-guile-jobs.in (job-evaluations->sxml): Return
  several `output' tags in the body, and remove the `outPath' attribute
  of `job'.
2013-03-27 00:07:57 +01:00
Ludovic Courtès 9da89dd32b hydra-eval-guile-jobs: Adjust to <license> objects.
* src/script/hydra-eval-guile-jobs.in (job-evaluations->sxml): Output
  the license name, not the external representation of <license>
  objects.
2013-03-27 00:07:57 +01:00
Peter Simons 5ffc925ae7 hydra-queue-{runner,evaluator}: don't clutter the system log with debug messages 2013-03-26 11:03:15 +01:00
Rob en Lizi Vermaas 52a9f1a14e Use get_column for 'as' column (max_stoptime). 2013-03-24 18:50:17 +01:00
Sander van der Burg 03189bf62b Implemented quoted strings support in hydra-build-products to allow file names with spaces + testcase 2013-03-20 18:05:21 +01:00
Eelco Dolstra 50434d76c2 Fix rendering of jobset inputs 2013-03-19 16:14:47 +01:00
Eelco Dolstra c1aefc4c41 Update bootstrap to 2.0.3
This makes the navbar collapse properly on small screens.
2013-03-19 00:15:12 +01:00
Ludovic Courtès 93f4a26058 Don't always include "Hydra" in the logo part.
This partially reverts 67986b03fa.
2013-03-15 11:23:00 +01:00
Shea Levy 94382bd8f0 Admin controller: Use PathPart, not Path
Chaining paths only works properly when PathPart is used. Before this
fix, the affected URIs bypassed the top-level 'admin' sub.

Signed-off-by: Shea Levy <shea@shealevy.com>
2013-03-14 19:22:02 -04:00
Eelco Dolstra c96e427ec0 Log segfaults from the evaluator 2013-03-14 17:39:24 +01:00
Shea Levy 152c392198 Whoops 2013-03-07 10:52:31 -05:00
Eelco Dolstra 6d131719be Respect SystemTypes if defined 2013-03-05 18:01:44 +01:00
Eelco Dolstra fcd511c4de Revert "Remove now-unused SystemTypes table"
This reverts commit 71d020735b.
Unfortunately there are still some cases where we need to set Hydra's
concurrency separately.  (Ideally, Hydra would start *all* queued
builds in parallel and let Nix take care of everything...)
2013-03-05 17:42:16 +01:00
Eelco Dolstra 5b6b9d37f0 Add a button to compare a jobset eval against other jobsets
So now "?compare=<jobset name>" is no longer a hidden feature!

P.S. Encountered this wonderful TemplateToolkit brainfuck again: if
you want to get the number of rows in (say) project.jobsets, you can't
say "project.jobsets.size".  That will *usually* give the right
result, except that if there is only one row in project.jobsets, it
will evaluate to 3.  Instead you have to use "project.jobsets_rs.count".
2013-03-05 17:41:50 +01:00
Eelco Dolstra fe7e0ff1f4 Show inputs and input changes on the jobset eval page 2013-03-05 17:41:50 +01:00
Shea Levy 71d020735b Remove now-unused SystemTypes table 2013-03-04 17:46:37 -05:00
Shea Levy d764c135ce hydra-queue-runner: Use nix.machines instead of the SystemTypes table to determine how many build jobs are allowed per system type.
Note that on machines that support multiple system types, EACH system type gets the full number of build slots, which is almost certainly not what we want.
2013-03-04 17:44:19 -05:00
Shea Levy 233e485a55 Remove the BuildMachines and BuildMachinesSystemTypes tables 2013-03-04 16:32:16 -05:00
Shea Levy 232170e301 Remove all entry points to modify machines 2013-03-04 16:05:50 -05:00
Shea Levy 170c7c98d0 machines: Read /etc/nix.machines instead of using the BuildMachines table 2013-03-04 16:03:04 -05:00
Shea Levy f9426f365b machine-status: Read /etc/nix.machines instead of using the BuildMachines table 2013-03-04 15:37:20 -05:00
Eelco Dolstra a77161e40a Allow users to edit their own settings
Also, don't use the flash anymore for going back to the referer.
2013-03-04 15:25:23 +01:00
Eelco Dolstra f831287d4b Add font for the captcha
Taken from http://www.thibault.org/fonts/staypuft/.
2013-03-04 12:16:13 +01:00
Eelco Dolstra e8cbcb50ac Add user registration 2013-02-27 18:33:47 +01:00
Eelco Dolstra 180068605a Active build steps: Make the rows clickable 2013-02-26 19:12:10 +01:00
Eelco Dolstra d1c2771ab8 Ensure that each eval is compared to the previous one from the same jobset
Also, reduce the number of database hits.
2013-02-26 19:08:39 +01:00
Eelco Dolstra 1007735364 Render links to changed input builds
Also, use get_column('dependency') instead of dependency.id to prevent
an expensive row fetch.
2013-02-26 18:55:59 +01:00
Eelco Dolstra 56a62c3d88 Make jobset deletion consistent with project deletion 2013-02-26 17:36:49 +01:00
Eelco Dolstra d596b58991 "Evaluate" command: push the jobset to the front of the eval queue
Don't let hydra-server call hydra-evaluate.  That will probably just
timeout, get killed, etc.
2013-02-26 16:56:19 +01:00
Eelco Dolstra eea3846754 After editing a jobset, push it to the front of the evaluation queue 2013-02-26 16:10:36 +01:00
Eelco Dolstra 96e24fcf24 Tweaks 2013-02-26 16:04:33 +01:00
Eelco Dolstra 5462be23d5 Don't show duration of unfinished builds 2013-02-26 16:01:00 +01:00
Eelco Dolstra 2a3e832fc4 Add some margin about h3 elements 2013-02-26 16:00:46 +01:00
Eelco Dolstra 4b70be6753 Fix same system inputs 2013-02-26 15:51:56 +01:00
Eelco Dolstra 5a0054f38c Fix adding jobset inputs 2013-02-26 15:45:34 +01:00
Eelco Dolstra 1e338e7958 api/push: Don't barf on non-existent jobsets 2013-02-26 01:46:19 +01:00
Eelco Dolstra f501648cd2 Add simpler push support for GitHub
You can use the URL

  http://<hydra-server>/api/push-github

as GitHub's WebHook URL.  Hydra will automatically trigger an
evaluation of all affected jobsets.
2013-02-26 01:14:50 +01:00
Eelco Dolstra 11d87c6f82 Use query_params instead of params
Otherwise crazy things happen with POST requests from GitHub.
2013-02-26 00:38:18 +01:00
Eelco Dolstra 5e6896b2d9 Turn prepared statements back on
We once turned these off (in commit
abe71a767b) because they caused the
PostgreSQL query optimizer to use very suboptimal plans.  However,
PostgreSQL 9.2 has supposedly fixed this:

  http://www.postgresql.org/docs/9.2/static/release-9-2.html

So let's try again.
2013-02-25 21:20:52 +01:00
Eelco Dolstra f51b93da03 Remove debug line 2013-02-25 21:18:29 +01:00
Eelco Dolstra 42d2015357 Support push notification of repository changes
External machines can now notify Hydra that it should check a
repository by sending a GET or PUSH request to /api/push, providing a
list of jobsets to be checked and/or a list of repository URLs.  In
the latter case, all jobsets that have any of the specified
repositories as an input will be checked.

For instance, you can configure GitHub or BitBucket to send a request
to the URL

  http://hydra.example.org/api/push?repos=git://github.com/NixOS/nixpkgs.git

to trigger evaluation of all jobsets that have
git://github.com/NixOS/nixpkgs.git as an input, or to the URL

  http://hydra.example.org/api/push?jobsets=patchelf:trunk,nixpkgs:trunk

to trigger evaluation of just the specified jobsets.
2013-02-25 21:10:32 +01:00
Eelco Dolstra ddcb9f1d5d Handle the case where a jobset has never been evaluated 2013-02-25 19:38:11 +00:00
Eelco Dolstra 65db523e46 Fix duplicate function name 2013-02-25 19:01:43 +01:00
Eelco Dolstra 24de044c55 hydra-evaluator: Always pick the jobset that hasn't been evaluated longest 2013-02-25 18:47:54 +01:00
Eelco Dolstra c30cee55dd Send ETag and Expires headers 2013-02-25 18:18:05 +01:00
Eelco Dolstra fb643cd971 Install bootbox 2013-02-23 17:01:43 +01:00
Eelco Dolstra 6658419f69 Disallow build products that are symlinks
Otherwise you can do

  ln -s /etc/passwd $out/foo
  echo "file misc $out/foo" >> $out/nix-support/hydra-build-products

and get Hydra to serve its /etc/passwd file.
2013-02-23 16:28:44 +01:00
Eelco Dolstra aa7ddeb8e9 Use hashFile instead of nix-hash
Calling a shell command is a security hole if $path contains special
characters (e.g. "${foo}").  Observed in
http://hydra.nixos.org/build/4041321.
2013-02-23 16:09:34 +01:00
Eelco Dolstra 67986b03fa Fix logo size
Also, always include the text "Hydra" in the navbar.
2013-02-23 14:31:30 +00:00
Eelco Dolstra 77fa6d2646 Set mouse pointer to indicate you can click on rows 2013-02-22 18:13:18 +01:00
Eelco Dolstra c0f9c9b4aa Make some more tables clickable 2013-02-22 18:11:29 +01:00
Eelco Dolstra 9422c9d2a7 Optimise clickable rows
Set a click handler on the table instead of on every row.  This should
be faster on large tables.  Also, it's easier to use: you just set the
clickable-rows class on the table, and the row-link class on the <a>
element that contains the "main" link of the row.
2013-02-22 18:05:04 +01:00
Eelco Dolstra bd7be1cb84 Remove obsolete CSS classes 2013-02-22 17:11:10 +01:00
Eelco Dolstra f5a2859ce2 Show current query in the search box 2013-02-22 16:44:39 +01:00
Eelco Dolstra 08dc6650e1 Search: Limit the number of results 2013-02-22 16:41:42 +01:00
Eelco Dolstra 4d4ea8c754 Search: Mark disabled projects/jobsets/jobs 2013-02-22 16:21:50 +01:00
Eelco Dolstra f3f6e8a4e3 Search: Don't return hidden projects/jobsets 2013-02-22 15:56:29 +01:00
Eelco Dolstra 07daff32b8 Add a search feature
This allows searching for projects, jobsets or jobs by name or
description.
2013-02-22 15:45:10 +01:00
Eelco Dolstra 4343781181 Clear failed builds etc.: Redirect back to the referrer
Would be better to do this AJAX style though.
2013-02-22 14:31:43 +01:00
Eelco Dolstra 629fe6f998 Jobset page: Load the jobs and status tabs on demand
This makes the jobset page much smaller and faster.  (E.g. for
nixpkgs:trunk, this page was ~2.5 MB.)
2013-02-22 14:29:12 +01:00
Eelco Dolstra f2de374f28 Set a 500 HTTP status on errors 2013-02-22 14:27:38 +01:00
Eelco Dolstra 961feedf4e Show an error message if tab loading fails 2013-02-22 14:17:14 +01:00
Eelco Dolstra 47d2ee0dab Generalize lazy tabs 2013-02-22 13:36:15 +01:00
Eelco Dolstra e2e973578f Some unnecessary job names 2013-02-22 13:17:07 +01:00
Eelco Dolstra 5d3494011f Job page: Put latest builds on top
Also, rename the "Latest builds" tabs to prevent confusion.
2013-02-22 13:00:40 +01:00
Eelco Dolstra 098368c3e3 Job page: Remove "Latest builds (latest evaluation)"
It was kind of confusing since there are two other "latest builds"
tabs/sections.
2013-02-22 12:53:10 +01:00
Eelco Dolstra 6dbb948f1f Job page: show queued as well as running builds 2013-02-22 12:52:11 +01:00
Eelco Dolstra 1643d90d92 Job page: Remove channel tab 2013-02-22 12:00:32 +01:00
Eelco Dolstra 0f10a37894 Fix indentation 2013-02-22 11:55:06 +01:00
Eelco Dolstra d08a391b43 Jobset page: Show last evaluation time 2013-02-22 11:37:35 +01:00
Eelco Dolstra c9ac7746b2 Allow showing all evaluations that contain a given build 2013-02-21 18:49:57 +01:00
Eelco Dolstra 6afe528570 Remove the related builds tab
You can now just click on the evaluation link on the first tab to see
all builds in the same jobset.  This also makes rendering build pages
quite a bit faster for jobsets like Nixpkgs.
2013-02-21 18:43:16 +01:00
Eelco Dolstra c6fe9f00bf Also show number of evaluations of which a build is a part 2013-02-21 18:42:18 +01:00
Eelco Dolstra edbe531ccc On build pages, provide a link to the build's first eval 2013-02-21 18:34:34 +01:00
Eelco Dolstra d8370142c2 Remove garbage from Users.pm 2013-02-21 18:20:55 +01:00
Eelco Dolstra c22d93438e Fix adding jobset inputs 2013-02-21 18:10:06 +01:00
Eelco Dolstra ba68826860 Add a page to show the latest evaluations for the entire server 2013-02-21 17:27:17 +01:00
Eelco Dolstra 767cab6cd2 Correctly redirect to the referring page when logging in 2013-02-21 14:38:18 +01:00
Eelco Dolstra 26fa9ea0ea Add links to the project/jobset edit pages in the logical place 2013-02-21 14:19:34 +01:00
Eelco Dolstra fec45d1f07 Remove dead code 2013-02-21 13:45:11 +01:00
Eelco Dolstra 36032e4bed Make the info tables less compressed 2013-02-21 13:42:44 +01:00
Eelco Dolstra dd5eb51a84 Put job status on a separate tab
Also, show the "last checked time" on the initial tab.
2013-02-21 13:30:14 +01:00
Eelco Dolstra 5099375549 Indicate disabled/hidden projects/jobsets in the overviews 2013-02-21 11:57:48 +01:00
Eelco Dolstra 8db83d2017 Turn hiding/unhiding a jobset into a checkbox 2013-02-21 02:36:51 +01:00
Eelco Dolstra 547e41263d Split viewing and editing a jobset 2013-02-21 02:33:57 +01:00
Eelco Dolstra 9c7b416f8b Make the hide/unhide actions a checkbox in the project settings
Also use proper bootstrap layout for the project settings form.
2013-02-21 01:45:39 +01:00
Eelco Dolstra 3924780eac Tweaks 2013-02-21 01:26:29 +01:00
Eelco Dolstra cea17fd57e Show releases in a tab on the project page 2013-02-21 01:23:42 +01:00
Eelco Dolstra d9f6e662d8 Split viewing and editing a project 2013-02-21 01:12:57 +01:00
Eelco Dolstra 03aee6726f Add a menu item for deleting jobsets
Also add bootbox for sexier dialog boxes.
2013-02-21 00:47:21 +01:00
Eelco Dolstra 176b8cab7e Use a proper spinning wheel icon 2013-02-20 23:57:33 +01:00
Eelco Dolstra b5273eed7a Don't generate clashing IDs 2013-02-20 18:26:26 +01:00
Eelco Dolstra d1e983dfc6 All/recent builds -> Latest builds 2013-02-20 18:23:49 +01:00
Eelco Dolstra 85e3f69cdd Remove debug statement 2013-02-20 18:22:06 +01:00
Eelco Dolstra 78250581ed There is only one channel, so drop the "(latest)" suffix 2013-02-20 18:20:16 +01:00
Eelco Dolstra af18808ca7 Dependency tree: Revert to "repeated" links 2013-02-20 18:15:42 +01:00
Eelco Dolstra 4552117e51 Load the dependency tabs on demand 2013-02-20 18:13:20 +01:00
Eelco Dolstra 36a1015444 Show the runtime/build dependencies in the build page 2013-02-20 17:58:27 +01:00
Eelco Dolstra 11c09e4c5c Always show the build duration (using the cached build if necessary) 2013-02-20 17:07:20 +01:00
Eelco Dolstra aebefda6ab Remove unnecessary Javascript code
Tabs are activated automatically.
2013-02-20 17:03:11 +01:00
Eelco Dolstra b5d59c5c63 Fix indentation of build.tt 2013-02-20 17:02:07 +01:00
Eelco Dolstra f544c63607 Formatting tweaks 2013-02-20 16:47:57 +01:00
Eelco Dolstra 7da2398f27 Allow non-admin users to see the machine status page 2013-02-20 16:40:09 +01:00
Eelco Dolstra 656b1bd45a Group some menu items together under a "Status" menu 2013-02-20 16:24:54 +01:00
Eelco Dolstra c63812afa5 Fix indentation
Also move flashing into layout.tt.
2013-02-20 16:14:30 +01:00
Eelco Dolstra ea9862fdc1 Give every page a consistent title 2013-02-20 15:54:33 +01:00
Eelco Dolstra 5c317fa0e9 Remove unused file 2013-02-20 15:42:40 +01:00
Eelco Dolstra 84602f9ee6 Ensure that the first tab is selected 2013-02-20 14:29:35 +01:00
Eelco Dolstra 3df9665f60 Compatibility with latest bootstrap 2013-02-20 14:06:17 +01:00
Eelco Dolstra c2e5bec1e1 Evil CSS hackery to prevent link targets from being under the navbar
http://stackoverflow.com/questions/9047703/fixed-position-navbar-obscures-anchors
2013-02-20 13:56:41 +01:00
Eelco Dolstra f550f1a1de Revert to jQuery 1.8.3
1.9 removes the toggle() function which is actually useful (and used
by us).
2013-02-20 01:49:01 +01:00
Eelco Dolstra 1feca4b105 Turn repeated dependencies into hyperlinks 2013-02-20 01:28:29 +01:00
Eelco Dolstra 18da3ac397 Render the dependencies as a tree 2013-02-20 01:02:18 +01:00
Eelco Dolstra 41d7d63339 Simplify the tree implementation a bit more 2013-02-20 00:54:03 +01:00
Eelco Dolstra 1a992d170d Factor out the tree rendering 2013-02-19 17:22:28 +01:00
Eelco Dolstra 4266632eb0 Simplify the log tree implementation a bit
In particular use the :last-child selector, which is non-standard but
supported by all major browsers.
2013-02-19 17:14:02 +01:00
Eelco Dolstra 8c37f46955 Update jquery/jqueryui 2013-02-19 15:22:15 +01:00
Eelco Dolstra 7b4d4f1cd7 Move <style> to hydra.css 2013-02-19 14:39:50 +01:00
Eelco Dolstra 22ed3c4847 Fix some XML well-formedness problems 2013-02-14 18:03:12 +01:00
Eelco Dolstra 5620e3c386 Fix indentation and get rid of some unnecessary whitespace in the output 2013-02-14 17:51:09 +01:00
Eelco Dolstra 2fa1a7efa7 Get rid of unnecessary [%- and -%] tags 2013-02-14 16:51:42 +01:00
Eelco Dolstra 82daf4f8ca Show dependencies as a tree rather than a list 2013-02-14 15:53:34 +01:00
Eelco Dolstra 4e67665b7f Builds page: Remove redundant tab titles 2013-02-14 13:23:54 +01:00
Eelco Dolstra 1160e17bfc Add missing files
Doh!
2013-02-14 11:53:09 +01:00
Eelco Dolstra 2b3c72efeb Use getMainOutput 2013-02-13 18:36:01 +01:00
Eelco Dolstra eb9d0c8992 Security: Also check paths in the web server 2013-02-13 18:34:33 +01:00
Eelco Dolstra cd83b8e3aa Security: Ensure that a build product refers to the Nix store 2013-02-13 18:26:00 +01:00
Eelco Dolstra 10882a1ffd Add multiple output support
This requires turning the outPath columns in the Builds and BuildSteps
tables into separate tables, and so requires a schema upgrade.
2013-02-13 16:49:28 +00:00
Eelco Dolstra 799e5437bd Remove unnecessary "Page generated" line 2013-02-05 14:08:20 +01:00
Eelco Dolstra e555c7bb36 Automatically chomp all [%...%] directives
This makes the use of [%-...-%] unnecessary.
2013-02-05 14:00:09 +01:00
Eelco Dolstra 58dd49e645 Fix handling of IPC::Run::run exit status
Turns out that the exit status is returned in $?, not as the return
value of run().  So our error checking was completely bogus.
2013-01-23 15:56:28 +01:00
Eelco Dolstra e0de5de91d Fix some warnings 2013-01-23 12:41:57 +00:00
Eelco Dolstra 66c107364b Add missing file
Doh!
2013-01-23 12:49:44 +01:00
Eelco Dolstra f3d6643724 Omit the small build status icon on the build page
It's kinda pointless next to the big-ass icon.
2013-01-22 23:05:02 +01:00
Eelco Dolstra ecdbce1a61 Handle active build steps of aborted builds properly 2013-01-22 23:01:29 +01:00
Eelco Dolstra 30e5185acf Remove the logfile and logSize columns from the database
It's pointless to store these, since Nix knows where the logs are.
Also handle (in fact require) Nix's new log storage scheme.  Also some
cleanups in the build page.
2013-01-22 22:48:02 +01:00
Eelco Dolstra 67aefde62c Remove trailing whitespace 2013-01-22 14:41:02 +01:00
Eelco Dolstra aa28ffe3a8 Die tabs die 2013-01-22 14:09:37 +01:00
Eelco Dolstra 486b6037a9 Use $c->config 2013-01-22 14:06:12 +01:00
Eelco Dolstra f188fe5683 hydra-evaluator: Don't require $HYDRA_CONFIG 2013-01-22 13:19:28 +01:00
Eelco Dolstra fc39034772 Whitespace 2013-01-22 13:19:08 +01:00
Eelco Dolstra f3a274657d Trailing whitespace 2013-01-22 12:05:33 +01:00
Rob Vermaas d4e49773c5 Allow dashes in attrNames 2013-01-11 12:16:21 +01:00
Eelco Dolstra 64399991a7 Give Hydra binary caches a low priority
We only want to hit a Hydra binary cache if static caches don't
provide a binary.
2012-11-06 17:13:17 +01:00
Eelco Dolstra 2906116fda Log time required by a request 2012-11-05 17:37:23 +01:00
Eelco Dolstra 9ba1fd6952 Turn off overly verbose log messages by default
The "Request took ...s" messages are rather spammy, so turn them off
by default.  You can set CATALYST_DEBUG=1 if you need them.
2012-11-05 17:21:09 +01:00
Ludovic Courtès 183078131a Capture the path to `guile', when available. 2012-10-17 16:25:49 +02:00
Ludovic Courtès f27ae1d566 Add support for Guile & Guix. 2012-10-17 16:23:00 +02:00
Rob Vermaas 4ade8c5a1b Add dollar to pathCompRE, which allows files with dollars in them to be served by Hydra, e.g. sphinx generated docs often has these types of files. 2012-10-12 13:48:11 +02:00
Eelco Dolstra 5fa688acf5 Don't ignore assertion failures in getDerivation() 2012-10-04 15:24:25 -04:00
Eelco Dolstra a4ff9b0d08 hydra-eval-jobs: Don't go into an infinite recursion
The function getDerivation() can return false if its argument is a
derivation.  This happens if evaluating the name or system attribute
triggers an assertion.  In that case, we shouldn't recurse into the
attributes of the derivation.
2012-10-04 14:31:47 -04:00
Rob Vermaas f4a24b94ee Fallback for git fetch, which allows specific gits revisions to be used as build inputs. 2012-09-11 22:31:49 +02:00
Rob Vermaas c57242c76d Show build status for up to 100 jobs in stead of 50. 2012-09-10 12:15:31 +02:00
Rob Vermaas 396a356198 Add create-user action that was mostly present already. 2012-08-06 00:02:14 +02:00
Rob Vermaas 90c9b5dd60 Do not send emails when build is cancelled/aborted. Also, ignore aborted/cancelled builds in comparing to previous build. 2012-08-06 00:00:07 +02:00
Eelco Dolstra aa8bf564e2 Set the Content-Type properly 2012-08-01 18:00:55 +00:00
Eelco Dolstra 13688e364f Add a binary-cache-url file to channels to advertise the binary cache URL 2012-08-01 16:31:25 +00:00
Eelco Dolstra fad2a084fa Provide the nix-cache-info file required by the binary cache substituter 2012-07-30 20:26:34 +00:00
Eelco Dolstra d15dd6bac9 Include the URL of the binary cache in .nixpkg files 2012-07-30 20:26:11 +00:00
Eelco Dolstra 74fb2b37ce Add more spacing between products 2012-07-19 00:33:02 +02:00
Eelco Dolstra 00155aa7b1 Add an icon for binary distributions 2012-07-19 00:16:22 +02:00
Eelco Dolstra 67528698e6 Allow creating a release from an evaluation 2012-07-18 23:46:41 +02:00
Eelco Dolstra 2ab4c7d597 Update queryPathInfo calls 2012-07-18 23:14:45 +02:00
Eelco Dolstra da960b507d Use queryPathFromHashPart to look up binary cache requests efficiently 2012-07-18 23:14:17 +02:00
Rob Vermaas 544f2f2503 Removing tarball as option for build input; does not exist. 2012-07-13 13:06:55 +02:00
Eelco Dolstra 1b3cf68b77 Generate *.narinfo files on the fly to support the binary cache substituter 2012-07-02 20:09:45 +02:00
Eelco Dolstra fe2dab6fe8 Fix some warnings about undefined values 2012-07-02 15:18:30 +00:00
Rob Vermaas d37c2c239c export logContents 2012-06-26 12:09:05 +02:00
Rob Vermaas a2f56ce574 * Read logs using logContents function in stead of handling it everywhere separately. 2012-06-26 12:00:18 +02:00
Rob Vermaas 0701cd0da8 * Fix getBuildLog for bzip2'd files. 2012-06-26 08:04:35 +02:00
Rob Vermaas 2aa52131ac * Nix now stores logs by default as bzip2, make sure the build page uncompresses before showing. 2012-06-25 15:05:16 +02:00
Eelco Dolstra ab4f0911ce Fix rendering of Subversion inputs in the Evaluations table
Broken since commit 75277311ac.

Fixes #30.
2012-06-04 14:55:24 +00:00
Eelco Dolstra fdf441a8b7 Set utf-8 encoding on raw log pages 2012-05-25 14:27:56 +00:00
Rob Vermaas 75277311ac Different icons (darker red) for cancelled builds. Fixes #25. 2012-05-25 04:14:36 +02:00
Eelco Dolstra d1da9a8823 Escape the log tail to ensure we produce correct HTML 2012-05-23 20:14:51 +00:00
Eelco Dolstra fdc516289c Doh - clear $NIX_PATH properly 2012-05-23 14:44:23 -04:00
Rob Vermaas 97d41a2102 Allow project members to create jobsets, regression introduced by bootstrap make-over. Currently all logged in users see these options, however, only on performing the action the privileges are checked. Need to change that in the future. 2012-05-18 10:09:53 +02:00
Rob Vermaas da206fdfac Add time to evaluation error tab. Fixes #21. 2012-05-18 10:06:55 +02:00
Rob Vermaas b591c443b0 Keep builds of disabled jobsets that are not hidden. Fixes #18. 2012-05-11 09:11:07 +02:00
Eelco Dolstra 8538953868 Don't write one character at a time, it's inefficient 2012-05-10 12:02:41 -04:00
Eelco Dolstra 48effa116c Delete obsolete CSS files 2012-05-07 15:12:56 -04:00
Eelco Dolstra 7d3c1852ed "r. " -> "r" in showing revisions 2012-05-04 17:12:45 -04:00
Rob Vermaas 0fdcd3176b Add numbered revision id of mercurial as revCount. 2012-05-01 09:15:52 +02:00
Eelco Dolstra 8f85fe67d4 Revert sorting build products
Sorting the build products list fails if there are fewer than 3 build
products.  This is because of extreme Template Toolkit brain damage:
it treats arrays of 0-2 elements differently in some magic way.  See
e.g.

  http://mail.template-toolkit.org/pipermail/templates/2011-April/011510.html
2012-04-30 22:19:38 +02:00
Rob Vermaas df71a86183 Do not delete builds when clearing the queue. Fixes #8. 2012-04-30 22:13:53 +02:00
Eelco Dolstra b52018e61a Use a span instead of a div in the pretty logs
Fixes #6.
2012-04-30 21:32:53 +02:00
Rob Vermaas eb51065a16 Making pretty printed log look normal again. Issue #6 2012-04-30 20:22:03 +02:00
Rob Vermaas 437e59c4a8 When checking if build is already built, check for potential 'failed with result'. Fixes issue #7. 2012-04-30 19:47:21 +02:00
Eelco Dolstra 854513be8e I should test first 2012-04-30 17:57:13 +02:00
Eelco Dolstra dcc570f454 Set the build status properly for failing local builds
If a build has ‘preferLocalBuilds = true’ (or we're not using remote
building), and the build has a non-permanent failure, then the build
status should be "Aborted" rather than "Failed".  This is denoted by
an exit status of 100 from nix-store.
2012-04-30 17:15:35 +02:00
Eelco Dolstra 4a6f798ef4 Fix Mercurial input fetching if a cached input has been GC'ed
Fixes Hydra/76.
2012-04-30 16:21:28 +02:00
Eelco Dolstra 1033178728 Ensure build products are in sorted order 2012-04-27 11:23:38 +02:00
Eelco Dolstra 29b40e6418 Fix the duration on Build pages 2012-04-27 10:54:49 +02:00
Rob Vermaas 4a1a2203ac I should sleep... grmbl 2012-04-26 09:37:48 +02:00
Rob Vermaas 3c465c3661 Revert nix-prefetch-git changes merged in earlier from Merge request #3, which broke git describe functionality used in GNU jobsets. 2012-04-26 09:31:00 +02:00
Rob Vermaas 6d5567bb16 Use git fetch -fu origin +$branch:$branch to fetch all changes for branch. 2012-04-26 08:36:40 +02:00
Rob Vermaas be3748e1ec In case of deep clone, make sure there is local branch. 2012-04-25 13:49:28 +02:00
Rob Vermaas 7da48b5220 remove origin from git pull call, to get rid of fatal: fetch --all does not take a repository argument error 2012-04-25 10:17:22 +02:00
Rob Vermaas b49e138e9c Merge pull request #3 from nbp/candidates/fetch-git
Optimize fetch-git.
2012-04-24 10:18:28 -07:00
Rob Vermaas 966cc22131 Fix query for certain postgresql versions. 2012-04-22 08:30:48 +02:00
Rob Vermaas b0596c214a Merge branch 'master' of github.com:NixOS/hydra 2012-04-18 11:24:12 +02:00
Rob Vermaas cc38d0352f Strip all whitespace from revision from subversion call. Patch provided by Petr Ročkai 2012-04-18 11:22:26 +02:00
Eelco Dolstra f8c914297f Fix path to the session data 2012-04-17 22:25:32 +02:00
Eelco Dolstra 51b920c875 Bootstrapify the Hydra forms (except the project and jobset edit pages)
Plus lots of other tweaks.
2012-04-17 16:53:11 +02:00
Eelco Dolstra 8f31935ffa Handle the case where there are no builds and no previous eval 2012-04-17 12:32:44 +02:00
Eelco Dolstra db09760e8c Move the "Cancel build" button to the menu 2012-04-17 11:39:08 +02:00
Eelco Dolstra ea4aba83c3 Proper styling for flash message 2012-04-17 09:36:10 +00:00
Eelco Dolstra 634d8c092f Use <h3> for running/failed build steps 2012-04-17 09:35:37 +00:00
Eelco Dolstra 896a47d950 Clear nrSucceeded when restarting a build 2012-04-17 09:34:35 +00:00
Eelco Dolstra d350b935f2 Add validation for project and jobset names 2012-04-17 08:53:00 +00:00
Rob Vermaas 90e0ba2a7a Revert changeset 4399683fa0, make jobset options available to project members as well 2012-04-17 09:49:27 +02:00
Ludovic Courtès 4399683fa0 Reinstate the edit/clone links on the jobset page.
They were removed in commit 17d30cd179.
2012-04-16 16:47:23 +02:00
Rob Vermaas 922bad7306 Also remove dep. graph from robots.txt. 2012-04-16 15:25:14 +02:00
Rob Vermaas 334135448e Remove buildtime and runtime dependency graph. It is useless on normal derivations. 2012-04-16 15:23:07 +02:00
Rob Vermaas 28b6ff3ed6 Add maximum nest level for input changes on build page. 2012-04-16 13:59:29 +02:00
Eelco Dolstra 1cf2a1592a Add missing upgrade-*.sql files 2012-04-15 23:23:01 +00:00
Eelco Dolstra ec87ad2bf2 Missing part of aaacf9eda3 2012-04-15 22:57:10 +00:00
Eelco Dolstra aaacf9eda3 Speed up the listing of jobset evals by caching some info in the DB
This denormalises the database, but it's the best we can do until
PostgreSQL has materialised views.
2012-04-16 00:46:19 +02:00
Eelco Dolstra 034d50069b Speed up the jobset eval list a bit 2012-04-15 22:11:20 +00:00
Eelco Dolstra 573a333bc9 Cleanup 2012-04-15 21:49:54 +00:00
Eelco Dolstra 5793baa3cd Doh 2012-04-15 21:35:46 +00:00
Eelco Dolstra 1e228267be Only show "Running build steps" if there are running build steps 2012-04-15 20:12:35 +00:00
Eelco Dolstra 2c6a38760b Consistent capitalisation 2012-04-15 20:10:22 +00:00
Eelco Dolstra 0daba6bb89 In the jobset evals lists, show what inputs changed between consecutive evals 2012-04-15 20:06:42 +00:00
Eelco Dolstra b9824ca422 Cleanup 2012-04-15 18:47:22 +00:00
Eelco Dolstra fd50ac1d4e Store the inputs of each evaluation in the database
Achtung: this requires a schema upgrade via "hydra-init".
2012-04-15 18:36:36 +00:00
Eelco Dolstra 12dd78d889 Change the "Available" link to "pretty"
"Available" is confusing in this context.  "Pretty" denotes that this
is the pretty-printed log.
2012-04-15 18:51:34 +02:00
Eelco Dolstra e7fa54e48e Fix the spacing around some <h3> headers 2012-04-15 18:48:29 +02:00
Eelco Dolstra 80705c8a20 hydra-init: show SQL commands being executed 2012-04-15 18:34:32 +02:00
Eelco Dolstra bf757f687d Remove close button on news items since it's not persistent, so kinda useless 2012-04-15 18:31:47 +02:00
Eelco Dolstra a633e4b361 Make the jobset eval rows clickable 2012-04-15 18:21:56 +02:00
Eelco Dolstra 6b88640457 Remove the "There are evaluation errors!", instead emphasize the presence of the tab more 2012-04-15 18:17:19 +02:00
Eelco Dolstra 101e60b03d Nicer link to the rest of the jobset evals 2012-04-15 18:08:51 +02:00
Eelco Dolstra 794602d7ce Drop unused "tag" column
It was intended for CVS inputs but never used.
2012-04-15 12:42:46 +00:00
Nicolas Pierron 19d9955e89 Optimize fetch-git. 2012-04-14 18:17:35 -07:00
Rob Vermaas ccc5d38976 Move Hide/Unhide links for project to toplevel menu. 2012-04-13 16:52:25 +02:00
Rob Vermaas 7f858928df Fix hide/unhide links. 2012-04-13 16:36:45 +02:00
Rob Vermaas fbb857bf80 Do not load charts lazily for now. 2012-04-13 14:50:48 +02:00
Rob Vermaas 320632f7f4 Renamed running to started in queue. 2012-04-13 12:55:26 +02:00
Rob Vermaas f339f5ae85 Fix evaluate link. 2012-04-13 12:42:58 +02:00
Rob Vermaas 516a644a7f Merge branch 'master' into bootstrap 2012-04-13 11:55:49 +02:00
Rob Vermaas 293c7d3507 update bootstrap.zip 2012-04-13 11:54:40 +02:00
Rob Vermaas bb4f470348 Remove default logo, replaced by text for now. Hide template in jobset edit. 2012-04-13 11:47:05 +02:00
Rob Vermaas f63e9a63b4 Replace last 5 builds on jobset page with last 5 evaluations. Moved hide/unhide and evaluate options to jobset topmenu. 2012-04-13 11:26:37 +02:00
Rob Vermaas 11bf848b09 Move channel link to top menu of Project and Jobset. 2012-04-13 10:56:02 +02:00
Rob Vermaas bf197f0d77 Remove pagers on the bottom of paginated lists. 2012-04-13 10:43:56 +02:00
Rob Vermaas b81aa89260 Replace old logo with Nix/NixOS logo. 2012-04-13 10:33:11 +02:00
Rob Vermaas 1e7f9c8a15 Fix pager prev/next button. 2012-04-13 10:23:27 +02:00
Rob Vermaas 6b65712045 Restructure build menu 2012-04-13 10:19:15 +02:00
Rob Vermaas 9a1f38e06e Remove comments, re-add logo. 2012-04-13 10:05:02 +02:00
Rob Vermaas 4f5327d7ed Added running icon in queue in stead of background color. 2012-04-12 22:10:16 +02:00
Rob Vermaas 8aaa0a1a8a Move 'keep build' and 'restart' to toplevel menu 2012-04-12 21:50:06 +02:00
Rob Vermaas 089a9c836f Machine status page now looks much better and more consistent with rest of Hydra 2012-04-12 21:42:21 +02:00
Rob Vermaas 6853d0398a Move 'clone build' and 'restart build' to top menu 2012-04-12 21:41:31 +02:00
Rob Vermaas c630433b61 Move 'clone build' to top menu 2012-04-12 21:40:57 +02:00
Rob Vermaas 7886666b0b Replace ugly link with nice small buttons 2012-04-12 21:03:59 +02:00
Rob Vermaas 72785f35aa Some overriding of bootstrap default css 2012-04-12 21:03:25 +02:00
Rob Vermaas 06d6f5b5f7 remove header on build page 2012-04-12 20:19:52 +02:00
Rob Vermaas 5748262517 Add bootstrap.zip 2012-04-12 20:13:04 +02:00
Rob Vermaas 17d30cd179 Using twitter bootstrap for more consistent looks for Hydra 2012-04-12 20:12:07 +02:00
Ludovic Courtès 6e62d9b7b5 Allow use of a single Git clone for several branches.
This reinstates commit 53329ecc61, but
uses "git pull --all", instead of "git fetch --all", so that local
tracking branches get updated too.
2012-04-12 16:55:33 +02:00
Rob Vermaas ed23a6e6d3 Add branch to local clone path of git repositories for now. 2012-04-10 10:06:12 +02:00
Rob Vermaas 79211d5efe Revert "Use git fetch --all to update local clone in stead of git pull. Also, do not use --branch in initial clone."
This reverts commit 53329ecc61.
2012-04-10 10:04:22 +02:00
Rob Vermaas 53329ecc61 Use git fetch --all to update local clone in stead of git pull. Also, do not use --branch in initial clone. 2012-04-05 15:49:48 +02:00
Eelco Dolstra 8b88ce19c2 Huuuge speedup in the Hydra evaluator
The check to see whether a build had been scheduled in a previous
evaluation took about 200 ms for the nixpkgs:trunk jobset.  Given
that it has more than 15000 builds, this added up to a lot.  Now
it takes 0.2 ms per build.
2012-04-04 17:29:03 +02:00
Eelco Dolstra 1cdc023427 Propagate URI parameters 2012-04-04 13:17:22 +02:00
Eelco Dolstra e9dd3158a0 Propagate URI parameters
This allows URIs like

  http://hydra.nixos.org/jobset/nixpkgs/trunk/latest-eval?compare=stdenv

to do the right thing.
2012-04-04 12:56:49 +02:00
Eelco Dolstra 05d03ee153 Don't use colspan=0, it doesn't work in all browsers 2012-04-04 10:33:00 +00:00
Eelco Dolstra f52ca0c588 Add a redirect to the latest view result for which the underlying evaluation has finished completely
This will be useful for the Nixpkgs channel mirror script:

  http://hydra.nixos.org/view/nixpkgs/unstable/latest-finished/channel

is the channel containing the latest, consistent, tested set of builds.
2012-04-03 17:45:03 +02:00
Eelco Dolstra bd93ca9316 Add a redirect to the evaluation page of a view result
E.g.

  http://hydra.nixos.org/view/nixpkgs/unstable/latest/eval

Thus this is the channel representing the latest Nixpkgs for which the
elements of the view "unstable" succeeded:

  http://hydra.nixos.org/view/nixpkgs/unstable/latest/eval/channel
2012-04-03 15:45:48 +02:00
Eelco Dolstra 2c677ec71a Always record inputs passed through -I in the BuildInputs table
We currently have no way to determine if the Nix evaluator used a
specific -I input, so we need to record all of them as inputs.
2012-04-03 10:10:45 +00:00
Eelco Dolstra 30e2b9046a Cleanup 2012-04-03 11:28:59 +02:00
Eelco Dolstra db2b2b6134 Add a redirect to the latest finished jobset evaluation
The action .../jobset/<project>/<jobset>/latest-eval redirects to the
latest evaluation of the jobset that has no unfinished builds.  Thus,
for instance,

  http://hydra.nixos.org/jobset/nixpkgs/trunk/latest-eval/channel

is the channel containing the latest consistent set of Nixpkgs builds.
2012-04-03 01:30:54 +02:00
Eelco Dolstra 262f068e26 Support obtaining the contents of an evaluation as a channel
E.g. http://hydra.nixos.org/eval/552513/channel

The advantage of such a channel is that all builds come from the same
evaluation, and thus are consistent.
2012-04-02 23:27:17 +02:00
Eelco Dolstra 3e57cbfeb8 User color instead of a big animated GIF to indicate whether a build is running 2012-04-02 21:07:49 +02:00
Eelco Dolstra 69e600da89 Allow comparing an evaluation with an arbitrary other evaluation
The URI parameter "compare=..." can denote either an arbitrary
evaluation ID, or the name of a jobset in the same project.  In the
latter case, the comparison is made against the latest completed
evaluation of the specified jobset.
2012-04-02 20:40:59 +02:00
Eelco Dolstra 2f9153c640 Prevent multiple builds with the same (job, outPath) tuple from being added
This happened in a pathological case in Nixpkgs: the "grub" job is
evaluated for i686-linux and x86_64-linux, but in the latter case it
returns the same derivation as in the former case.  So only one build
should be added.
2012-04-02 15:56:29 +00:00
Eelco Dolstra 9d4cb29e08 Show queued builds in jobset evaluation pages 2012-04-02 15:23:42 +00:00
Eelco Dolstra 427e5e8db8 Show new and removed jobs 2012-04-02 16:45:05 +02:00
Eelco Dolstra 662cdf0421 Add support for viewing jobset evaluations 2012-04-02 16:11:22 +02:00
Eelco Dolstra d33fbad438 Unpack jQuery etc. in the build tree for easier testing 2012-04-02 11:15:48 +00:00
Eelco Dolstra 0aae52bfcc In build tables, hide the project, jobset and/or job name if they're constant 2012-04-02 13:12:39 +02:00
Eelco Dolstra d8f8143cc2 No wonder our disk was filling up 2012-03-26 17:13:50 +02:00
Rob Vermaas 4d4e1986e8 remove delete jobset button until we actually have implemented the action properly 2012-03-26 14:39:50 +02:00
Eelco Dolstra e1768cae86 Don't barf if the SQLite DB is missing
This prevented hydra-init from starting.
2012-03-19 03:57:11 +00:00
Ludovic Courtès 3846c2407d Fix URL in the "password changed" email. 2012-03-13 18:30:57 +01:00
Ludovic Courtès 2b68e41ee4 Actually add SQL files to the distribution. 2012-03-13 17:49:18 +01:00
Ludovic Courtès ace94192ac Update the list of SQL files to be installed.
This fixes `hydra-init', which would otherwise not find `upgrade-*.sql',
thus skipping the update altogether.
2012-03-13 17:45:14 +01:00
Eelco Dolstra dae5032c1c I'm stupid 2012-03-13 13:33:19 +01:00
Eelco Dolstra c844b9f09a Remove the global Job status and Errors links 2012-03-13 13:31:36 +01:00
Eelco Dolstra 161d7418f8 Doh 2012-03-13 13:30:41 +01:00
Eelco Dolstra 1f268d2d43 Update isCurrent properly 2012-03-13 13:09:10 +01:00
Eelco Dolstra 179b012a8e Open the DB using Hydra::Model::DB->new
This gets rid of the openHydraDB function and ensures that we
open the database in a consistent way.

Also drop the PostgreSQL sequence hacks.  They don't seem to be
necessary anymore.
2012-03-13 12:10:19 +01:00
Eelco Dolstra 13f4636436 hydra-evaluator: handle the case where there is no previous jobset eval 2012-03-12 21:13:28 +01:00
Eelco Dolstra a4cda5e337 Don't use the Switch module
It was removed in Perl 5.14.
2012-03-12 20:47:30 +01:00
Eelco Dolstra 87e4d43848 Fix the jobset unchanged check
When checking whether the jobset is unchanged, we need to compare with
the previous JobsetEval regardless of whether it had new builds.
Otherwise we'll keep adding new JobsetEval rows.
2012-03-12 20:47:30 +01:00
Eelco Dolstra 27619f18e2 Re-enable the "Related Builds" tab
However, there is a "limit 1" on the JobsetEval search to prevent a
sequential scan of the Builds table.
2012-03-12 20:47:30 +01:00
Eelco Dolstra abe71a767b Disable prepared statements completely
Because of the way DBIx::Class does prepared statements, even
innocuous queries such

  $c->model('DB::Builds)->search({finished => 0})

can be extremely slow.  This is because DBIx::Class prepares a
PostgreSQL statement

  select ... from Builds where finished = ?

and since Builds is very large and there is a large fraction of rows
with "finished = 1", the PostgreSQL query planner decides to implement
this query with a sequential scan of the Builds table (despite the
existence of an index on "finished"), which is extremely slow.  It
would be nice if we could tell DBIx::Class that constants should be
part of the prepared statement, i.e.

  select ... from Builds where finished = 0

but AFAIK we can't.
2012-03-12 20:47:30 +01:00
Eelco Dolstra 2d1cf73974 Speed up channel processing
In particular the /pkg action is now O(lg n) instead of O(n) in the
number of packages in the channel, and listing the channel contents
no longer requires calling isValidPath() on all packages.

Derivations (and thus build time dependencies) are no longer included
in the channel, because they're not GC roots.  Thus they could
disappear unexpectedly.
2012-03-12 20:47:30 +01:00
Eelco Dolstra 9f10c0f9c0 Fix a reference to BuildResultInfo 2012-03-12 20:47:30 +01:00
Eelco Dolstra 07b3dffd20 Reduce I/O in build listings by only fetching required columns
Columns such as "longDescription" can be large, so fetching them
when they're not needed is wasteful.
2012-03-12 20:47:30 +01:00
Eelco Dolstra 6526d4a65f hydra-build: only send email if the status differs from the previous build
This isn't perfect because it doesn't handle the case where a
previous build hasn't finished yet.  But at least it won't send mail
for old builds that fail while a newer build has already succeeded.
2012-03-12 20:47:29 +01:00
Eelco Dolstra 47f877c5bb Evaluator cleanups
* Don't use isCurrent anymore; instead look up builds in the previous
  jobset evaluation.  (The isCurrent field is still maintained because
  it's still used in some other places.)

* To determine whether to perform an evaluation, compare the hash of
  the current inputs with the inputs of the previous jobset
  evaluation, rather than checking if there was ever an evaluation
  with those inputs.  This way, if the inputs of an evaluation change
  back to a previous state, we get a new jobset evaluation in the
  database (and thus the latest jobset evaluation correctly represents
  the latest state of the jobset).

* Improve performance by removing some unnecessary operations and
  adding an index.
2012-03-12 20:47:29 +01:00
Eelco Dolstra bc82a82593 Fix a race condition in hydra-update-gc-roots
Since it read the actual roots after determining the set of desired
roots, there was a possibility that it would delete roots added by
hydra-evaluator or hydra-build while hydra-update-gc-roots was
running.  This could cause a derivation to be garbage-collected before
the build was performed, for instance.  Now the actual roots are read
first, so any root added after that time is not deleted.
2012-03-12 20:47:29 +01:00
Eelco Dolstra 29d5a02b94 Speed up hydra-update-gc-roots
The hydra-update-gc-roots script is taking around 95 minutes on our
Hydra instance (though a lot of that is I/O wait).  This patch
significantly reduces the number of database queries.  In particular,
the N most recent successful builds for each job in a jobset are now
determined in a single query.  Also, it removes the calls to
readlink().
2012-03-12 20:47:29 +01:00
Eelco Dolstra 5be004c999 Drop the merged tables after conversion 2012-03-12 20:47:29 +01:00
Eelco Dolstra 8d65ab6158 Don't use a prepared statement for the active build steps query
Prepared statements are sometimes much slower than unprepared
statements, because the planner doesn't have access to the query
parameters.  This is the case for the active build steps query (in
/status), where a prepared statement is three orders of magnitude
slower.  So disable the use of prepared statements in this case.

(Since the query parameters are constant here, it would be nicer if we
could tell DBIx::Class to prepare a statement with those parameters
fixed.  But I don't know an easy way to do so.)
2012-03-12 20:47:29 +01:00
Eelco Dolstra 68a867da67 Merge the BuildResultInfo table into the Builds table 2012-03-12 20:47:29 +01:00
Eelco Dolstra 25334715f8 Merge the BuildSchedulingInfo table into the Builds table
This simplifies the code and improves performance since it reduces
the number of joins.
2012-03-12 20:47:29 +01:00
Eelco Dolstra 19fe4b9b4a Add hydra-init to the tarball 2012-03-05 15:35:13 +01:00
Eelco Dolstra 541238030d Provide a command ‘hydra-init’ to initialise/upgrade the database
For schema upgrades, hydra-init executes the files
src/sql/upgrade-<N>.sql, each of which upgrades the schema from
version N-1 to N.  The upgrades are wrapped in a transaction.
2012-02-28 20:16:16 +01:00
Eelco Dolstra da26294fdb Don't install hydra-create
It doesn't do anything useful for users.
2012-02-28 15:33:28 +01:00
Eelco Dolstra b13664308c Whitespace 2012-02-28 15:27:44 +01:00
Eelco Dolstra 3d824b3a3a Indentation 2012-02-21 17:59:36 +01:00
Eelco Dolstra 578530dac2 Don't show duplicate builds in "Related builds"
Since a build may be a member of multiple jobset evaluations, we need
to do a "select distinct" here.  But maybe we should only show builds
from a single evaluation (e.g. the most recent), since showing builds
from several may be confusing.
2012-02-21 17:16:32 +01:00
Rob Vermaas 2cf9b148eb 50 for related builds might be a kind of low, will start with 100 2012-02-16 17:00:59 +01:00
Rob Vermaas 924d94cafd * minor performance tweaks
* added related builds tab which show related builds (builds that are in same evaluations), shows max 50
2012-02-16 16:56:01 +01:00
Rob Vermaas 355135b6e8 add links in admin page to clear queue (all non-running builds, and all non-running old (non-current) builds) 2012-02-16 15:31:12 +01:00
Rob Vermaas bb6ef9c2ed accidentally committed an = too little, which caused all unknown values to result in 'not building', which was not the intention 2012-02-16 11:14:22 +01:00
Rob Vermaas 739a03393c allow null values for jobs, meaning it should build 2012-02-16 11:03:22 +01:00
Ludovic Courtès 1f448673f0 hydra-build: Do not send email following an abortion. 2012-02-14 11:48:44 +01:00
Eelco Dolstra a3cc2ce796 Remove redundant dot in status emails
E.g.:

  This is to let you know that Hydra build 1998534 of job patchelf:trunk:deb_ubuntu1110x86_64 is 'Success'..
2012-02-07 14:51:47 +01:00
Ludovic Courtès 5644c1c7d9 hydra-build: Add system info to the subject and extra headers. 2012-01-31 18:27:33 +01:00