Project

General

Profile

Feature #13031

Updated by Loïc Dachary over 8 years ago

Implement implement a task that builds Ceph packages and make it so they are consumed instead of the gitbuilder packages. The goal is to allow anyone with access to an OpenStack cluster to run a suite without requiring a build from the gitbuilders. 

 In Create the build-packages tasks, package-build task. Building the packages are built is done using : 

 * "make-debs.sh":https://github.com/ceph/ceph/blob/master/make-debs.sh 
 * make-rpm.sh  

 In both cases the output is a repository containing the packages. The build-packages tasks looks for a target with the role *packages* and runs on it. 

 The build-packages tasks must be run before the tasks that consume its output. This is done by modifying the interal task (see how the kernel task does it for instance): 

 * teuthology internal tasks looks for the package-build task in the job config 
 * if the package-build task is found, it is placed before tasks that are known to consume packages 
 <pre> 
 tasks: 
   - build-packages: 
 </pre> 
 * when a package-build task is found, the internal task tasks adds an additional target with the *packages* role 
 <pre> 
 roles: 
     - [mon.0, client.0] 
     - [packages] 
 </pre> 
 * the install task looks for the *packages* role and uses the repository it contains instead of the gitbuilder  

 if found 

 * a suites/debug/build-package.yaml file is added to all ceph-qa-suite branches so that it can be append to the teuthology-suite cli and found when extracting the suite. 

 This adds ~15 minutes to a run. There are many ways to optimize this (sharing repository between jobs targeting the same branch, uploading to third party repositories, creating docker images). But these are not in the scope of this first implementation. 

Back