LinuxCommandLibrary

koji

Manage Koji RPM software builds

TLDR

Execute a koji subcommand

$ koji [subcommand]
copy

Introduce yourself to test connectivity with koijhub
$ koji moshimoshi
copy

Display help about global options
$ koji [[-h|--help]]
copy

Display help to get all available commands
$ koji help
copy

Display help for a specific subcommand (like build, tag-build, download-build, buildinfo,call, etc.)
$ koji [subcommand] [[-h|--help]]
copy

Display version
$ koji version
copy

SYNOPSIS

koji [global-options] <command> [<arguments>]

PARAMETERS

--cfg=<FILE>
    Specify alternative configuration file

--server=<URL>
    URL of Koji XMLRPC server/hub

--weburl=<URL>
    Base URL of Koji web interface

--topurl=<URL>
    Base URL for accessing build results

--proxy=<FILE>
    SSL client certificate and key file

--user=<USER>
    Username for authentication

--password=<PASSWORD>
    Password for authentication (insecure)

--krbservice=<NAME>
    Kerberos service name

--noauth
    Disable authentication

--ticket=<FILE>
    File containing authentication token

--help
    Show help message and exit

--version
    Show version information

-f, --force
    Force operation, bypass confirmations

-q, --quiet
    Reduce output verbosity

-v, --verbose
    Increase output verbosity

DESCRIPTION

Koji is a free and open-source distributed build system designed for RPM-based Linux distributions, notably used by the Fedora Project and derivatives like CentOS and RHEL. The koji command-line tool serves as the primary client interface to a Koji hub, enabling developers and release engineers to submit, monitor, and manage package builds across a network of build hosts (builders).

It supports building RPMs, Maven/Java modules, .NET assemblies, and kernel modules in a reproducible manner. Key features include tag-based repository management (tags represent branches or distros), multi-architecture support, chroots for isolated builds (via mock), and integration with a web UI for visualization. Builds are stored in a shared filesystem, with metadata in a database.

Users authenticate via Kerberos, SSL certs, or tokens, and configure sessions with hub details. Koji ensures no two builds interfere, using volume locking and result caching. It's highly scalable, handling thousands of builds daily in production environments.

CAVEATS

Requires network access to a Koji hub; authentication mandatory for most operations. Not for local/single-host builds (use mock or rpmbuild). Configuration errors common; test with koji ping. Builds consume significant resources on shared builders.

CONFIGURATION

Default config at ~/.koji/client.cfg. Must set [koji] section with server, weburl, topurl. Example:
server = https://koji.fedoraproject.org/kojihub

COMMON SUBCOMMANDS

build <tag> <srpm>
tag-build <tag> <pkg> <version>
wait-repo <tag> [--build=ID]
list-tags, latest-build <tag> <pkg>

AUTHENTICATION

Preferred: Kerberos (kinit). Alternatives: SSL proxy certs from hub or session tokens via koji call-session.

HISTORY

Developed in 2007 by the Fedora Infrastructure team as a successor to the Plague build system. Initial release coincided with Fedora 8. Evolved with Fedora's needs, adding Maven support in 2011, multi-lib handling, and containerized builds. Now at version 1.40+, used by EPEL, CentOS Stream, and Mageia.

SEE ALSO

mock(1), rpmbuild(8), createrepo_c(1), fedpkg(1)

Copied to clipboard