Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Reliable, Repeatable builds with Koji

Reliable, Repeatable builds with Koji

Clint Savage

May 03, 2012
Tweet

More Decks by Clint Savage

Other Decks in Technology

Transcript

  1. Hello. My name is Clint Savage People online call me

    herlo I participate online at the following places I don't always blog, but when I do, I use http://sexysexypenguins.com
  2. What is Koji? • Task scheduler • Result tracker •

    A build system used by many – Fedora/EPEL – RHEL – Scientific Linux – GoOSe
  3. What Koji is not! • Software release lifecycle management •

    Deployment tool • Repository management tool • Continuous integration tool
  4. ENVRA • epoch – used rarely • name – upstream

    name • version – upstream version • release – rpm package version • architecture – i686, x86_64, noarch
  5. Mock Creates a chroot for every build: yum configuration -

    a list of repo’s. yum command e.g install meta-package. Lots of caching options. Example Use: mock -r goose-6-x86_64 –init mock -r goose-6-x86_64--shell <cmd> mock -r goose-6-x86_64 --rebuild salt-0.9.9.1-1.src.rpm
  6. • kojihub – Python based xml-rpc server • Interacts with

    database , the brain. • koji – xml-rpc command line client • Add users, submitting builds, watch logs, regen repo, etc. • kojiweb - a client to koji-hub • Web interface with status • Cancel and resubmit tasks • kojid – builder • Polls koijhub for new tasks • Runs mock to build SRPMs and RPMs • Runs createrepo to generate new repositories • kojira – Repository Administrator • Requests new repositories as needed. • Manages buildroots and repositories. Koji Components
  7. Koji Tags / Targets • A tag in koji is

    a repository of built packages • Tags can be inherited • Maintained by kojira • A build tag defines buildroot • A target defines the tag applied to a successful build • RPMs from external repos can be imported Let's look at a tag and target now.
  8. make sources • git contains .spec file and 'sources' file

    • sources file contains the tarball and sha256sum verification • downloads .tarball release files • calls curl to local .tar.gz repository • verifies with 'sources' file using sha256
  9. • mash – repository configuration • sigul – package signing

    • bodhi – package lifecycle management • packagedb – manages package lists and owners Tools that use Koji
  10. Thank you for your attention! web: http://gooseproject.org email: [email protected] project

    url: http://github.com/gooseproject irc.freendode.net: #gooseproject Slides available @ http://speakerdeck.com/u/herlo/p/koij-reliable-repeatable-builds