Project

General

Profile

action #159171

Updated by jbaier_cz 27 days ago

## Motivation 
 Consider transient openQA instances like openQA-single-instance-container but also new instances where we do not want to rely on admins to manually put stuff into /var/lib/openqa/share/tests. For those we want to ensure that openQA automatically clones git repos specified as part of tests but also keeps those working copies up to date. 

 ## Acceptance criteria 
 * **AC1:** Given CASEDIR has a git repo *And* /var/lib/openqa/share/tests does not already have the corresponding distri checked out *When* tests are created *Then* openQA clones the test repo 
 * **AC2:** Same as AC1 but for NEEDLE_DIR 
 * **AC3:** Whenever new tests are created and repo already exists *Then* the git repo is updated 
 * **AC4:** *Given* CASEDIR with specific commit in refspec *When* tests are created *Then* the git repo still stays on that refspec 


 ## Suggestions 

 The following describes something like a TOFU approach, where the first CASEDIR/NEEDLE_DIR for a DISTRI 
 is deemed to be the authoritative one in the future. 

 - Job gets created 
 - If job has CASEDIR / NEEDLE_DIR: 
   - CASEDIR / NEEDLE_DIR is cloned or updated on the webui server 
   - See HDD=1=http:// mechanism 
   - Where to actually clone to? --> /var/lib/openqa/share/tests/DISTRI/products/DISTRI/needles 
   - ~~(- What to do with different forks? -> use https://git-scm.com/docs/git-worktree)~~ 
   - If there is not /var/lib/openqa/share/tests/DISTRI, clone CASEDIR to /var/lib/openqa/share/tests/DISTRI 
   - If there is /var/lib/openqa/share/tests/DISTRI, only update it if git url is equal origin url in /var/lib/openqa/share/tests/DISTRI and branch in CASEDIR is equal checked out branch in /var/lib/openqa/share/tests/DISTRI 
   - Analog with NEEDLE_DIR and /var/lib/openqa/share/tests/DISTRI/products/DISTRI/needles 
 - Job is assigned 

 - Also make sure that fetchneedles doesn't interfere. 
 - The initial clone as well as updating should be handled in asynchronous tasks like ..._URL asset downloading

Back