Gentoo Archives: gentoo-dev

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