[RFR #4562] Koschei - continuous integration in Koji
Kevin Fenzi
kevin at scrye.com
Thu Oct 16 15:51:19 UTC 2014
On Thu, 16 Oct 2014 11:14:01 +0200
Mikolaj Izdebski <mizdebsk at redhat.com> wrote:
> On 10/15/2014 09:31 PM, Kevin Fenzi wrote:
> > ok, some general questions, please excuse me if they are dumb. ;)
> >
> > high level:
> >
> > * How well does it keep up currently? I know you are careful not to
> > overload koji, but I wonder if that means things like perl builds
> > are often behind because there are so many of them?
>
> Koji has more than enough resources to sustain current Koschei load
> (~3000 packages). Storage might become problematic if more packages
> are added (scratch build results are kept for some period of time),
> but we have a solution for that (see [2] or [3]). If more Koji
> builders are ever need then I think it sould be quite easy to add
> them, as long as there is budget for that.
Great. I wasn't sure if it was keeping up or not. ;)
Interesting idea on the immediate purge.
> > * right now the service is opt-in right? Someone adds a group and
> > packages in that group and then when one of them changes it
> > scratch rebuilds the rest. Do you see a time/case when we could
> > just make it operate on all builds? that is, build foo is made, and
> > it just does all the things that buildrequire foo?
>
> For now only some subset of all packages is tracked by Koschei, but
> the ultimate goal is to track all packages - they would be added
> automatically after first build appears on Koji and removed when they
> are blocked. What would be up to individuals is maintainig package
> groups. (One package can be in any number of groups.)
ok. Groups are only managed manually by maintainers?
And deps are then checked when something updates in a group and the
rest of the group rebuilt? or can you explain when a scratch build is
fired?
> > * The notifications of failed builds currently are via fedmsg? We
> > should investigate adding this to FMN if it's not already there,
> > so anyone interested could be notified via that.
>
> fedmsg publishing is already operational as can be seen on [1]. FMN
> rule has been recently added. The new FMN is not yet in production,
> but in (hopefully near) future users will be able to enable email or
> IRC notifications for buildability status of packages they are
> interested in.
Great!
> > todo's/ideas:
> >
> > * Could this ever be a koji plugin? Or does it do too much on top of
> > that to ever be a plugin?
>
> Koschei has its own architecture and converting it to Koji plugin
> would require substantial amount of work. In other words, it should
> be possible, but I don't see any good reason to do so.
Fair enough.
> > * Might it be possible to run on all the broken deps packages in
> > rawhide/branched? This would depend I guess on the compose process
> > generating fedmsgs with those package names, but if so it could
> > tell maintainers "hey, your package is broken in rawhide, but a
> > simple rebuild will fix it" (or any other group that just wants to
> > go fix them).
>
> This is an interesting idea.
>
> A simillar feature was planned for future. The idea was that Koschei
> could be resolving runtime dependencies of all packages besides just
> build dependencies. Users would be able to see whether package is
> installable and if yes, see its installation size with dependencies
> (in terms of MB to download, MB installed size and package count).
> There would be graphs showing how this changes in time. (We had a
> simillar POC service runnig for a few months, see [4].)
>
> We could extend this and make Koschei resolve runtime dependencies of
> successful scratch builds it runs. In case scratch build would fix
> broken package in offcial repo, a fedmsg would be emited.
Yeah, something to consider...
> > * boost is another group of packages I could see this being useful
> > for. Perhaps it woul<d be worth reaching out to the boost
> > maintainers?
>
> I don't know specifics of boost packages, but we'll cosider any
> feature request.
ok. Boost often updates once a cycle or so, and lots of dependent
packages need rebuilding. If we could see which of those fail it could
be helpfull. But this is up to boost maintainers I suppose.
> > * Could this be used to scratch build packages that are
> > ExcludeArch/ExclusiveArch with that removed? ie, to tell
> > maintainers, "hey, you exclude arm, but it builds ok, are you sure
> > thats fine?"
>
> This would require generating a new SRPM with
> ExcludeArch/ExclusiveArch removed, which requires installing all
> build dependencies, so it should be done by Koji as buildSRPMfromSCM
> task. This in turn requires Koschei having ability to push to some
> branch in SCM or maintaining separate git repo and changing Koji
> policy to allow scratch builds from it. And of course this would have
> to be implemented in Koschei. Not impossible, but looks like a lot of
> work for something that could be done manually by running some script
> from time to time.
Yeah, agreed.
> > technical:
> >
> > * Can this application be load balanced any? Ie, if we have two of
> > them could they operate against the same db at the same time?
>
> To answer this question I need to elaborate more about Koschei
> architecture. tl;dr yes, it can be load balanced well.
...snip...
> To sum up, all components either don't need load balancing or can be
> load-balanced.
ok. And I suspect this service would be ok just being one instance as
well, since it's not critical. ie, if we had to update/reboot it we
could just do so and it would go on, no need to keep everything up 100%?
>
> > * Are there any common sysadmin tasks we need to know about with the
> > instance? Is there any special process to start/stop/reinstall
> > it?
>
> Installing Koschei is done by installing RPM package from Fedora or
> EPEL repositories and coping a single config file.
> Managing all services (starting, stopping, viewing logs etc.) is done
> using standard system tools (systemctl, journalctl and so on).
> There is nothing special to be done besides standard sysadmin stuff
> (updating packages, viewing logs, backing up database and so on).
Excellent.
> > * When there is koji maint, should we stop this service? How do we
> > gracefully do that and start it again?
>
> In this case you can stop Koschei services that communicate with Koji
> (using systemctl stop koschei-<servicename>) and start them when
> maintenance is over. Web UI will remain functional during that time,
> but there will be no new build scheduled.
>
> > Thats all I can think of right now. :)
>
> I hope this pretty long email answers your questions.
It does indeed. Thanks for taking the time to do so. :)
kevin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.fedoraproject.org/pipermail/infrastructure/attachments/20141016/15cc972f/attachment.sig>
More information about the infrastructure
mailing list