phase1: use do_cleanup to select Git() method
authorThibaut VARÈNE <hacks@slashdirt.org>
Fri, 22 Jun 2018 10:16:36 +0000 (12:16 +0200)
committerJo-Philipp Wich <jo@mein.io>
Tue, 26 Jun 2018 20:08:58 +0000 (22:08 +0200)
Git() parameters cannot accept a renderer such as Interpolate() (this
feature is only available from buildbot version 0.8.10).

To implement this feature in 0.8.9 we have to split the 'fresh' and
'clean' cases and make them separate steps that are mutually exclusive
(via doStepIf).

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
phase1/master.cfg

index a4e21da858a09ec69b5b827f7c0706d906113f9c..4132f27c67f15491959307042eb9690cb10ea8d4 100644 (file)
@@ -237,6 +237,16 @@ def IsCleanupRequested(step):
 def IsExpireRequested(step):
        return not IsCleanupRequested(step)
 
+def IsGitFreshRequested(step):
+       do_cleanup = step.getProperty("do_cleanup")
+       if do_cleanup:
+               return True
+       else:
+               return False
+
+def IsGitCleanRequested(step):
+       return not IsGitFreshRequested(step)
+
 def IsTaggingRequested(step):
        val = step.getProperty("tag")
        if val and re.match("^[0-9]+\.[0-9]+\.[0-9]+(?:-rc[0-9]+)?$", val):
@@ -508,6 +518,8 @@ for target in targets:
          # if repo doesn't exist: 'git clone repourl'
          # method 'clean' runs 'git clean -d -f', method fresh runs 'git clean -d -f x'. Only works with mode='full'
          # 'git fetch -t repourl branch; git reset --hard revision'
+       # Git() parameters can't take a renderer until buildbot 0.8.10, so we have to split the fresh and clean cases
+       # if buildbot is updated, one can use: method = Interpolate('%(prop:do_cleanup:#?|fresh|clean)s')
        factory.addStep(Git(
                repourl = repo_url,
                branch = repo_branch,
@@ -515,6 +527,17 @@ for target in targets:
                method = 'clean',
                locks = NetLockDl,
                haltOnFailure = True,
+               doStepIf = IsGitCleanRequested,
+       ))
+
+       factory.addStep(Git(
+               repourl = repo_url,
+               branch = repo_branch,
+               mode = 'full',
+               method = 'fresh',
+               locks = NetLockDl,
+               haltOnFailure = True,
+               doStepIf = IsGitFreshRequested,
        ))
 
        # update remote refs