56
votes

I'm wondering how to select the branch to build against using Team City 8.1.

My VCS root (Git) is set to Default: "master" and Branch specifications are

+:refs/heads/develop
+:refs/heads/feature/*
+:refs/heads/hotfix/*
+:refs/heads/master
+:refs/heads/release/*

I have a CI build set up that automatically builds anything that is checked in, which is working exactly how I want.

What I'd like to do is create a scheduled QA build/deployment against the "develop" branch. I see that if I click the ellipsis next to the run button, I can choose the branch on the "Changes" tab, but I'm unable to determine how to make this "stick". Is this possible, or am I going about this wrong?

Thanks,

Joe

2

2 Answers

108
votes

Based on @biswajit-86 's feedback and some other information I found while googling this, I was able to get this to work. Here's what I did (image-heavy, sorry). It's based on Team City 8.2 which seems to be set up a little differently than the examples I came across.

1) Set up a VCS root. Key here is the %BranchName% parameter.

enter image description here

2) Create a Build template and use the VCS root that was just created. I also added an MSBuild step as all of my builds need to run this.

enter image description here

3) Create a new build, based on the template. As you can see here, the %BrachName% parameter that was created in step 1 is available.

enter image description here

4) If you need to change this later, it's available here

enter image description here

And that's pretty much it. For my CI build, I left the branch name empty so any branch that is checked in triggers the MSBuild step. For my QA build, I pass in "develop" as shown here and I have this set up on a daily schedule. I also have a "release" build set up, but based on our naming conventions it looks like I need to update the build to point to the specific branch per release.

8
votes

You can parameterize the "Ref name" of the git VCS setup. What this means is you declare a variable of the form %variable.name% in your build, create a build parameter under the "configuration parameter:" category.

For each build target set this value and you should be able to pick the specific branch that you want to run the target for.