Gentoo Archives: gentoo-dev

From: "Michał Górny" <mgorny@g.o>
To: gentoo-dev@l.g.o
Subject: [gentoo-dev] Request for help: distributed pull request CI (pkgcheck)
Date: Wed, 07 Dec 2016 18:57:02
Message-Id: 20161207195637.4fa01d6d@pomiocik
1 Hello, everyone.
2
3 TL;DR: I'm looking for some help to get pull-request CI running
4 distributed, i.e. on multiple hosts.
5
6
7 Quick history
8 -------------
9
10 The repo-mirror-ci project pretty much started as a simple cronjob
11 running on hardware contributed to the purpose by Todd Goodman
12 (considering how much this hardware has done for Gentoo, I'd suggest
13 giving him a honorary citizenship of Gentoo or something like
14 that ;-)). I can't say they were terrible but they weren't perfect
15 either. Due to lack of time, I mostly focused on improving them
16 moderately and adding new features.
17
18 Today, everything is still running on the same hardware. While
19 the hardware is real good, and I'm doing some effort to improve
20 the performance of the tools, I think it's quite close to its limits.
21
22 Right now, it is running three tasks every 20 minutes: updating repo
23 mirrors, running pkgcheck on Gentoo and processing one pull request.
24 However, if those tasks delay beyond those 20 minutes, the poor man's
25 scheduling based on cron + lockfiles may cause some of the executions
26 to be skipped.
27
28 In other words, the best case is processing 3 pull requests / h. This
29 is starting to be no longer sufficient, and causing significant delays
30 during periods of high contributor activity -- while my goal would be to
31 provide the results ASAP -- 10-20 minutes would be perfect.
32
33
34 The goal and needs
35 ------------------
36
37 I think the best way forward would be to start distributing tasks
38 between more systems. While I don't really have time to make whole
39 repo-mirror-ci distributed, I think it should be feasible to start
40 splitting pull request processing out of it.
41
42 I would use some help to achieve that, esp. wrt distributed task
43 scheduling.
44
45 Can you think of any tools that could help me get the task done easily
46 and with as little of reinventing the wheel as possible? Right now, I
47 have just a lot of trivial shell script that checks pull request for
48 changes, checks them out, runs 'pmaint regen', pkgcheck, publishes all
49 kinds of results and statuses, and also compares QA results to
50 determine new failures created by the PR [1].
51
52 As I see it, checking for changes and submitting the results should
53 stay on the current host. However, it should be able to run all
54 the actual work on slaves and retrieve the results from them. I would
55 appreciate all the help with implementing that, plus possibly some
56 degree of control to make it possible to update pkgcheck on slaves
57 easily.
58
59 Please let me know if you're interested in helping. Thanks.
60
61 [1]:https://bitbucket.org/mgorny/repo-mirror-ci/src/master/pull-requests.job
62
63 --
64 Best regards,
65 Michał Górny

Replies