Hydra/en: Difference between revisions
 Updating to match new version of source page  | 
				 Updating to match new version of source page  | 
				||
| (One intermediate revision by the same user not shown) | |||
| Line 1: | Line 1: | ||
<languages />  | <languages />  | ||
{{note| Hydra is intended to be used by Nix/NixOS package developers; it is not needed to simply use NixOS.}}  | |||
Hydra is a tool for continuous integration testing and software release that uses a purely functional language to describe build jobs and their dependencies. Continuous integration is a simple technique to improve the quality of the software development process. An automated system continuously or periodically checks out the source code of a project, builds it, runs tests, and produces reports for the developers. Thus, various errors that might accidentally be committed into the code base are automatically caught.  | Hydra is a tool for continuous integration testing and software release that uses a purely functional language to describe build jobs and their dependencies. Continuous integration is a simple technique to improve the quality of the software development process. An automated system continuously or periodically checks out the source code of a project, builds it, runs tests, and produces reports for the developers. Thus, various errors that might accidentally be committed into the code base are automatically caught.  | ||
The official Hydra servers provide pre-built binary packages to speed up the update time for   | The official Hydra servers provide pre-built binary packages to speed up the update time for Nixpkgs: Users do not have to compile them on their own computers.  | ||
The [https://nixos.org/hydra/manual/ Hydra manual] provides an overview of the functionality and features of Hydra, as well as an up-to-date installation guide.    | The [https://nixos.org/hydra/manual/ Hydra manual] provides an overview of the functionality and features of Hydra, as well as an up-to-date installation guide.    | ||
| Line 10: | Line 12: | ||
A full deployment can be enabled as easy as:  | A full deployment can be enabled as easy as:  | ||
<  | <syntaxhighlight lang="nix">  | ||
   services.hydra = {  |    services.hydra = {  | ||
     enable = true;  |      enable = true;  | ||
| Line 17: | Line 19: | ||
     # a standalone Hydra will require you to unset the buildMachinesFiles list to avoid using a nonexistant /etc/nix/machines  |      # a standalone Hydra will require you to unset the buildMachinesFiles list to avoid using a nonexistant /etc/nix/machines  | ||
     buildMachinesFiles = [];  |      buildMachinesFiles = [];  | ||
     # you will probably also want, otherwise *everything* will be built from scratch  |      # you will probably also want this, otherwise *everything* will be built from scratch  | ||
     useSubstitutes = true;  |      useSubstitutes = true;  | ||
   };  |    };  | ||
</  | </syntaxhighlight>  | ||
The module will automatically enable postgresql if you do not change the <code>services.hydra.dbi</code> option. Database layout will be created automatically by the Hydra service, however keep in mind that some state will be stored in the database and a complete stateless configuration is currently not possible - do your backups.  | The module will automatically enable [[PostgreSQL|postgresql]] if you do not change the <code>services.hydra.dbi</code> option. Database layout will be created automatically by the Hydra service, however keep in mind that some state will be stored in the database and a complete stateless configuration is currently not possible - do your backups.  | ||
* See nixos-option or the [https://search.nixos.org/options?query=services.hydra Nixos Options page] for all options  | * See nixos-option or the [https://search.nixos.org/options?query=services.hydra Nixos Options page] for all options  | ||
| Line 44: | Line 46: | ||
   nix.buildMachines = [  |    nix.buildMachines = [  | ||
     { hostName = "localhost";  |      { hostName = "localhost";  | ||
      protocol = null;  | |||
       system = "x86_64-linux";  |        system = "x86_64-linux";  | ||
       supportedFeatures = ["kvm" "nixos-test" "big-parallel" "benchmark"];  |        supportedFeatures = ["kvm" "nixos-test" "big-parallel" "benchmark"];  | ||
| Line 58: | Line 61: | ||
Configure jobset to the following:  | Configure jobset to the following:  | ||
* Type: Flake  | * Type: [[Flakes|Flake]]  | ||
* Flake URI: an URI to a repo containing a Flake like git+https://git.myserver.net/user/repo.git  | * Flake URI: an URI to a repo containing a Flake like git+https://git.myserver.net/user/repo.git  | ||