12
votes

I recently re-configured our TeamCity build configuration to take advantage of the Branch features to apply the same build configuration to multiple branches in the same repository.

Now, I'm trying to setup an automated build script that can pull the latest artifact from TeamCity, but only for a specific branch. I was able to get it working fine on the default branch in the original configuration, using the TeamCity REST API, but can't figure out how to format the URL to pull the artifact for a specific branch.

I've looked at the following resources, but to no avail:

http://confluence.jetbrains.com/display/TW/REST+API+Plugin http://confluence.jetbrains.com/display/TCD7/Patterns+For+Accessing+Build+Artifacts

Thoughts?

3
Its amazing how a simple need like this is so hard to figure out. I am looking for the same thing. There is a way to pull by tag, so I tried to auto tag my builds with the branch name, but even that is impossible. :( Boooo TeamCityWeSam Abdallah
@WAMRA How frustrating... I updated my response with the solution that worked for us, hope it helps!jeremyalan

3 Answers

4
votes

I just came across this article.

I plan on giving this a try over the next couple days, and if it works, I will give a brief summary of the result for anyone else who has trouble with this.

EDIT:

Sorry for the delay, just realized that I never came back to report how we resolved this issue.

We ended up upgrading TeamCity (which we should have done anyway, so it wasn't a big deal), and once that was finished, it worked great without much effort. We're now running TeamCity v8.1.5, and here's the URL pattern we're using to pull our artifacts:

http://<build-server>/httpAuth/app/rest/builds/buildType:<build-type>,branch:<branch>/artifacts/content/<artifact-path>

NOTE: We're using the httpAuth API in order to authorize access to our build artifacts, so we also had to create a new TeamCity user for our deployments.

2
votes

From the linked page adding the QueryString param worked for me:

?branch=<branch_name>

Without this it only downloads artifacts from default branch.

Our full url:

http://<buildserver>/repository/downloadAll/<BuildId>/.lastFinished?branch=<branchname>

Which will download latest build from branch 'branchname' on the 'buildid' config.

0
votes

You can construct the URL as follows:

http://<TeamCity-Server>/guestAuth/repository/download/<BUILD_TYPE_ID>/<BUILD_NUMBER>/<ARTIFACT_PATH>