Top Banner
Koschei Continuous integration in Koji Author: Mikolaj Izdebski [email protected] Date: 11th July 2014 Abstract Koschei is a service for scratch-rebuilding RPM packages in Fedora Koji instance when their build-dependencies change or after some time elapse. This presentation is about the problem Koschei is trying to solve, design decisions, system structure, current status, plans for the nearest future and further evolution possibilities.
28

Koschei - Continuous integration in Kojipeople.redhat.com/~mizdebsk/tmp/koschei.pp.pdf · Koschei Continuous integration in Koji Author: Mikolaj Izdebski [email protected] Date:

Mar 02, 2019

Download

Documents

lamtruc
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Koschei - Continuous integration in Kojipeople.redhat.com/~mizdebsk/tmp/koschei.pp.pdf · Koschei Continuous integration in Koji Author: Mikolaj Izdebski mizdebsk@redhat.com Date:

KoscheiContinuous integration in Koji

Author:Mikolaj Izdebski [email protected]

Date: 11th July 2014

Abstract

Koschei is a service for scratch-rebuilding RPM packages inFedora Koji instance when their build-dependencies change orafter some time elapse.This presentation is about the problem Koschei is trying tosolve, design decisions, system structure, current status, plansfor the nearest future and further evolution possibilities.

Page 2: Koschei - Continuous integration in Kojipeople.redhat.com/~mizdebsk/tmp/koschei.pp.pdf · Koschei Continuous integration in Koji Author: Mikolaj Izdebski mizdebsk@redhat.com Date:

Section 1The problem

Page 3: Koschei - Continuous integration in Kojipeople.redhat.com/~mizdebsk/tmp/koschei.pp.pdf · Koschei Continuous integration in Koji Author: Mikolaj Izdebski mizdebsk@redhat.com Date:

The problem

Where is the problem?

Buildability as a measure of software qualitytests ran during build

Constantly growing number of packagessoftware collections

People are unaware of FTBFSbugs are not seen until mass rebuildor worse, until there is critical bug to fix

Page 4: Koschei - Continuous integration in Kojipeople.redhat.com/~mizdebsk/tmp/koschei.pp.pdf · Koschei Continuous integration in Koji Author: Mikolaj Izdebski mizdebsk@redhat.com Date:

The problem

Time elapse

Time elapse increases cost of fixing bugs

People forget what they were working onMore bugs appear

Harder to discover where the real problem isFixing means working in recursive, parallel mode

to fix A you need to fix B firstKoji repo regenerationARM builders

Page 5: Koschei - Continuous integration in Kojipeople.redhat.com/~mizdebsk/tmp/koschei.pp.pdf · Koschei Continuous integration in Koji Author: Mikolaj Izdebski mizdebsk@redhat.com Date:

Section 2

The solution

Page 6: Koschei - Continuous integration in Kojipeople.redhat.com/~mizdebsk/tmp/koschei.pp.pdf · Koschei Continuous integration in Koji Author: Mikolaj Izdebski mizdebsk@redhat.com Date:

The solution

What can be done

Continuous integration

continuous monitoring of package buildability

helping maintainers to reason on FTBFS

Page 7: Koschei - Continuous integration in Kojipeople.redhat.com/~mizdebsk/tmp/koschei.pp.pdf · Koschei Continuous integration in Koji Author: Mikolaj Izdebski mizdebsk@redhat.com Date:

The solution

How?

Rebuild all packages from time to timeweekly?too long delay

Rebuild important packages more oftennightly?only a few packages can be rebuilt

Rebuild all rev deps after each updateway too much resources needed

Middle ground solution?

Page 8: Koschei - Continuous integration in Kojipeople.redhat.com/~mizdebsk/tmp/koschei.pp.pdf · Koschei Continuous integration in Koji Author: Mikolaj Izdebski mizdebsk@redhat.com Date:

The solution

Where?

Options consideredmaintainers’ machinesFedora KojiCoprcloud

The choice – Fedora Kojiexisting, stable platformspare resourcesmaintained by Fedora infrastructureno networking problemscanonical build environment

Page 9: Koschei - Continuous integration in Kojipeople.redhat.com/~mizdebsk/tmp/koschei.pp.pdf · Koschei Continuous integration in Koji Author: Mikolaj Izdebski mizdebsk@redhat.com Date:

The solution

Koschei

A tool for continuously scratch-rebuilding packagesusing Fedora build infrastructure – Koji

Page 10: Koschei - Continuous integration in Kojipeople.redhat.com/~mizdebsk/tmp/koschei.pp.pdf · Koschei Continuous integration in Koji Author: Mikolaj Izdebski mizdebsk@redhat.com Date:

The solution

Etymology

KOji Ccontinuous Integration

Where did the name came from

$ grep -xi ko*c*i /usr/share/dict/words

Koschei

Page 11: Koschei - Continuous integration in Kojipeople.redhat.com/~mizdebsk/tmp/koschei.pp.pdf · Koschei Continuous integration in Koji Author: Mikolaj Izdebski mizdebsk@redhat.com Date:

Section 3

Design

Page 12: Koschei - Continuous integration in Kojipeople.redhat.com/~mizdebsk/tmp/koschei.pp.pdf · Koschei Continuous integration in Koji Author: Mikolaj Izdebski mizdebsk@redhat.com Date:

Design

The concept

A set of packages

Reporting buildability

Resource monitoring

Rebuild prioritizing

Page 13: Koschei - Continuous integration in Kojipeople.redhat.com/~mizdebsk/tmp/koschei.pp.pdf · Koschei Continuous integration in Koji Author: Mikolaj Izdebski mizdebsk@redhat.com Date:

Design

Priority

Time since last rebuildDependency changes

consider distances

Previous stateprioritize failures

Importanceaka static priority

