Shea Levy 4392d3e21d Enable declarative projects.
This allows fully declarative project specifications. This is best
illustrated by example:

* I create a new project, setting the declarative spec file to
  "spec.json" and the declarative input to a git repo pointing
  at git://github.com/shlevy/declarative-hydra-example.git
* hydra creates a special ".jobsets" jobset alongside the project
* Just before evaluating the ".jobsets" jobset, hydra fetches
  declarative-hydra-example.git, reads spec.json as a jobset spec,
  and updates the jobset's configuration accordingly:
{
    "enabled": 1,
    "hidden": false,
    "description": "Jobsets",
    "nixexprinput": "src",
    "nixexprpath": "default.nix",
    "checkinterval": 300,
    "schedulingshares": 100,
    "enableemail": false,
    "emailoverride": "",
    "keepnr": 3,
    "inputs": {
        "src": { "type": "git", "value": "git://github.com/shlevy/declarative-hydra-example.git", "emailresponsible": false },
        "nixpkgs": { "type": "git", "value": "git://github.com/NixOS/nixpkgs.git release-16.03", "emailresponsible": false }
    }
}
* When the "jobsets" job of the ".jobsets" jobset completes, hydra
  reads its output as a JSON representation of a dictionary of
  jobset specs and creates a jobset named "master" configured
  accordingly (In this example, this is the same configuration as
  .jobsets itself, except using release.nix instead of default.nix):
{
    "enabled": 1,
    "hidden": false,
    "description": "js",
    "nixexprinput": "src",
    "nixexprpath": "release.nix",
    "checkinterval": 300,
    "schedulingshares": 100,
    "enableemail": false,
    "emailoverride": "",
    "keepnr": 3,
    "inputs": {
        "src": { "type": "git", "value": "git://github.com/shlevy/declarative-hydra-example.git", "emailresponsible": false },
        "nixpkgs": { "type": "git", "value": "git://github.com/NixOS/nixpkgs.git release-16.03", "emailresponsible": false }
    }
}
2016-05-09 08:54:27 -04:00
..
2013-02-20 18:26:26 +01:00
2016-03-25 13:57:17 +01:00
Doh
2013-11-05 16:13:09 +01:00
2014-04-08 18:50:37 +02:00
2013-08-30 13:53:25 +00:00
2016-05-09 08:54:27 -04:00
2013-09-03 17:35:21 +02:00
2014-10-07 13:35:31 +02:00
2016-03-25 13:57:17 +01:00
2016-03-25 13:49:06 +01:00
2016-05-09 08:54:27 -04:00
2014-08-17 23:54:12 +02:00
2016-03-16 15:23:56 +01:00
2014-10-07 13:35:31 +02:00
2013-02-20 15:54:33 +01:00
2013-11-06 14:11:56 +01:00
2016-05-09 08:54:27 -04:00
2016-02-19 20:58:40 +01:00
2013-02-20 15:54:33 +01:00
2013-02-20 18:26:26 +01:00
2015-07-10 15:41:57 +02:00
2013-07-09 13:55:29 +02:00