Create a branch in git during TeamCity build



I know that TC support "VCS Labeling" build feature to mark a commint by tag.

Is it possible to tune TC build to make a new branch for the latest commit instead of tag?

P.S. Our version control system is GIT.

Comment actions Permalink

Hi Grigory,

There is not such feature in TeamCity. Could you please describe your use case? Why do you need to create new branch after each build?

You can use agent side-checkout and create a new branch from the commit as the last build step of the build.

Comment actions Permalink

Hi Alina,

we have several builds in TC. Lets look on two of them for simplisity. The first one gets all sources, builds them, run tests, create nuget packages and so on. It can be executed for any working branch. From time to time we need to provide nuget packages of master branch to production nuget feed. So we manually execute the second build. It doesn't get sources but it is depandent from the first build so it just copy nuget packages from one feed to another (we use Octopus system to deploy our product). So it would be greate to mark the last commit in git to know that it is the last commit in production. It would be usefull not just to tag it, but create a branch also to simplify a making of hotfix.

I'm not sure about my English and I guess that you know Russion well so I will duplicate on Russion special for you :)

Итак, у нас есть несколько билдов в цепочке, но для простоты рассмотрим два. Первый билд забирает исходники, билдит их, запускает тесты, создаёт нугет пакеты и т.д. Он может быть вызван для любого рабочего бранча. Иногда мы должны отправлять нугет пакеты для бранча master на продакшен. Для этого мы руками запускаем второй билд для прошедшего первого билда (он от него зависит) и этот второй билд копирует нугет пакеты из одного фида в другой, для продакшена. Этот второй билд не забирает исходники, а просто копирует нугет пакеты. Было бы здорово, если бы в ходе его выполнения можно было пометить последний коммит в гите для прошедшего первого билда, чтобы знать, что это последний коммит, который был отправлен на продакшен. И хорошо бы не помечать его меткой, а создавать ветку, чтобы проще было хотфиксы делать.

Я понимаю, что такой подход всё усложняет, когда второй билд, ничего не знающий об исходинках, должен что-то помечать в гите, но, вдруг, разработчикам будет нечем заняться и они решат реализовать что-то подобное :) К тому же я хотел убедиться, что такая фича действительно не реализована.

About your suggestion: I know, that we can use agent side-checkout and execute all neded commands manually (even during the second build) and probably in future we will do that. I just don't like that we have to prepare each new agent to execute git commands because of problem with authentication (we will have to install something to keep password for user which works with git from TC to be able execute "git tag" and "git push" commands from command line).

But anyway thanks for your help.

Comment actions Permalink

Hi Grigory,

Thank you for details. I'll answer in english, so english-speaking users can understand it.

Usually tags are used in the case you described. If the hotfixes are needed, you can simply create branch from tag. Please feel free to create a feature request in our tracker. If many users vote for the request, we will consider including the feature in next releases.

Regarding authentication, you can use SSH Key Management feature to store private keys on server and pass them on agents in case of agent-side checkout. 


Please sign in to leave a comment.