Package groups are managed in a GIT using individual XML files per pattern. The pattern files follow the schema defined by opensuse, which is supported and required by the package manager zypp. A pattern is a flat XML file defining a list or group of packages and can be either installed when creating images or using the package manager when running on a system. To define a pattern, there is no need to list every single package and their dependencies; it is enough to list the top-level packages providing some functionality. The dependency resolver and the package manager will take care of required packages and will install all needed dependencies. To keep the pattern files simple, only list the top-level packages and any packages that are not directly required by other packages and let the package manager take care of the rest.
Note that the pattern files in the SCM repository are not valid and should not applied directly to projects or repositories. Those serve as input files only and need to be processed before they are deployed Architecture dependency
A package that is only applicable on certain architectures can be marked as such in the input pattern files using the arch attribute. For example, acpid is only used on i586, so it should not appear in repositories of other architectures. Publication
To publish patterns, the contents of the pattern SCM need to packaged and submitted to the relevant projects. The package takes care of merging the pattern files into one single file that is then used in the repository. Following that, the pattern packages (package-groups) is extracted during repository creation and added to the repository meta-data. Plans
Since we are processing the data in the SCM tree, we will be moving to plain text files to define the patterns. This will make it easy to manage the packages in the patterns and will help optimizing the patterns and the packages to be installed for the various architectures.
Similar to patterns, the image configurations are maintained in a SCM and are deployed using a package. Currently the files are maintained directly without and post-processing with plans to move to a simpler data format with post-processing using kickstarter.
The complexity of the configurations and amount of images that need to be produced on a daily basis require fine tuning and different considerations such as scheduling, producing images on demand and consistency of the created image configuration and the corresponding images.