Hydra

Hydra,基于 Nix 的持续构建系统。「Hydra, the Nix-based continuous build system」

Github stars Tracking Chart

Hydra

Hydra 是基于 Nix 项目的 持续集成 服务。

安装和设置

注意:下面提供的说明是为了让新用户能够进行简单的本地安装和运行。它们绝对不足以运行一个生产服务器,更不用说一个公共实例了。

启用服务

目前只支持在 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 in hydra
  • Check interval(检查间隔): 60
  • Scheduling shares: 1

我们必须为这个作业集添加两个输入。一个是 nixpkgs,一个是 hydra(我们在上面的 Nix 表达式中提到的)。

确保页面顶部的 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)

Main metrics

Overview
Name With OwnerNixOS/hydra
Primary LanguagePerl
Program languageShell (Language Count: 10)
PlatformLinux, Mac
License:GNU General Public License v3.0
所有者活动
Created At2011-10-29 02:06:57
Pushed At2025-04-16 16:55:03
Last Commit At2025-04-16 16:49:31
Release Count0
用户参与
Stargazers Count1.3k
Watchers Count45
Fork Count315
Commits Count4.4k
Has Issues Enabled
Issues Count683
Issue Open Count316
Pull Requests Count572
Pull Requests Open Count74
Pull Requests Close Count125
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private

Hydra

Hydra is a continuous integration system based
on the Nix package manager. For more information, see the
manual.

For development see
hacking instructions.


Icons provided free by EmojiOne.