Your browser was unable to load all of the resources. They may have been blocked by your firewall, proxy or browser configuration.
Press Ctrl+F5 or Ctrl+Shift+R to have your browser try again.

Branch handling and Changeset #1316

adrianshum ·
Hi,

I am new to QuickBuild (though have used Luntbuild for several years).

We are moving to QuickBuild. First phase will probably be a simple migration from Luntbuild without utilizing much Quickbuild features (Build promotion, Changeset, Proof build etc). However I want to plan ahead what is the right way to structure the configuration, so that in future when we try to adopt those feature, we can switch smoothly.

======================================
Q1 : Changeset + Different Branch in 1 Configuration
In Luntbuild day, in order to build release, I have one "ReleaseBuild" schedule for each project, which will checkout from corresponding branches/tags or trunk, base on several schedule level variables.

I want to keep using similar approach in Quickbuild: For each project, have only 1 "ReleaseBuild" configuration and it provide variable for user input. If user inputted the "TAG" variable during build, it will checkout from svn://blablabal/PROJECT/branches/PROJECT-{BRANCH}.

I am not sure if I use such way, in case I do something like (all under same configuration):
1) build Branch 1.x (rev 10)
2) build Branch 2.x (rev 20)
3) build Branch 1.x (rev 30)
4) build Branch 2.x (rev 40)

Is QuickBuild capable to extract changeset of 3) as difference of 1.x between rev 10 and 30, while changeset of 4) as diff between 2.x rev 20-40?

If this is not possible, am I correct to say that: the right way to handle branches is to have a separate configuration for each branch, and have proof, release, qa etc sub configuration in each of the branch configuration?

========================================
Q2: changeset between manual tags:
Currently we are manually tagging the project and build in build server. I understand by default, Quickbuild will have no way to determine the changeset between tag 1.1 and 1.2, as they are in different location in SVN.

Is there any way to tell Quickbuild what is the "actual" location of this build? That is, if I can tell Quickbuild that although you are checking out from PROJECT/tags/1.1 and PROJECT/tags/1.2, the "actual" location for changeset calculation is in fact PROJECT/branches/1.x (by, for example, extracting from the "source" of that specific svn copy operation).

(If this is not possible, I may forget changeset for the time being, and leave it until we change the workflow to make Quickbuild's handling tagging)
  • replies 3
  • views 1438
  • stars 0
robinshen ADMIN ·
It is best practice in QuickBuild that different branch has its own release sub configurations. This not only avoids change log calculation issue, but also make the setup easier for maintenance. For the second issue, you can work around it with a bit scripting in pre-execute action of the checkout step. Just select "execute specified script" for the pre-execute action and use below script to temporarily alter the repository url to calculate changesets and restore it later:
groovy:

def repo = step.repository;
def previousUrl = repo.url;
try {
repo.url = "svn://blabla/PROJECT/branches/1.x";
repo.getChanges();
} finally {
repo.url = previousUrl;
}
adrianshum ·
Thanks a lot <!-- s:) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":)" title="Smile" /><!-- s:) -->

Does that means the changeset will not be calculated in Q1?
In another word, by default within the same configuration, a build's changeset will only be calculated with previous build, and only if repository location is the same as current build?
robinshen ADMIN ·
Yes, that is true.