Hydra
安装和设置
注意:下面提供的说明是为了让新用户能够进行简单的本地安装和运行。它们绝对不足以运行一个生产服务器,更不用说一个公共实例了。
启用服务
目前只支持在 NixOS 上运行 Hydra。hydra 模块 允许进行简单的设置。以下配置可用于简单的设置,即在 localhost 上执行所有的构建(请参考选项页面的所有可用选项)。
{ services.hydra = { enable = true; hydraURL = "http://localhost:3000"; notificationSender = "hydra@localhost"; buildMachinesFiles = []; useSubstitutes = true; }; }
创建一个管理用户
一旦 Hydra 服务已按上述方式配置并激活,您应该已经能够通过指定的 URL 访问 UI 界面。但是有些操作需要先创建一个管理员用户。
$ su - hydra $ hydra-create-user <USER> --full-name '<NAME>' \ --email-address '<EMAIL>' --password <PASSWORD> --role admin
之后,您应该可以通过点击网页界面右上方的 "登录",使用 hydra-crate-user 指定的证书进行登录。登录后,您可以点击 "Admin -> Create Project" 来配置您的第一个项目。
创建一个简单的项目和任务集
为了评估和构建任何东西,你需要装箱包含作业集的项目。Hydra 支持命令式和声明式项目以及许多不同的配置。下面的步骤将指导您完成创建最小的命令式项目配置所需的步骤。
创建一个项目
以管理员身份登录,点击 "管理",选择 "创建项目"。填写如下表格。
- Identifier:
hello
- Display name:
hello
- Description:
hello project
创建一个工作集
创建项目后,你会被转到项目页面。点击 "操作",选择 "创建作业集"。在表格中填写以下数值。
- Identifier:
hello
- Nix expression(Nix 表达式):
examples/hello.nix
inhydra
- Check interval(检查间隔): 60
- Scheduling shares: 1
我们必须为这个作业集添加两个输入。一个是 nixpkgs,一个是 hydra(我们在上面的 Nix 表达式中提到的)。
-
Input name:
nixpkgs
-
Type:
Git checkout
-
Value:
https://github.com/nixos/nixpkgs-channels nixos-20.03
-
Input name:
hydra
-
Type:
Git checkout
-
Value:
https://github.com/nixos/hydra
确保页面顶部的 State 被设置为 "Enabled",然后点击 "Create jobset"。这样就完成了每分钟评估一次 ./examples/hello.nix 的作业集的创建。点击 "Evaluations" 应该会在短暂的延迟后列出新创建的作业集的第一次评估。
构建 Hydra
你可以通过 nix-build 使用提供的 default.nix 来构建 Hydra。
$ nix-build
开发环境
你可以使用提供的 shell.nix 来获得一个工作的开发环境。
$ nix-shell $ ./bootstrap $ configurePhase # NOTE: not ./configure $ make
在开发过程中执行 Hydra
在开发新功能或修复错误时,你需要能够从你的工作副本中运行 Hydra。这可以通过 foreman 来实现。
$ nix-shell $ # hack hack $ make $ foreman start
如果你想知道进程是如何启动的,请查看 Procfile。为了避免与你的主机上可能运行的服务发生冲突,Hydra 和 postgress 是在自定义端口上启动的。
- hydra-server: 63333 with the username "alice" and the password "foobar"
- postgresql: 64444
请注意,这只是在开发过程中执行 Hydra 的一种临时方式。请使用 NixOS 模块在生产中实际运行 Hydra。
JSON API
你也可以通过 JSON API 与 Hydra 进行接口。该 API 定义在 hydra-api.yaml 中,你可以通过 swagger 编辑器 进行测试和探索。
其他资源
许可证
Hydra 是根据 GPL-3.0 授权的。
图标由 EmojiOne 免费提供。
(The first version translated by vz on 2020.10.13)