Packit is a CLI tool that helps developers auto-package upstream projects into Fedora operating system. You can use packit to continously build your upstream project in Fedora. With packit you can create SRPMs, open pull requests in dist-git, submit koji builds and even create bodhi updates, effectively replacing the whole Fedora packaging workflow.
Plan and current status
We are working on two things now:
- Packit as a tool - a standalone CLI tool which you can install from Fedora repositories and use easily.
- Packit service - A service offering built on top of packit tool. Our expectation is that you would add packit service into your Github repository and it would start handling things automatically: opening pull requests on dist-git, building packages, creating updates, ...
For the run-down of the planned work, please see the task-list below.
- E2E workflow for getting upstream releases into Fedora using packit CLI.
- Bring new upstream releases into Fedora rawhide as dist-git pull requests. (propose-update command included in 0.1.0 release)
- Build the change once it's merged. #137
- Send new downstream changes back to upstream. (so the spec files are in sync) #145
- Packit can create bodhi updates. #139
- Ability to propose updates also to stable releases of Fedora.
- Create SRPMs from the upstream repository
- Build RPMs in COPR and integrate the results into Github.
- Packit can create a SRPM from a source-git repo.
- You can release to rawhide from source-git using packit.
- Packit can create a source-git repository.
- Packit helps developers with their source-git repositories.
- Packit as a service
- Packit reacts to Github webhooks.
- Have a Github app for packit.
- Github app is on Marketplace.
- Packit service is deployed and usable by anyone.
Workflows covered by packit
This list contains workflows covered by packit tool and links to the documentation.
- Update Fedora dist-git with an upstream release.
- Build content of a Fedora dist-git branch in koji.
- Create a bodhi update.
- Create a SRPM from the current content in the upstream repository.
- Sync content of the Fedora dist-git repo into the upstream repository.
Configuration file for packit is described here.
specfile_path: packit.spec synced_files: - packit.spec upstream_project_name: packit downstream_package_name: packit
Packit is written in python 3 and is supported only on 3.6 and later.
When packit interacts with dist-git, it uses
fedpkg, we suggest installing it:
sudo dnf install -y fedpkg
$ dnf install --enablerepo=updates-testing packit
$ pip3 install --user packitos
(packit project on PyPI is NOT this packit project)
You can also install packit from master branch, if you are brave enough:
$ pip3 install --user git+https://github.com/packit-service/packit.git
Run from git directly:
You don't need need to install packit to try it out. You can run it directly from git (if you have all the dependencies installed):
$ python3 -m packit.cli.packit_base --help Usage: packit_base.py [OPTIONS] COMMAND [ARGS]... Options: -d, --debug -h, --help Show this message and exit. ...
|Package name||Contacts||Link to packit configuration file|
Who is interested
- Identity team (@pvoborni)
- Plumbers - Source Git (@msekletar @lnykryn)
- shells (@siteshwar)
- python-operator-courier (Ralph Bean)
- youtube-dl (Till Mass)
- greenboot (@LorbusChris)
- OSBS (atomic-reactor, osbs-client, koji-containerbuild) (@cverna)
- CoreOS (starting with rpm-ostree, ignition, and ostree) (@jlebon)
- cockpit (@martinpitt)
- iptables (@jsynacek)
|Package name||Contacts||Links (Bugzillas, PRs, etc.)|
- An excellent document by Colin Walters which describes a modern way of developing a distribution: