openSUSE-release-tools

ToTest-Manager

ToTest-Manager has two stages:

Both stages can run independently, but they communicate using the ToTestManagerStatus attribute to avoid races, like releasing a product while it’s being published or overwriting a product while it’s being tested. The releaser publish disables the test subproject before releasing a product.

Products

There are various kinds of product types:

Every product can have multiple architectures defined, those are only used to check for build success before doing a release. If any of the listed architectures failed to build, a release is blocked.

OBS does not allow to release a multibuild container without all of its flavors, so mentioning a multibuild container itself can be used instead of listing all flavors explicitly. In that case, there is no check for build success for the individual flavors, unless they are listed in addition.

There is a check to ensure that every successful build in the product_repo maps to a product. If this is not the case, an error is printed and the release is blocked.

set_release

The set_release mechanism can be enabled for main, livecd and image products, where their build number is overwritten by snapshot_number_prefix + a number. If take_source_from_product is set, that number is taken from the first main product (product_repo + product_arch) or if that doesn’t exist, the first image product (first arch). Otherwise, the 000release-packages:(base)-release package from the main project’s standard repo and arch is looked at.

Configuration

The configuration is stored in the ToTestManagerConfig attribute in YAML format.

base: openSUSE # Defaults to the toplevel project name
test_subproject: ToTest
do_not_release: False # If set, publishing is a noop (and the releaser doesn't publish disable!)
need_same_build_number: False # See set_release above
set_snapshot_number: False # See set_release above
snapshot_number_prefix: Snapshot # See set_release above
take_source_from_product: False # See set_release above
arch: x86_64 # See set_release above
jobs_num: 42 # Minimum number of openQA jobs before publishing is possible

product_repo: images
product_arch: local # See set_release above
livecd_repo: images
totest_container_repo: containers
totest_images_repo: images # Repo for image_products. If not set, uses product_repo.

products:
  main:
  - foo:dvd
  livecd:
  - livecd-foo:
    - x86_64
  ftp:
  - foo:ftp
  image:
  - foo:kvm:
    - x86_64
  - foo-container-image:lxc:
    - x86_64
  container:
  - foo-container-image:docker:
    - x86_64
  containerfile:
  - some-dockerfile:
    - x86_64