177 lines
5 KiB
XML
177 lines
5 KiB
XML
|
<chapter xmlns="http://docbook.org/ns/docbook"
|
||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||
|
xml:id="chap-projects">
|
||
|
|
||
|
<title>Creating and Managing Projects</title>
|
||
|
|
||
|
<para>
|
||
|
Once Hydra is installed and running, the next step is to add
|
||
|
projects to the build farm. We follow the example of the <link
|
||
|
xlink:href="http://nixos.org/patchelf.html">Patchelf
|
||
|
project</link>, a software tool written in C and using the GNU
|
||
|
Build System (GNU Autoconf and GNU Automake).
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
Log in to the web interface of your Hydra installation using the
|
||
|
user name and password you inserted in the database (by default,
|
||
|
Hydra's web server listens on <link
|
||
|
xlink:href="http://localhost:3000/"><literal>localhost:3000</literal></link>).
|
||
|
Then follow the "Create Project" link to create a new project.
|
||
|
</para>
|
||
|
|
||
|
<section>
|
||
|
<title>Project Information</title>
|
||
|
|
||
|
<para>
|
||
|
A project definition consists of some general information and a
|
||
|
set of job sets. The general information identifies a project,
|
||
|
its owner, and current state of activity.
|
||
|
|
||
|
Here's what we fill in for the patchelf project:
|
||
|
|
||
|
<screen>
|
||
|
Identifier: patchelf
|
||
|
</screen>
|
||
|
|
||
|
The <emphasis>identifier</emphasis> is the identity of the
|
||
|
project. It is used in URLs and in the names of build results.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
The identifier should be a unique name (it is the primary
|
||
|
database key for the project table in the database). If you try
|
||
|
to create a project with an already existing identifier you'd
|
||
|
get an error message such as:
|
||
|
|
||
|
<screen>
|
||
|
I'm very sorry, but an error occurred:
|
||
|
DBIx::Class::ResultSet::create(): DBI Exception: DBD::SQLite::st execute failed: column name is not unique(19) at dbdimp.c line 402
|
||
|
</screen>
|
||
|
|
||
|
So try to create the project after entering just the general
|
||
|
information to figure out if you have chosen a unique name.
|
||
|
Job sets can be added once the project has been created.
|
||
|
|
||
|
<screen>
|
||
|
Display name: Patchelf
|
||
|
</screen>
|
||
|
|
||
|
The <emphasis>display name</emphasis> is used in menus.
|
||
|
|
||
|
<screen>
|
||
|
Description: A tool for modifying ELF binaries
|
||
|
</screen>
|
||
|
|
||
|
The <emphasis>description</emphasis> is used as short
|
||
|
documentation of the nature of the project.
|
||
|
|
||
|
<screen>
|
||
|
Owner: eelco
|
||
|
</screen>
|
||
|
|
||
|
The <emphasis>owner</emphasis> of a project can create and edit
|
||
|
job sets.
|
||
|
|
||
|
<screen>
|
||
|
Enabled: Yes
|
||
|
</screen>
|
||
|
|
||
|
Only if the project is <emphasis>enabled</emphasis> are builds
|
||
|
performed.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
Once created there should be an entry for the project in the
|
||
|
sidebar. Go to the project page for the <link
|
||
|
xlink:href="http://localhost:3000/project/patchelf">Patchelf</link>
|
||
|
project.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section>
|
||
|
<title>Job Sets</title>
|
||
|
|
||
|
<para>
|
||
|
A project can consist of multiple <emphasis>job sets</emphasis>
|
||
|
(hereafter <emphasis>jobsets</emphasis>), separate tasks that
|
||
|
can be built separately, but may depend on each other (without
|
||
|
cyclic dependencies, of course). Go to the <link
|
||
|
xlink:href="http://localhost:3000/project/patchelf/edit">Edit</link>
|
||
|
page of the Patchelf project and "Add a new jobset" by providing
|
||
|
the following "Information":
|
||
|
|
||
|
<screen>
|
||
|
Identifier: trunk
|
||
|
Description: Trunk
|
||
|
Nix expression: release.nix in input patchelfSrc
|
||
|
</screen>
|
||
|
|
||
|
This states that in order to build the <literal>trunk</literal>
|
||
|
jobset, the Nix expression in the file
|
||
|
<filename>release.nix</filename>, which can be obtained from
|
||
|
input <literal>patchelfSrc</literal>, should be
|
||
|
evaluated. (We'll have a look at
|
||
|
<filename>release.nix</filename> later.)
|
||
|
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
To realize a job we probably need a number of inputs, which can
|
||
|
be declared in the table below. As many inputs as required can
|
||
|
be added. For patchelf we declare the following inputs.
|
||
|
|
||
|
<screen>
|
||
|
patchelfSrc
|
||
|
'Subversion checkout' https://svn.nixos.org/repos/nix/patchelf/trunk
|
||
|
|
||
|
nixpkgs 'Subversion checkout' https://svn.nixos.org/repos/nix/nixpkgs/trunk
|
||
|
|
||
|
officialRelease Boolean false
|
||
|
|
||
|
system String value "i686-linux"
|
||
|
</screen>
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section>
|
||
|
<title>Release Set</title>
|
||
|
|
||
|
<!-- TODO -->
|
||
|
there must be one primary job
|
||
|
|
||
|
check the radio button of exactly one job
|
||
|
|
||
|
https://svn.nixos.org/repos/nix/nixpkgs/trunk
|
||
|
</section>
|
||
|
|
||
|
<section>
|
||
|
<title>Building Jobs</title>
|
||
|
</section>
|
||
|
|
||
|
<section>
|
||
|
<title><filename>release.nix</filename></title>
|
||
|
|
||
|
- Voorbeelden van Nix expressies voor Hydra:
|
||
|
|
||
|
|
||
|
|
||
|
https://svn.nixos.org/repos/nix/patchelf/trunk/release.nix
|
||
|
https://svn.nixos.org/repos/nix/nix/trunk/release.nix
|
||
|
https://svn.nixos.org/repos/nix/hydra/trunk/release.nix
|
||
|
</section>
|
||
|
|
||
|
<section>
|
||
|
<title>Building on the Command Line</title>
|
||
|
|
||
|
Overigens zijn die helemaal niet Hydra-specifiek, je kunt ze gewoon vanaf de
|
||
|
command line bouwen, bijv. als je een patchelf checkout hebt (met een nixpkgs
|
||
|
checkout in ../nixpkgs):
|
||
|
|
||
|
<screen>
|
||
|
$ nix-build release.nix -A rpm_fedora10i386
|
||
|
</screen>
|
||
|
|
||
|
</section>
|
||
|
</chapter>
|