ITADN
NixOS/hydra
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

九头蛇

CI

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

为了评估和构建任何内容,您需要创建包含 jobsetsprojects。 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.nix in hydra
  • 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 免费提供。