Gentoo Archives: gentoo-dev

From: Brian Dolbec <dolsen@g.o>
To: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] Value of Continuous integration vs Code Review / Pull Requests
Date: Sun, 31 May 2020 18:30:56
Message-Id: 20200531113048.61e3486c@storm
In Reply to: Re: [gentoo-dev] Value of Continuous integration vs Code Review / Pull Requests by Alec Warner
1 On Wed, 27 May 2020 01:28:02 -0700
2 Alec Warner <antarus@g.o> wrote:
3
4 > On Wed, May 27, 2020 at 1:09 AM Brian Dolbec <dolsen@g.o>
5 > wrote:
6 >
7 > > On Tue, 26 May 2020 20:24:56 -0700
8 > > Alec Warner <antarus@g.o> wrote:
9 > >
10 > > > The TL;DR is that a crack team of infra-folks[0] have been putting
11 > > > together demos of CI services and things like gitlab / gitea /
12 > > > gerrit and so on.
13 > > >
14 > > > Some of these come in combined (e.g. gitlab offers repo hosting,
15 > > > code review / pull reqs, CI services, and deploy services.) Some
16 > > > of these are piecemeal (e.g. gerrit has code review, zuul has CI)
17 > > > and gitea offers repo-hosting but CI is separate (e.g. drone.)
18 > > >
19 > > > On the infra-side, I think we are pretty happy with repo-hosting
20 > > > (gitolite) and repo-serving (gitweb). We are missing a CI piece
21 > > > and a pull-request piece. Most of the users using PRs use either
22 > > > a gitlab or github mirror.
23 > > >
24 > > > I think the value of CI is pretty obvious to me (and I see tons
25 > > > of use cases in Infra.) We could easily build CI into our current
26 > > > repository solution (e.g. gitolite.) However gitolite doesn't
27 > > > really support PRs in a uniform way and so CI is mostly for
28 > > > submitted code; similar to the existing ::gentoo repo CI offered
29 > > > by mgorny.
30 > > >
31 > > > If we build a code review solution (like gitea / gerrit) would
32 > > > people use it? Would you use it if you couldn't merge (because
33 > > > the code review solution can't gpg sign your commits or merges)
34 > > > so a tool like the existing pram tool would be needed to merge?
35 > > >
36 > > > -A
37 > > >
38 > > > [0] Mostly arzano, if I'm honest. I am just the point-y haired
39 > > > manager in this effort.
40 > >
41 > > There are several CI systems that could be used. As for CI, my
42 > > experience has been with buildbot. It would be fairly
43 > > straightforward to integrate with the current gitolite/gitweb
44 > > hosting. It is also extremely flexible in its capabilities,
45 > > although can be difficult to master. It has a good web interface,
46 > > but it can even be run via it's API's using curses, python,
47 > > bash,.... There is a buildbot-travis plugin which is capable of
48 > > running existing .travis file configurations. It also extends its
49 > > capabilities to include custom buildbot step definitions. I have
50 > > not packaged it yet for gentoo, but it is on my todo list. One of
51 > > buildbot's capabilities is the ability to run tests/builds on
52 > > multiple workers (different arches or whatever) both in parallel or
53 > > series. It could be made to integrate with our bugzilla using the
54 > > python client (pybugs was it?).
55 >
56 > My understanding is that CI systems are all quite similar. We have
57 > configured gitlab-ci, drone, and zuul as tests and I am familiar with
58 > travis-ci and buildbot from other projects. I'm less concerned about
59 > this aspect tbh. I'm also not super concerned about packaging. E.g.
60 > for gitlab-runner (the worker portion of gitlab-ci) we just deploy
61 > upstream containers and don't package them in ::gentoo at all. Our
62 > onprem gitlab is a container solution; gitea is a container solution;
63 > our SSO IDP is a container solution; gerrit is currently a container
64 > solution. These don't bother me (too much, ugh zuul uses zookeeper?
65 > ugh.)
66 >
67 > The major differentiators for CI appear to be:
68 > - SCM support (we currently only really care about git compatible
69 > systems, but some contenders only support some providers.)
70 > - builders / workers (how do they deploy). For example gitlab has a
71 > container based work executor while zuul uses ansible; I suspect
72 > - Authentication (ideally should support SAML or openID so we can
73 > integrate with our alpha sso solution for Gentoo.)
74 > - The webUI; e.g is the solution horrible to use / interact with.
75 > Hard to say without a trial, IMHO.
76 >
77 > -A
78 >
79 >
80 > >
81 > > But that still leaves a PR/code review option.
82 > >
83 > >
84
85 I have another buildbot version bump to 2.8.0 to do. While reading
86 over the changes. There are changes to the gerrit integration
87 (GerritEventLogPoller) which I did not know it had or used.
88
89 There is also a change in the 2.7.0 buildbot-worker:
90
91 * Command buildbot-worker create-worker now supports ipv6 address for
92 buildmaster connection.
93
94 I know that buildbot have been creating buildbot containers since the
95 1.x series, but I've not worked with them. I am planning to learn how
96 to use buildbot with containers and kubernetes. I will certainly check
97 out how that worker command works. whether it is a docker or
98 kubernetes command or either...
99
100
101 So, buildbot may be a good option since it can integrate with gerrit
102 and (I think) dynamically deploy workers in containers. So be able to
103 integrate with our existing git/gitweb/bugzilla as well as github/gitlab