Manual triggeraka dynamic priority

Plugins

Page 14: Koschei - Continuous integration in Kojipeople.redhat.com/~mizdebsk/tmp/koschei.pp.pdf · Koschei Continuous integration in Koji Author: Mikolaj Izdebski mizdebsk@redhat.com Date:

Design

Database

Packagesnamepriorities

BuildsstatusKoji task IDtime stampslogs

Repositoriesdependencies

Package groups

Page 15: Koschei - Continuous integration in Kojipeople.redhat.com/~mizdebsk/tmp/koschei.pp.pdf · Koschei Continuous integration in Koji Author: Mikolaj Izdebski mizdebsk@redhat.com Date:

Design

Architecture overview

Page 16: Koschei - Continuous integration in Kojipeople.redhat.com/~mizdebsk/tmp/koschei.pp.pdf · Koschei Continuous integration in Koji Author: Mikolaj Izdebski mizdebsk@redhat.com Date:

Design

Watcher

Await Koji build state changesfedmsgperiodic polling as fallback

Await new Koji reposnot builds, not tagsfedmsgno polling

Analyze dependency changeshawkeydownload SRPM headers

Update prioritiesincrease priority on dependency changereset priority on build success

Page 17: Koschei - Continuous integration in Kojipeople.redhat.com/~mizdebsk/tmp/koschei.pp.pdf · Koschei Continuous integration in Koji Author: Mikolaj Izdebski mizdebsk@redhat.com Date:

Design

Scheduler

Schedule builds for executionpriority scheduling

Conditionspackage is not disabledbuild dependencies are resolvablepriority is high enoughKoji load is low enough

Page 18: Koschei - Continuous integration in Kojipeople.redhat.com/~mizdebsk/tmp/koschei.pp.pdf · Koschei Continuous integration in Koji Author: Mikolaj Izdebski mizdebsk@redhat.com Date:

Design

Submitter

Request scratch builds on Kojifrom existing SRPMvery low priorityneeds Koji certificate

Page 19: Koschei - Continuous integration in Kojipeople.redhat.com/~mizdebsk/tmp/koschei.pp.pdf · Koschei Continuous integration in Koji Author: Mikolaj Izdebski mizdebsk@redhat.com Date:

Design

Reporter

Generate HTML reports

Per group, not per maintainer

Failures separately

Dependency problems

Detailed package history

Page 20: Koschei - Continuous integration in Kojipeople.redhat.com/~mizdebsk/tmp/koschei.pp.pdf · Koschei Continuous integration in Koji Author: Mikolaj Izdebski mizdebsk@redhat.com Date:

Design

RPC

Add and disable packages

Adjust package importance

Force build

Page 21: Koschei - Continuous integration in Kojipeople.redhat.com/~mizdebsk/tmp/koschei.pp.pdf · Koschei Continuous integration in Koji Author: Mikolaj Izdebski mizdebsk@redhat.com Date:

Section 4

Implementation

Page 22: Koschei - Continuous integration in Kojipeople.redhat.com/~mizdebsk/tmp/koschei.pp.pdf · Koschei Continuous integration in Koji Author: Mikolaj Izdebski mizdebsk@redhat.com Date:

Implementation

Implementation

Python

PostgreSQL

SQLAlchemy, Alembic

Modularity

systemd

Page 23: Koschei - Continuous integration in Kojipeople.redhat.com/~mizdebsk/tmp/koschei.pp.pdf · Koschei Continuous integration in Koji Author: Mikolaj Izdebski mizdebsk@redhat.com Date:

Implementation

Current state

code at Githubpackaged as RPM

not yet in Fedora

running at Openstack

Page 24: Koschei - Continuous integration in Kojipeople.redhat.com/~mizdebsk/tmp/koschei.pp.pdf · Koschei Continuous integration in Koji Author: Mikolaj Izdebski mizdebsk@redhat.com Date:

Creating SRPM metadata

$ curl http://koji.fp.o/.../eclipse-4.4.0-5.fc21.src.rpm \

| tee package.src.rpm \

| rpm -qp /dev/stdin >/dev/null

curl: (23) Failed writing body (2332 != 4096)

$ ls -go

total 20

-rw-rw-r--. 1 20480 Jul 11 09:10 package.src.rpm

$ createrepo .

Spawning worker 0 with 1 pkgs

Workers Finished

Saving Primary metadata

Saving file lists metadata

Saving other metadata

Generating sqlite DBs

Sqlite DBs complete

Page 25: Koschei - Continuous integration in Kojipeople.redhat.com/~mizdebsk/tmp/koschei.pp.pdf · Koschei Continuous integration in Koji Author: Mikolaj Izdebski mizdebsk@redhat.com Date:

Section 5Future

Page 26: Koschei - Continuous integration in Kojipeople.redhat.com/~mizdebsk/tmp/koschei.pp.pdf · Koschei Continuous integration in Koji Author: Mikolaj Izdebski mizdebsk@redhat.com Date:

Future

TODO

Move to Fedora

within of scope of Env and Stacks WGalready announcedcloud machineKoji certificateextra Koji hardware?storage?

Improve reporting

feedback and new ideas needed!

Generate SRPM metadata

compose is too late

Page 27: Koschei - Continuous integration in Kojipeople.redhat.com/~mizdebsk/tmp/koschei.pp.pdf · Koschei Continuous integration in Koji Author: Mikolaj Izdebski mizdebsk@redhat.com Date:

Future

Links

Code repository

https://github.com/msimacek/koschei

Page 28: Koschei - Continuous integration in Kojipeople.redhat.com/~mizdebsk/tmp/koschei.pp.pdf · Koschei Continuous integration in Koji Author: Mikolaj Izdebski mizdebsk@redhat.com Date:

The end.Thanks for listening.