九头蛇
Hydra 是一个用于基于 Nix 项目的 持续集成 服务。
安装与配置
注意:以下说明旨在帮助新用户完成简单的本地安装并使其运行起来。 它们对于运行生产服务器来说远不足够,更不用说公共实例了。
启用服务
目前仅在 NixOS 上支持运行 Hydra。 hydra 模块 允许轻松进行设置。 以下配置可用于执行所有构建的简单设置,这些构建均在 localhost 上进行(请参阅 选项页面 以获取所有可用选项):
{
services.hydra = {
enable = true;
hydraURL = "http://localhost:3000";
notificationSender = "hydra@localhost";
useSubstitutes = true;
};
}
创建管理员用户
一旦 Hydra 服务如上所述配置并激活,您应该已经能够访问指定 URL 处的 UI 界面。 然而,某些操作需要一个必须先创建的管理员用户:
$ su - hydra
$ hydra-create-user <USER> --full-name '<NAME>' \
--email-address '<EMAIL>' --password-prompt --role admin
之后,您应该能够使用 hydra-create-user 中指定的凭据,通过点击 Web 界面右上角的“Sign In”来登录。
登录成功后,您可以点击“Admin -> Create Project”来配置您的第一个项目。
Creating A Simple Project And Jobset
为了评估和构建任何内容,您需要创建包含 jobsets 的 projects。 Hydra 支持命令式和声明式项目以及许多不同的配置。 以下步骤将指导您完成创建最小命令式项目配置所需的步骤。
Creating A Project
以管理员身份登录,点击“Admin”并选择“Create project”。按如下方式填写表单:
- Identifier:
hello-project - Display name:
hello - Description:
hello project
点击“Create project”。
Creating A Jobset
创建项目后,您将被转发到项目页面。 点击“Actions”并选择“Create jobset”。 对于下面的示例,将 Type 更改为 Legacy。 使用以下值填写表单:
- Identifier:
hello-project - Nix expression:
examples/hello.nixinhydra - Check interval: 60
- Scheduling shares: 1
我们需要为此 jobset 添加两个输入。一个用于 nixpkgs,另一个用于 hydra(我们在上面的 Nix 表达式中引用了它):
-
Input name:
nixpkgs -
Type:
Git checkout -
Value:
https://github.com/NixOS/nixpkgs nixos-24.05 -
Input name:
hydra -
Type:
Git checkout -
Value:
https://github.com/nixos/hydra
确保页面顶部的 State 设置为 "Enabled",并点击 "Create jobset"。 这标志着创建一个每分钟评估一次 ./examples/hello.nix 的 jobset 的创建过程结束。 点击 "Evaluations" 后,经过短暂延迟,应列出新创建的 jobset 的第一次评估。
Building And Developing
Building Hydra
您可以使用 nix-build 通过提供的 default.nix 来构建 Hydra:
$ nix build
开发环境
你可以使用提供的 flake 来获取一个可用的开发环境:
$ nix develop
$ mesonConfigurePhase
$ ninja
$ cargo build
开发环境也可以使用 nix-direnv 自动建立。
在开发过程中执行 Hydra
在开发新功能或修复 bug 时,你需要能够从工作副本中运行 Hydra。 这可以使用 foreman 来完成:
$ nix develop
$ # hack hack
$ ninja -C build
$ cargo build
$ foreman start
如果想查看进程是如何启动的,请查看 Procfile。 为了避免与主机上可能正在运行的服务发生冲突,hydra 和 postgress 在自定义端口上启动:
- hydra-server: 63333,用户名为 "alice",密码为 "foobar"
- postgresql: 64444,可以使用
psql -p 64444 -h localhost hydra进行连接
请注意,这仅作为开发期间临时执行 Hydra 的方式。 请在生产环境中实际运行 Hydra 时使用 NixOS 模块。
检查你的补丁
在进行更改后,请验证测试套件通过且 perlcritic 仍然正常。
首先,请按照 Development Environment 中的步骤操作。
然后,你可以使用以下命令一起运行 Perl 测试和 perlcritic:
$ nix develop
$ meson test -C build
你可以使用以下命令运行单个 Perl 测试:
$ nix develop
$ cd build
$ meson test --test-args=../t/Hydra/Event.t testsuite
并使用以下命令运行 perlcritic:
$ nix develop
$ cd build
$ meson test perlcritic
并使用以下命令运行 Rust 测试:
$ nix develop
$ cargo test
JSON API
你还可以通过 JSON API 与 Hydra 进行交互。 该 API 定义在 hydra-api.yaml 中,你可以通过 swagger editor 进行测试和探索
附加资源
许可证
Hydra 采用 GPL-3.0 许可证
图标由 EmojiOne 免费提供。