koji
Manage Koji RPM software builds
TLDR
Execute a koji subcommand
Introduce yourself to test connectivity with koijhub
Display help about global options
Display help to get all available commands
Display help for a specific subcommand (like build, tag-build, download-build, buildinfo,call, etc.)
Display version
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.


