releasers.conf - Man Page

Config file defining release targets where builds can be published​.

Synopsis

None

Description

Tito allows projects to define their own release targets, which can specify the exact releaser implementation to use (potentially a custom one), and any arguments it may need for a specific type of build​.

Releasers

Tito includes several releaser implementations that can be used in releasers​.conf​. Additionally you may define a lib_dir in your tito​.props globalconfig section, and place your own custom implementation of a releaser there​.

Specify "builder​.test = 1" in your releasers​.conf target to enable --test builds​. (uses the latest git HEAD rather than the latest tagged package) This can be useful for automating the publishing of a nightly build, which you would not want to continually have to tag​.

tito​.release​.YumRepoReleaser

Releaser which will build your packages, rsync down an existing yum repository, place your packages in it, regenerate the yum repodata, and rsync the yum repository back up​.

Requires the "srpm_disttag = ​.fc21" to specify the disttag on the resulting source RPM​. This allows for a correct srpm to upload, and prevents problems with it getting clobbered when building for "newer" disttags​.

Specify "filetypes = srpm" if you want to build a source rpm instead of a regular rpm​.

Specify "createrepo_command = createrepo_c -s sha1" if you are building on a recent distro and are working with yum repositories for rhel5​.

You can use environment variable RSYNC_USERNAME to override rsync username​.

tito​.release​.RsyncReleaser

Releaser which will build your packages, and rsync up to a remote repository​.

Specify "filetypes = rpm srpm tgz" to choose what type of packages will be uploaded​.

You can use environment variable RSYNC_USERNAME to override rsync username​.

Specify "scl = COLLECTION" to build into Software Collection​. Deprecated, prefer "builder​.scl = COLLECTION" instead​.

Variable "rsync_args" can specify addiontal argument passed to rsync​. Default is "-rlvz"​.

tito​.release​.FedoraGitReleaser

Releaser which will checkout your project in Fedora git using fedpkg​. Sources are then synced to the first branch your releaser lists​. After this tito will git merge the first branch into all other listed branches, triggering builds in each​.

The branches property can contain aliases such as fedora-all, fedora-stable, fedora-latest, epel-all, etc​. For the complete list of aliases and their explanations, see https://github​.com/rpm-software-management/fedora-distro-aliases

The required_bz_flags property can be specified to have tito check Red Hat Bugzilla to see if each bug number extracted from the changelog has appropriate flags​. If it does not, it will be skipped in the commit message​. If no bugs are found with the required tags, a placeholder_bz can be specified (see below), otherwise the release will abort​.

The placeholder_bz property can be specified to use if no bugs were found in the changelog with the required flags​.

[fedora-git]
releaser = tito​.release​.FedoraGitReleaser
branches = fedora-all epel7 epel8 epel9
required_bz_flags = myos-1​.1​.0+ pm_ack+
placeholder_bz = 100000
tito​.release​.CentosGitReleaser

Releaser which will checkout your fork in the project in the Centos Stream git using centpkg​. A new branch off your fork is then created for the changes​. This is produced in the same way as the FedoraGitReleaser with a ​.tar file that is loaded to the lookaside​. The branch gets pushed to the forked repo and tito is done​. The process then requires the manual creation of a merge request against the main repo of the release which is done in the web UI​.

The required_bz_flags property can be specified to have tito check Red Hat Bugzilla to see if each bug number extracted from the changelog has appropriate flags​. If it does not, it will be skipped in the commit message​. If no bugs are found with the required tags, a placeholder_bz can be specified (see below), otherwise the release will abort​.

The placeholder_bz property can be specified to use if no bugs were found in the changelog with the required flags​.

[centos-git]
releaser = tito​.release​.CentosGitReleaser
branches = c9s
required_bz_flags = release+
placeholder_bz = 100000

If you would like to build (ie - koji) against a different target than what is default for the FedoraGit/DistGit branch currently being worked on it can be done like the following example​.

Note
The formatting of build_targets in the following example is git_branch:koji_build_target and the following custom build targets are just place holders for the example and aren’t likely to exist in Fedora’s koji

[fedora-git-custom-target]
releaser = tito​.release​.FedoraGitReleaser
branches = master el6 f19
build_targets = master:custom-target el6:el6-custom-target f19:f19-custom-target
tito​.release​.DistGitReleaser

Same as FedoraGitReleaser, but use rhpkg instead of fedpkg​.

tito​.release​.KojiReleaser

Releaser which create src​.rpm and submit them into Koji​. Can submit more than one build at once​.

Note
This is targeted for private instances of Koji​. You can not submit regular build into Fedora Koji using this releaser, because Fedora Koji do not allow builds from src​.rpm - for building into Fedora see FedoraGitReleaser above​.

[koji]
releaser = tito​.release​.KojiReleaser
autobuild_tags = my-koji-tag-rhel6 my-koji-tag-fedora18

In this example, releaser will create src​.rpm according the definition of [my-koji-tag-rhel6] in tito​.props​. You usually want to set up there at least disttag​. See KOJI section in tito​.props(5)​.

If --scratch option or SCRATCH environment variable is set, package is build as scratch in Koji​.

