Hydra/zh-cn: Difference between revisions

Moraxyc (talk | contribs)
Created page with "# 使用 <code>hydra-create-user</code> 创建用户后,登录 Hydra"
Moraxyc (talk | contribs)
Created page with "== 资源 =="
Tags: Mobile edit Mobile web edit
 
(23 intermediate revisions by the same user not shown)
Line 116: Line 116:


<span id="Imperative_Building"></span>
<span id="Imperative_Building"></span>
=== 声明式构建 ===
=== 命令式构建 ===


这些步骤是构建 <code>hello</code> 软件包所必需的。
这些步骤是构建 <code>hello</code> 软件包所必需的。
Line 122: Line 122:
# 使用 <code>hydra-create-user</code> 创建用户后,登录 Hydra
# 使用 <code>hydra-create-user</code> 创建用户后,登录 Hydra


<div lang="en" dir="ltr" class="mw-content-ltr">
# 创建新项目
# create new project
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
* identifier: example-hello
* identifier: example-hello
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
* display name: example-hello
* display name: example-hello
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
# Actions -> Create jobset
# Actions -> Create jobset
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
* identifier: hello
* identifier: hello
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
* Nix expression: <code>release.nix</code> in <code>hydra-example</code> -> 将对给定输入中的文件 release.nix 进行求值
* Nix expression: <code>release.nix</code> in <code>hydra-example</code> -> will evaluate the file release.nix in the given input
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
* check interval: 60
* check interval: 60
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
* scheduling shares: 1
* scheduling shares: 1
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
* Inputs:
* Inputs:
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">
Line 169: Line 151:
</div>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
创建后,该 jobset 应会进入'''求值阶段'''(evaluation phase),此阶段将会获取各项输入。由于在继续之前需要先下载完整的 <code>nixpkgs</code> 仓库,因此这一阶段可能需要一些时间。求值完成后,结果应为一个将被构建的单一作业。
After creation, the jobset should be in the '''evaluation phase''' where inputs will be fetched. This phase may take some time as the complete <code>nixpkgs</code> repository needs to be downloaded before continuing. The result of the evaluation should be a single job which will get built.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Declarative_Building"></span>
=== Declarative Building ===
=== 声明式构建 ===
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">
Line 181: Line 160:
</div>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Hydra_Internals"></span>
== Hydra Internals ==
== Hydra 内部机制 ==
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Definitions"></span>
=== Definitions ===
=== 定义 ===
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
本小节概述了 Hydra 专用定义及其配置方法。
This subsection provides an overview of the Hydra-specific definitions and how to configure them.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Project"></span>
==== Project ====
==== 项目 ====  
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
一组来自单一输入(例如一次 git 检出)的 Job 集群,是你首先需要创建的内容。每个 Job 都应能够独立于其他 Job 进行构建。在大多数情况下,一个项目对应于单一代码仓库,例如 <code>nixpkgs</code>。它类似于 Jenkins 中的项目定义。
A cluster of Jobs which are all coming from a single input (like a git checkout), the first thing you will need to create. Every Job should be able to be built independently from another. Most of the time the project maps to a single repository like <code>nixpkgs</code>. It is comparable to the project definition in Jenkins.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Jobsets"></span>
==== Jobsets ====
==== 作业集 ====
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
作业集是将要运行的一组作业(jobs)列表。通常,一个作业集会对应某个特定分支(如 master、staging、stable)。作业集由其输入(inputs)定义,并会在这些输入发生变化时触发。例如,当某个分支新增提交(commit)时。不同的作业集之间也可以存在依赖关系。
A Jobset is a list of jobs which will be run. Often a jobset fits to a certain branch (master, staging, stable). A Jobset is defined by its inputs and will trigger if these inputs change. For example when a new commit onto a branch is added. Jobsets may depend on each other.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Job"></span>
==== Job ====
==== 作业 ====
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
作为作业集的一部分构建的闭包(例如单个软件包、ISO 镜像或 tarball)。
A closure which will be built as part of a job set (like a single package, iso image or tarball).
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Release_Set"></span>
==== Release Set ====
==== 发布集合 ====
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
定义发行版中描述的所有作业。按照惯例,通常会使用名为<code>release.nix</code>的文件。关于其结构的详细说明,请参阅 [https://nixos.org/hydra/manual/#idm140737315920320 Hydra 手册中的 Build Recipes]
Defines all the jobs which are described in your release. By convention a file called<code>release.nix</code> is being used. See the [https://nixos.org/hydra/manual/#idm140737315920320 Hydra manual for Build Recipes] for a thorough description of the structure.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Evaluation"></span>
==== Evaluation ====
==== 评估 ====
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
nix 代码解释为一组 <code>.drv 文件</code> 的过程。这些文件是所有相关输出的构建配方。你可以通过运行 <code>nix show-derivation nixpkgs.hello</code> 来检查这些文件。
The process of interpreting nix code into a list of <code>.drv files</code>. These files are the build recipes for all related outputs. You can introspect these files by running <code>nix show-derivation nixpkgs.hello</code>.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Build"></span>
==== Build ====
==== 构建 ====
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
作为发布集合的一部分而被触发的作业实例化过程。
Instantiation of a Job which is being triggered by being part of the release set.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Known_Issues"></span>
== Known Issues ==
== 已知问题 ==
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">
Line 249: Line 205:
</div>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
* 如果你看到 <code>error: unexpected end-of-file</code>,它可能意味着多种问题,其中一些包括:
* If you see <code>error: unexpected end-of-file</code> it can mean multiple things, some of them are:
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
# 你的 Hydra 服务器与构建器之间的 Nix 版本不匹配
# You have a miss-match between nix versions on the Hydra server and the builder
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">
Line 275: Line 227:
</syntaxHighlight>
</syntaxHighlight>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Hydra_for_NixOS_releases"></span>
== Hydra for NixOS releases ==
== 用于 NixOS 发布的 Hydra ==
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Hydra 用于管理 Nix 项目的官方发布版本。该项目的 Hydra 服务器:https://hydra.nixos.org/
Hydra is used for managing official Nix project releases. The project Hydra server: https://hydra.nixos.org/
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
一些适用于 Nix 项目的 Hydra 跟踪器:
Some Hydra trackers for Nix projects:
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
* [https://hydra.nixos.org/project/nixpkgs Nixpkgs]
* [https://hydra.nixos.org/project/nixpkgs Nixpkgs]
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
* [https://hydra.nixos.org/project/nixos NixOS]
* [https://hydra.nixos.org/project/nixos NixOS]
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Resources"></span>
== Resources ==
== 资源 ==
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">