2021-07-09 11:06:42 +01:00
# Contents
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.
## Overview
The repository contains a set of tools to aid in the process of building, testing and releasing
(open)SUSE based distributions. The [Tools ](#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:
2021-07-15 14:56:14 +01:00
* Some documentation in the [docs ](docs ) directory.
2021-07-09 11:06:42 +01:00
* A Python module called [osclib ](osclib ) which includes code that is shared by several tools. They
are available in the `osclib` package.
* A Docker-based [tests suite ](tests ). The Docker manifests and the Docker Compose files are
located in the [dist ](dist ) directory.
* [GoCD ](https://www.gocd.org ) configuration files in [gocd ](gocd ). GoCD is an open source CI/CD
2021-07-15 14:56:14 +01:00
server that is used to deploy the bots on OBS.
2022-02-22 09:22:09 +01:00
* Several [systemd ](systemd ) units: the Metrics instance makes use of them.
2022-08-05 10:46:41 +02:00
* publish_distro tool and related configuration in publish_distro_conf
2022-08-04 15:54:21 +02:00
to rsync content from OBS to ftp-stage/ftp-prod on pontifex host
2021-07-09 11:06:42 +01:00
## Tools
Most of these tools are available as packages for several distributions. Check the [spec file in
this repository](dist/package/openSUSE-release-tools.spec) or the [devel
project](https://build.opensuse.org/package/show/openSUSE:Tools/openSUSE-release-tools) 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.
### Command Line Tools
2023-01-02 14:37:40 +01:00
Usually, the executables are renamed as `osrt-NAME` (e.g., `osrt-announcer` ).
2021-07-09 11:06:42 +01:00
#### announcer
Generates email diffs summaries to announce product releases.
* Sources: [factory-package-news/announcer.py ](factory-package-news/announcer.py )
* Documentation: [factory-package-news/README.asciidoc ](factory-package-news/README.asciidoc )
* Package: openSUSE-release-tools-announcer
2021-07-22 08:34:19 +01:00
* Usage: [gocd ](https://github.com/openSUSE/openSUSE-release-tools/search?q=path%3A%2Fgocd+announcer )
2021-07-09 11:06:42 +01:00
#### pkglistgen
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 ](pkglistgen.py )
* Documentation: [docs/pkglistgen.md ](docs/pkglistgen.md )
* Package: openSUSE-release-tools-pkglistgen
2021-07-22 08:34:19 +01:00
* Usage: [gocd ](https://github.com/openSUSE/openSUSE-release-tools/search?q=path%3A%2Fgocd+pkglistgen )
2021-07-09 11:06:42 +01:00
#### container_cleaner
2021-07-20 12:56:00 +01:00
Clean old containers from a given project like
[openSUSE:Containers:Tumbleweed ](https://build.opensuse.org/project/show/openSUSE:Containers:Tumbleweed ).
Only those containers providing binaries to the latest five versions for each architecture are kept.
2021-07-09 11:06:42 +01:00
* Sources: [container_cleaner.py ](container_cleaner.py )
* Documentation: --
* Package: openSUSE-release-tools
2021-07-22 08:34:19 +01:00
* Usage: [gocd ](https://github.com/openSUSE/openSUSE-release-tools/search?q=path%3A%2Fgocd+container_cleaner )
2021-07-09 11:06:42 +01:00
#### metrics
Generates insightful metrics from relevant OBS and annotation data, based on InfluxDB and Grafana.
2021-07-15 15:32:38 +01:00
See < https: / / metrics . opensuse . org / > .
2021-07-09 11:06:42 +01:00
* Sources: [metrics.py ](metrics.py )
* Documentation: [docs/metrics.md ](./docs/metrics.md )
* Package: openSUSE-release-tools-metrics
* Usage: ?
#### metrics-access
2021-07-15 15:32:38 +01:00
Ingests `download.opensuse.org` Apache access logs and generates metrics. It is composed of a PHP
2021-07-09 11:06:42 +01:00
script and a set of [systemd units ](systemd ).
* Sources: [metrics/access/aggregate.php ](metrics/access/aggregate.php )
* Documentation: [docs/metrics.md ](./docs/metrics.md )
* Package: openSUSE-release-tools-metrics-access
* Usage: ?
#### totest-manager
Releases distribution snapshots to openQA and publishes if the result is positive.
* Sources: [totest-manager.py ](totest-manager.py ) and [ttm ](ttm )
* Documentation: [ttm/README.md ](ttm/README.md )
* Package: openSUSE-release-tools
2021-07-22 08:34:19 +01:00
* Usage: [gocd ](https://github.com/openSUSE/openSUSE-release-tools/search?q=path%3A%2Fgocd+totest-manager )
2021-07-09 11:06:42 +01:00
#### bugowner
Manages bugowner information
* Sources: [bugowner.py ](bugowner.py )
* Documentation: --
* Package: openSUSE-release-tools
* Usage: ?
#### bs_mirrorfull
2021-07-19 14:35:22 +01:00
Mirrors repositories from the build service to a local directory.
2021-07-09 11:06:42 +01:00
* Souces: [bs_mirrorfull ](bs_mirrorfull )
* Documentation: --
* Package: openSUSE-release-tools
* Usage: Used by other tools like `pkglistgen` or `repocheck`
#### biarchtool
Manages biarch packages
* Source: [biarchtool.py ](biarchtool.py )
* Documentation: --
* Package: openSUSE-release-tools
* Usage: ?
#### build-fail-reminder
Sends e-mails about packages failing to build for a long time.
* Sources: [build-fail-reminder.py ](build-fail-reminder.py )
* Documentation: --
* Package: openSUSE-release-tools
2021-07-22 08:34:19 +01:00
* Usage: [gocd ](https://github.com/openSUSE/openSUSE-release-tools/search?q=path%3A%2Fgocd+build-fail-reminder )
2021-07-09 11:06:42 +01:00
#### checknewer
Checks if all packages in a repository are newer than all other repositories.
* Sources: [checknewer.py ](checknewer.py )
* Documentation: --
* Package: openSUSE-release-tools
* Usage: ?
#### deptool
Assists in debugging dependencies
* Sources: [deptool.py ](deptool.py )
* Documentation: --
* Package: openSUSE-release-tools
* Usage: ?
#### requestfinder
Allows to retrieve requests from OBS with quite elaborated queries.
* Sources: [requestfinder.py ](requestfinder.py )
* Documentation: --
* Package: openSUSE-release-tools
* Usage: ?
#### create_staging
Scripts and templates to create staging projects.
* Sources: [staging_templates ](staging_templates )
* Documentation: --
* Package: --
* Usage: ?
### Bots
#### check_maintenance_incidents
Handles maintenance incident requests
* Sources: [check_maintenance_incidents.py ](check_maintenance_incidents.py )
* Documentation: [docs/maintbot.asciidoc ](docs/maintbot.asciidoc )
* Package: openSUSE-release-tools-maintenance
2021-07-22 09:51:42 +01:00
* Usage: obsolete (by origin-manager)
2021-07-09 11:06:42 +01:00
#### 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 ](origin-manager.py ) and [web ](web )
* Documentation: [docs/origin-manager.md ](docs/origin-manager.md )
* Package: openSUSE-release-tools-origin-manager
2021-07-22 16:05:52 +01:00
* Usage: [gocd ](https://github.com/openSUSE/openSUSE-release-tools/search?q=path%3A%2Fgocd+origin-manager )
2021-07-09 11:06:42 +01:00
#### staging-bot
2021-07-15 15:55:56 +01:00
Assists in management of staging projects.
2021-07-09 11:06:42 +01:00
2021-07-15 15:55:56 +01:00
* Sources: [devel-project.py][devel-project], [staging-report.py ](staging-report.py ), [suppkg_rebuild.py ](suppkg_rebuild.py ).
2021-07-09 11:06:42 +01:00
* Documentation: --
* Package: openSUSE-release-tools-staging-bot
2021-07-22 08:34:19 +01:00
* Usage: gocd ([staging-report.py ](https://github.com/openSUSE/openSUSE-release-tools/search?q=path%3A%2Fgocd+staging-report )
[suppkg_rebuild.py ](https://github.com/openSUSE/openSUSE-release-tools/search?q=path%3A%2Fgocd+suppkg_rebuild ), etc.)
2021-07-09 11:06:42 +01:00
#### legal-auto
Makes automatic legal reviews based on the legaldb API
* Sources: [legal-auto.py ](legal-auto.py )
* Documentation: --
* Package: openSUSE-release-tools
2021-07-22 08:34:19 +01:00
* Usage: [gocd ](https://github.com/openSUSE/openSUSE-release-tools/search?q=path%3A%2Fgocd+legal-auto )
2021-07-09 11:06:42 +01:00
#### check_tags_in_requests
2021-07-22 08:34:19 +01:00
Checks that a submit request has correct tags specified.
2021-07-09 11:06:42 +01:00
* Sources: [check_tags_in_requests.py ](check_tags_in_requests.py )
* Documentation: --
* Package: openSUSE-release-tools
2021-07-22 08:34:19 +01:00
* Usage: [gocd ](https://github.com/openSUSE/openSUSE-release-tools/search?q=path%3A%2Fgocd+check_tags_in_requests )
2021-07-09 11:06:42 +01:00
#### abichecker
Checks ABI compatibility in OBS requests.
* Sources: [abichecker ](abichecker )
* Documentation: --
* Package: openSUSE-release-tools-abichecker
2021-07-22 08:34:19 +01:00
* Usage: gocd?
2021-07-09 11:06:42 +01:00
#### openqa-maintenance
OpenQA stuff, not sure about the details.
2021-07-15 15:55:56 +01:00
* Sources: [openqa-maintenance.py ](openqa-maintenance.py ) and [oqamaint ](oqamaint )
2021-07-09 11:06:42 +01:00
* Documentation: --
* Package: openSUSE-release-tools
2021-07-22 16:05:52 +01:00
* Usage: [gocd ](https://github.com/openSUSE/openSUSE-release-tools/search?q=path%3A%2Fgocd+openqa-maintenance )
2021-07-09 11:06:42 +01:00
#### repo-checker
Inspects built RPMs from staging projects.
* Sources: [project-installcheck.py ](project-installcheck.py ),
[staging-installcheck.py ](staging-installcheck.py ),
[maintenance-installcheck.py ](maintenance-installcheck.py ),
[findfileconflicts ](findfileconflicts ), [write_repo_susetags_file.pl ](write_repo_susetags_file.pl )
* Documentation: --
* Package: openSUSE-release-tools-repo-checker
2021-07-22 16:05:52 +01:00
* Usage: gocd ([project-installcheck.py ](https://github.com/openSUSE/openSUSE-release-tools/search?q=path%3A%2Fgocd+project-installcheck ), [staging-installcheck ](https://github.com/openSUSE/openSUSE-release-tools/search?q=path%3A%2Fgocd+staging-installcheck ) and [maintenance-installcheck.py ](https://github.com/openSUSE/openSUSE-release-tools/search?q=path%3A%2Fgocd+maintenance-installcheck )
2021-07-09 11:06:42 +01:00
### OSC Plugins
#### osc-check_source.py
Checks for usual mistakes and problems in the source packages submitted by users. Used also as
review bot that assigns reviews (?).
2022-03-25 07:56:35 +01:00
* Sources: [check_source.py ](check_source.py )
2021-07-09 11:06:42 +01:00
* Documentation: [docs/check_source.asciidoc ](docs/check_source.asciidoc )
* Package: openSUSE-release-tools-check-source
2021-07-22 16:05:52 +01:00
* Usage: [gocd ](https://github.com/openSUSE/openSUSE-release-tools/search?q=path%3A%2Fgocd+check_source )
2021-07-09 11:06:42 +01:00
#### osc-origin.py
Tools for working with origin information.
* Sources: [osc-origin.py ](osc-origin.py )
2021-07-15 15:32:38 +01:00
* Documentation: [docs/origin-manager.md ](docs/origin-manager.md )
2021-07-09 11:06:42 +01:00
* Package: openSUSE-release-tools-origin-manager
2021-07-22 08:34:19 +01:00
* Usage: [gocd ](https://github.com/openSUSE/openSUSE-release-tools/search?q=path%3A%2Fgocd+osc-origin )
2021-07-09 11:06:42 +01:00
#### osc-cycle.py
2021-07-15 15:55:56 +01:00
Helps with OBS build cycles visualization. See the [openSUSE:Factory/standard example ](https://build.opensuse.org/project/repository_state/openSUSE:Factory/standard ).
2021-07-09 11:06:42 +01:00
* Sources: [osc-cycle.py ](osc-cycle.py )
* Documentation: --
* Package: --
2021-07-22 14:20:12 +01:00
* Usage: used to debug problems. See https://github.com/openSUSE/openSUSE-release-tools/pull/992 as an example.
2021-07-09 11:06:42 +01:00
2022-03-21 17:43:17 +01:00
#### osc-pcheck.py
* Sources: [osc-pcheck.py ](osc-pcheck.py )
* Documentation: --
* Package: --
* Usage: Overview for devel project maintainers: unsubmitted packages with diff, submitted packages, and unlinked packages (things to monitor)
2021-07-09 11:06:42 +01:00
#### compare_pkglist.py
2021-07-22 14:20:12 +01:00
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.
2021-07-09 11:06:42 +01:00
* Sources: [compare_pkglist.py ](compare_pkglist.py )
* Documentation: --
* Package: openSUSE-release-tools
* Usage: ???
#### staging
Manages staging projects.
* Sources: [osc-staging.py ](osc-staging.py )
* Documentation: [docs/staging.asciidoc ](docs/staging.asciidoc ) and [docs/testing.asciidoc ](docs/testing.asciidoc )
* Package: osc-plugin-staging
2021-07-22 14:20:12 +01:00
* Usage: staging projects management
2021-07-09 11:06:42 +01:00
#### fcc_submitter.py
2021-07-22 14:20:12 +01:00
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 ](https://build.opensuse.org/project/show/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.
2021-07-09 11:06:42 +01:00
* Sources: [fcc_submitter.py ](fcc_submitter.py )
* Documentation: --
* Package: openSUSE-release-tools
2021-07-22 16:00:00 +01:00
* Usage: manually
2021-07-09 11:06:42 +01:00
#### issue-diff.py
Compares packages from a project against factory for differences in referenced issues and presents
2022-03-10 10:34:16 +01:00
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).
2021-07-09 11:06:42 +01:00
* Sources: [issue-diff.py ](issue-diff.py )
* Documentation: --
* Package: openSUSE-release-tools
2022-03-10 10:34:16 +01:00
* Usage: manually
### check_bugowner.py
2021-07-09 11:06:42 +01:00
2022-03-10 10:34:16 +01:00
Verifies requests for new packages have a bugowner line in the request description (used in SLE where we don't have
devel projects).
2021-07-09 11:06:42 +01:00
2022-03-10 10:34:16 +01:00
* Sources: [check_bugowner.py ](check_bugowner.py )
* Documentation: --
* Package: openSUSE-release-tools
2022-03-21 17:43:17 +01:00
* Usage: gocd