Gentoo Archives: gentoo-dev

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

Replies