You can specify KOJI_OPTIONS in titorc(5) and it is passed to koji command as option​. Usually you want to specify at least --config option​.

Variable autobuild_tags is required for KojiReleaser​.

tito​.release​.KojiGitReleaser

Build into Koji through dist-git​. It behaves as KojiReleaser​. Only difference is that src​.rpm is not passed to Koji​. Instead is sent to koji git hash from which Koji should build package​.

Note: This feature is not in upstream Koji (although is submited for long time)​.

Please do not confuse with FedoraGitReleaser​. KojiGitReleaser is intended for private instances of Koji​.

You need to specify git_url, which specify url of git repository​. This url needs to be reachable from Koji​.

tito​.release​.ObsReleaser

Build into Open Build Service using osc command​.

You must specify "project_name" in config​. You can optionaly specify "package_name", but if it is not present name of package directory is used​.

This releaser assume that you have ~/​.oscrc correctly configured​.

tito​.release​.CoprReleaser

This releaser submits your src​.rpm to Copr​.

[my-copr]
releaser = tito​.release​.CoprReleaser
project_name = my-copr-project-name
upload_command = scp %(srpm)s my​.web​.com:public_html/my_srpm/
remote_location = http://my​.web​.com/~msuchy/my_srpm/
copr_options = --timeout 600
Variables are:
  • project_name - this is name of your project on Copr
  • upload_command - this command is executed to upload src​.rpm to internet​. It can be scp, rsync or just cp​. It may containt string "%(srpm)s" (even several times), which is substitued by real srpm path​. (optional)
  • remote_location - how can be accessed the location above over www​. (optional)
  • copr_options - space separated options to pass directly to copr-cli build​. Defaults to --nowait​. (optional)

The releaser will publish your src​.rpm to remote server and then submit it into Copr via URL​. If you rather want to submit the package directly from your computer, just omit "upload_command" and "remote_location" variables​.

Project_name behave exactly as "autobuild_tags" in KojiReleaser, and you can define various options for each project name in tito​.props (e​.g​. disttag, whitelist, blacklist, scl)​. For more information see man page of tito​.props​.

Note: this releaser assume you have copr-cli correctly configured​. See API KEY section in copr-cli man page​.

Example

; Release into fedora-15-x86_64 yum repo
[yum-f15-x86_64]
releaser = tito​.release​.YumRepoReleaser
srpm_disttag = ​.fc15
builder = tito​.builder​.MockBuilder
builder​.mock = fedora-15-x86_64
rsync = fedorapeople​.org:/srv/repos/dgoodwin/tito/fedora-15/x86_64/ fedorapeople​.org:/srv/repos/dgoodwin/tito/fedora-15/x86_64/
; Release into el6 yum repository​. specify builder​.test=1 so that
; we build on latest commit (instead of latest tito tag)
[yum-el6-x86_64]
releaser = tito​.release​.YumRepoReleaser
srpm_disttag = ​.el6
builder = tito​.builder​.MockBuilder
builder​.mock = epel-6-x86_64
builder​.test = 1
scl = ruby193
rsync = remoteserver​.org:/srv/repos/el6/testing/x86_64
; Upload into source repository
[yum-fc15-sources]
releaser = tito​.release​.YumRepoReleaser
srpm_disttag = ​.fc15
builder = tito​.builder​.MockBuilder
builder​.mock = fedora-15-x86_64
filetypes = srpm
rsync = remoteserver​.org:/srv/repos/fedora-15/SRPMS
; el5 yum repository​. Overloading createrepo_command to make
; el5 compatible repo​.
[yum-el5-i386]
releaser = tito​.release​.YumRepoReleaser
srpm_disttag = ​.el5
builder = tito​.builder​.MockBuilder
builder​.mock = epel-5-i386
createrepo_command = createrepo_c -s sha1
rsync = remoteserver​.org:/srv/repos/rhel5/i386
; rsync tgz file to remote site with custom rsync arguments
[rsync]
releaser = tito​.release​.RsyncReleaser
srpm_disttag = ​.fc15
builder = tito​.builder​.MockBuilder
builder​.mock = fedora-15-x86_64
filetypes = tgz
rsync = remoteserver​.org:/srv/tarballs/
rsync_args = -rlvzpt
; Release using OBS
[obs-project]
releaser=tito​.release​.ObsReleaser
project_name=home:xsuchy
; Upload src​.rpm to remote server and then submit it into Copr via URL
[copr-project]
releaser = tito​.release​.CoprReleaser
project_name = my-copr-project-name another-project
upload_command = cp %(srpm)s /home/msuchy/public_html/my_srpm/
remote_location = http://my​.web​.com/~msuchy/my_srpm/
; Submit src​.rpm from your computer directly to Copr
[copr-project]
releaser = tito​.release​.CoprReleaser
project_name = my-copr-project-name another-project
; Submit src​.rpm from your computer directly to Copr, timeout after 10 minutes
[copr-project]
releaser = tito​.release​.CoprReleaser
project_name = my-copr-project-name another-project
copr_options = --timeout 600

Info

08/26/2026 Tito User Manual