forked from lix-project/hydra
doc: drop dev-notes & make update-dbix more discoverable
`dev-notes` are severely outdated. I dropped everything except one note that I moved to hacking.md. The parts about creating users are also covered elsewhere. The `update-dbix` part got a just command to make it discoverable again.
This commit is contained in:
parent
1f802c008c
commit
e987f74954
27
README.md
27
README.md
|
@ -78,11 +78,11 @@ $ nix-build
|
||||||
### Development Environment
|
### Development Environment
|
||||||
|
|
||||||
You can use the provided shell.nix to get a working development environment:
|
You can use the provided shell.nix to get a working development environment:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ nix-shell
|
$ nix develop
|
||||||
$ autoreconfPhase
|
[nix-shell]$ just setup
|
||||||
$ configurePhase # NOTE: not ./configure
|
[nix-shell]$ just install
|
||||||
$ make
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Executing Hydra During Development
|
### Executing Hydra During Development
|
||||||
|
@ -91,10 +91,9 @@ When working on new features or bug fixes you need to be able to run Hydra from
|
||||||
can be done using [foreman](https://github.com/ddollar/foreman):
|
can be done using [foreman](https://github.com/ddollar/foreman):
|
||||||
|
|
||||||
```
|
```
|
||||||
$ nix-shell
|
$ nix develop
|
||||||
$ # hack hack
|
[nix-shell]$ just install
|
||||||
$ make
|
[nix-shell]$ foreman start
|
||||||
$ foreman start
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Have a look at the [Procfile](./Procfile) if you want to see how the processes are being started. In order to avoid
|
Have a look at the [Procfile](./Procfile) if you want to see how the processes are being started. In order to avoid
|
||||||
|
@ -115,22 +114,22 @@ Start by following the steps in [Development Environment](#development-environme
|
||||||
Then, you can run the tests and the perlcritic linter together with:
|
Then, you can run the tests and the perlcritic linter together with:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
$ nix-shell
|
$ nix develop
|
||||||
$ make check
|
[nix-shell]$ just test
|
||||||
```
|
```
|
||||||
|
|
||||||
You can run a single test with:
|
You can run a single test with:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ nix-shell
|
$ nix develop
|
||||||
$ yath test ./t/foo/bar.t
|
[nix-shell]$ yath test ./t/foo/bar.t
|
||||||
```
|
```
|
||||||
|
|
||||||
And you can run just perlcritic with:
|
And you can run just perlcritic with:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ nix-shell
|
$ nix develop
|
||||||
$ make perlcritic
|
[nix-shell]$ just perlcritic
|
||||||
```
|
```
|
||||||
|
|
||||||
### JSON API
|
### JSON API
|
||||||
|
|
|
@ -1,122 +0,0 @@
|
||||||
* Recreating the schema bindings:
|
|
||||||
|
|
||||||
$ make -C src/sql update-dbix
|
|
||||||
|
|
||||||
* Running the test server:
|
|
||||||
|
|
||||||
$ DBIC_TRACE=1 ./script/hydra_server.pl
|
|
||||||
|
|
||||||
* Setting the maximum number of concurrent builds per system type:
|
|
||||||
|
|
||||||
$ psql -d hydra <<< "insert into SystemTypes(system, maxConcurrent) values('i686-linux', 3);"
|
|
||||||
|
|
||||||
* Creating a user:
|
|
||||||
|
|
||||||
$ hydra-create-user root --email-address 'e.dolstra@tudelft.nl' \
|
|
||||||
--password-prompt
|
|
||||||
|
|
||||||
(Replace "foobar" with the desired password.)
|
|
||||||
|
|
||||||
To make the user an admin:
|
|
||||||
|
|
||||||
$ hydra-create-user root --role admin
|
|
||||||
|
|
||||||
To enable a non-admin user to create projects:
|
|
||||||
|
|
||||||
$ hydra-create-user root --role create-projects
|
|
||||||
|
|
||||||
* Changing the priority of a scheduled build:
|
|
||||||
|
|
||||||
update buildschedulinginfo set priority = 200 where id = <ID>;
|
|
||||||
|
|
||||||
* Changing the priority of all builds for a jobset:
|
|
||||||
|
|
||||||
update buildschedulinginfo set priority = 20 where id in (select id from builds where finished = 0 and project = 'nixpkgs' and jobset = 'trunk');
|
|
||||||
|
|
||||||
|
|
||||||
* Steps to install:
|
|
||||||
|
|
||||||
- Install the Hydra closure.
|
|
||||||
|
|
||||||
- Set HYDRA_DATA to /somewhere.
|
|
||||||
|
|
||||||
- Run hydra_init.pl
|
|
||||||
|
|
||||||
- Start hydra_server
|
|
||||||
|
|
||||||
- Visit http://localhost:3000/
|
|
||||||
|
|
||||||
- Create a user (see above)
|
|
||||||
|
|
||||||
- Create a project, jobset etc.
|
|
||||||
|
|
||||||
- Start hydra_evaluator and hydra_queue_runner
|
|
||||||
|
|
||||||
|
|
||||||
* Job selection:
|
|
||||||
|
|
||||||
php-sat:build [system = "i686-linux"]
|
|
||||||
php-sat:build [same system]
|
|
||||||
tarball [same patchelfSrc]
|
|
||||||
--if system i686-linux --arg build {...}
|
|
||||||
|
|
||||||
|
|
||||||
* Restart all aborted builds in a given evaluation (e.g. 820909):
|
|
||||||
|
|
||||||
> update builds set finished = 0 where id in (select id from builds where finished = 1 and buildstatus = 3 and exists (select 1 from jobsetevalmembers where eval = 820909 and build = id));
|
|
||||||
|
|
||||||
|
|
||||||
* Restart all builds in a given evaluation that had a build step time out:
|
|
||||||
|
|
||||||
> update builds set finished = 0 where id in (select id from builds where finished = 1 and buildstatus != 0 and exists (select 1 from jobsetevalmembers where eval = 926992 and build = id) and exists (select 1 from buildsteps where build = id and status = 7));
|
|
||||||
|
|
||||||
|
|
||||||
* select * from (select project, jobset, job, system, max(timestamp) timestamp from builds where finished = 1 group by project, jobset, job, system) x join builds y on x.timestamp = y.timestamp and x.project = y.project and x.jobset = y.jobset and x.job = y.job and x.system = y.system;
|
|
||||||
|
|
||||||
select * from (select project, jobset, job, system, max(timestamp) timestamp from builds where finished = 1 group by project, jobset, job, system) natural join builds;
|
|
||||||
|
|
||||||
|
|
||||||
* Delete all scheduled builds that are not already building:
|
|
||||||
|
|
||||||
delete from builds where finished = 0 and not exists (select 1 from buildschedulinginfo s where s.id = builds.id and busy != 0);
|
|
||||||
|
|
||||||
|
|
||||||
* select x.project, x.jobset, x.job, x.system, x.id, x.timestamp, r.buildstatus, b.id, b.timestamp
|
|
||||||
from (select project, jobset, job, system, max(id) as id from Builds where finished = 1 group by project, jobset, job, system) as a_
|
|
||||||
natural join Builds x
|
|
||||||
natural join BuildResultInfo r
|
|
||||||
left join Builds b on b.id =
|
|
||||||
(select max(id) from builds c
|
|
||||||
natural join buildresultinfo r2
|
|
||||||
where x.project = c.project and x.jobset = c.jobset and x.job = c.job and x.system = c.system
|
|
||||||
and x.id > c.id and r.buildstatus != r2.buildstatus);
|
|
||||||
|
|
||||||
* Using PostgreSQL (version 9.2 or newer is required):
|
|
||||||
|
|
||||||
$ HYDRA_DBI="dbi:Pg:dbname=hydra;" hydra-server
|
|
||||||
|
|
||||||
|
|
||||||
* Find the builds with the highest number of build steps:
|
|
||||||
|
|
||||||
select id, (select count(*) from buildsteps where build = x.id) as n from builds x order by n desc;
|
|
||||||
|
|
||||||
|
|
||||||
* Evaluating the NixOS Hydra jobs:
|
|
||||||
|
|
||||||
$ ./hydra_eval_jobs ~/Dev/nixos-wc/release.nix --arg nixpkgs '{outPath = /home/eelco/Dev/nixpkgs-wc;}' --arg nixosSrc '{outPath = /home/eelco/Dev/nixos-wc; rev = 1234;}' --arg services '{outhPath = /home/eelco/services-wc;}' --argstr system i686-linux --argstr system x86_64-linux --arg officialRelease false
|
|
||||||
|
|
||||||
|
|
||||||
* Show all the failing jobs/systems in the nixpkgs:stdenv jobset that
|
|
||||||
succeed in the nixpkgs:trunk jobset:
|
|
||||||
|
|
||||||
select job, system from builds b natural join buildresultinfo where project = 'nixpkgs' and jobset = 'stdenv' and iscurrent = 1 and finished = 1 and buildstatus != 0 and exists (select 1 from builds natural join buildresultinfo where project = 'nixpkgs' and jobset = 'trunk' and job = b.job and system = b.system and iscurrent = 1 and finished = 1 and buildstatus = 0) order by job, system;
|
|
||||||
|
|
||||||
|
|
||||||
* Get all Nixpkgs jobs that have never built succesfully:
|
|
||||||
|
|
||||||
select project, jobset, job from builds b1
|
|
||||||
where project = 'nixpkgs' and jobset = 'trunk' and iscurrent = 1
|
|
||||||
group by project, jobset, job
|
|
||||||
having not exists
|
|
||||||
(select 1 from builds b2 where b1.project = b2.project and b1.jobset = b2.jobset and b1.job = b2.job and finished = 1 and buildstatus = 0)
|
|
||||||
order by project, jobset, job;
|
|
|
@ -97,3 +97,14 @@ Off NixOS, change `/etc/nix/nix.conf`:
|
||||||
```conf
|
```conf
|
||||||
trusted-users = root YOURUSERNAME
|
trusted-users = root YOURUSERNAME
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Updating schema bindings
|
||||||
|
|
||||||
|
```
|
||||||
|
just update-dbix
|
||||||
|
```
|
||||||
|
|
||||||
|
### Find the builds with the highest number of build steps:
|
||||||
|
|
||||||
|
select id, (select count(*) from buildsteps where build = x.id) as n from builds x order by n desc;
|
||||||
|
|
||||||
|
|
6
justfile
6
justfile
|
@ -9,3 +9,9 @@ install *OPTIONS: (build OPTIONS)
|
||||||
|
|
||||||
test *OPTIONS:
|
test *OPTIONS:
|
||||||
meson test -C build --print-errorlogs {{ OPTIONS }}
|
meson test -C build --print-errorlogs {{ OPTIONS }}
|
||||||
|
|
||||||
|
update-dbix:
|
||||||
|
cd src/sql && ./update-dbix-harness.sh
|
||||||
|
|
||||||
|
perlcritic:
|
||||||
|
perlcritic .
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
-- add a map of the lowercase name of your table to the CamelCase
|
-- add a map of the lowercase name of your table to the CamelCase
|
||||||
-- version of your table.
|
-- version of your table.
|
||||||
--
|
--
|
||||||
-- 3. Run `make -C src/sql update-dbix` in the root
|
-- 3. Run `just update-dbix` in the root
|
||||||
-- of the project directory, and git add / git commit the changed,
|
-- of the project directory, and git add / git commit the changed,
|
||||||
-- generated files.
|
-- generated files.
|
||||||
--
|
--
|
||||||
|
|
Loading…
Reference in a new issue