This document describes in detail the contents of this repository. It is still a work in progress, but do not hesitate to report if something is missing.
The repository contains a set of tools to aid in the process of building, testing and releasing (open)SUSE based distributions. The Tools section enumerates and describes all these tools, including links to documentation, source code and some information about where they are used.
Apart from these tools, the repository includes:
- Some documentation in the docs directory.
- A Python module called osclib which includes code that is shared by several tools. They
are available in the
osclib
package. - A Docker-based tests suite. The Docker manifests and the Docker Compose files are located in the dist directory.
- GoCD configuration files in gocd. GoCD is an open source CI/CD server that is used to deploy the bots on OBS.
- Several systemd units: the Metrics instance makes use of them.
- publish_distro tool and related configuration in publish_distro_conf to rsync content from OBS to ftp-stage/ftp-prod on pontifex host
- Tools and docs for a manual release pipeline of OpenH264 in openh264 directory.
Most of these tools are available as packages for several distributions. Check the spec file in this repository or the devel project for further information.
For the time being, we have classified them into three different groups: command line tools, OBS bots and osc plugins. Bear in mind that the information in the following list might be wrong and incomplete.
Usually, the executables are renamed as osrt-NAME
(e.g., osrt-announcer
).
Generates email diffs summaries to announce product releases.
- Sources: factory-package-news/announcer.py
- Documentation: factory-package-news/README.asciidoc
- Package: openSUSE-release-tools-announcer
- Usage: gocd
Generates and updates OBS products for openSUSE and SLE. It generates package lists based on
000package-groups
and puts them in 000product
(resulting kiwi files) and 000release-packages
(release package spec files).
- Sources: pkglistgen.py
- Documentation: docs/pkglistgen.md
- Package: openSUSE-release-tools-pkglistgen
- Usage: gocd
Clean old containers from a given project like openSUSE:Containers:Tumbleweed. Only those containers providing binaries to the latest five versions for each architecture are kept.
- Sources: container_cleaner.py
- Documentation: --
- Package: openSUSE-release-tools
- Usage: gocd
Generates insightful metrics from relevant OBS and annotation data, based on InfluxDB and Grafana. See https://metrics.opensuse.org/.
- Sources: metrics.py
- Documentation: docs/metrics.md
- Package: openSUSE-release-tools-metrics
- Usage: ?
Ingests download.opensuse.org
Apache access logs and generates metrics. It is composed of a PHP
script and a set of systemd units.
- Sources: metrics/access/aggregate.php
- Documentation: docs/metrics.md
- Package: openSUSE-release-tools-metrics-access
- Usage: ?
Releases distribution snapshots to openQA and publishes if the result is positive.
- Sources: totest-manager.py and ttm
- Documentation: ttm/README.md
- Package: openSUSE-release-tools
- Usage: gocd
Manages bugowner information
- Sources: bugowner.py
- Documentation: --
- Package: openSUSE-release-tools
- Usage: ?
Manages biarch packages
- Source: biarchtool.py
- Documentation: --
- Package: openSUSE-release-tools
- Usage: ?
Sends e-mails about packages failing to build for a long time.
- Sources: build-fail-reminder.py
- Documentation: --
- Package: openSUSE-release-tools
- Usage: gocd
Checks if all packages in a repository are newer than all other repositories.
- Sources: checknewer.py
- Documentation: --
- Package: openSUSE-release-tools
- Usage: ?
Assists in debugging dependencies
- Sources: deptool.py
- Documentation: --
- Package: openSUSE-release-tools
- Usage: ?
Allows to retrieve requests from OBS with quite elaborated queries.
- Sources: requestfinder.py
- Documentation: --
- Package: openSUSE-release-tools
- Usage: ?
Scripts and templates to create staging projects.
- Sources: staging_templates
- Documentation: --
- Package: --
- Usage: ?
Script to generate necessary FileProvides lines needed by OBS from repo data.
- Sources: repo2fileprovides.py
- Documentation: --
- Package: --
- Usage: repo2fileprovides.py primary.xml(.gz|.zst)
Handles maintenance incident requests
- Sources: check_maintenance_incidents.py
- Documentation: docs/maintbot.asciidoc
- Package: openSUSE-release-tools-maintenance
- Usage: obsolete (by origin-manager)
Keeps track of from what project a package originates, submit updates, review requests to detect origin changes, and enforce origin specific policies like adding appropriate reviews
- Sources: origin-manager.py and web
- Documentation: docs/origin-manager.md
- Package: openSUSE-release-tools-origin-manager
- Usage: gocd
Assists in management of staging projects.
- Sources: [devel-project.py][devel-project], staging-report.py, suppkg_rebuild.py.
- Documentation: --
- Package: openSUSE-release-tools-staging-bot
- Usage: gocd (staging-report.py suppkg_rebuild.py, etc.)
Makes automatic legal reviews based on the legaldb API
- Sources: legal-auto.py
- Documentation: --
- Package: openSUSE-release-tools
- Usage: gocd
Checks that a submit request has correct tags specified.
- Sources: check_tags_in_requests.py
- Documentation: --
- Package: openSUSE-release-tools
- Usage: gocd
Checks ABI compatibility in OBS requests.
- Sources: abichecker
- Documentation: --
- Package: openSUSE-release-tools-abichecker
- Usage: gocd?
OpenQA stuff, not sure about the details.
- Sources: openqa-maintenance.py and oqamaint
- Documentation: --
- Package: openSUSE-release-tools
- Usage: gocd
Inspects built RPMs from staging projects.
- Sources: project-installcheck.py, staging-installcheck.py, maintenance-installcheck.py, findfileconflicts, write_repo_susetags_file.pl
- Documentation: --
- Package: openSUSE-release-tools-repo-checker
- Usage: gocd (project-installcheck.py, staging-installcheck and maintenance-installcheck.py
Checks for usual mistakes and problems in the source packages submitted by users. Used also as review bot that assigns reviews (?).
- Sources: check_source.py
- Documentation: docs/check_source.asciidoc
- Package: openSUSE-release-tools-check-source
- Usage: gocd
Tools for working with origin information.
- Sources: osc-origin.py
- Documentation: docs/origin-manager.md
- Package: openSUSE-release-tools-origin-manager
- Usage: gocd
Helps with OBS build cycles visualization. See the openSUSE:Factory/standard example.
- Sources: osc-cycle.py
- Documentation: --
- Package: --
- Usage: used to debug problems. See #992 as an example.
- Sources: osc-pcheck.py
- Documentation: --
- Package: --
- Usage: Overview for devel project maintainers: unsubmitted packages with diff, submitted packages, and unlinked packages (things to monitor)
Compares packages status between two projects. It determines which project has the newer version of a package, shows the diff, etc. Additionally, it is able to create a submit request from SOURCE to TARGET in case packages are different.
- Sources: compare_pkglist.py
- Documentation: --
- Package: openSUSE-release-tools
- Usage: ???
Manages staging projects.
- Sources: osc-staging.py
- Documentation: docs/staging.asciidoc and docs/testing.asciidoc
- Package: osc-plugin-staging
- Usage: staging projects management
The FactoryCandidates projects are used to determine whether a new package in Factory does build in the Leap version under development (see openSUSE:Leap:15.2:FactoryCandidates as example). This tool helps to manage this project by creating/updating project links for new packagers and creating SR from FactoryCandidates to the Leap project on successful builds.
- Sources: fcc_submitter.py
- Documentation: --
- Package: openSUSE-release-tools
- Usage: manually
Compares packages from a project against factory for differences in referenced issues and presents changes to allow whitelisting before creating Bugzilla entries. It's used to check Factory packages have all the bug references fixed in SLE (i.e. if 'Factory First' policy was correctly applied).
- Sources: issue-diff.py
- Documentation: --
- Package: openSUSE-release-tools
- Usage: manually
Verifies requests for new packages have a bugowner line in the request description (used in SLE where we don't have devel projects).
- Sources: check_bugowner.py
- Documentation: --
- Package: openSUSE-release-tools
- Usage: gocd