<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>JetBrains TeamCity Blog</title>
	
	<link>http://blogs.jetbrains.com/teamcity</link>
	<description>Innovative Solution for Continuous Integration &amp; Build Server for Java &amp; .NET Projects</description>
	<lastBuildDate>Tue, 18 Jun 2013 13:42:38 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/teamcity" /><feedburner:info uri="teamcity" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>TeamCity 8.0 RC is available (build 27390)</title>
		<link>http://feedproxy.google.com/~r/teamcity/~3/N8GEr_JH96o/</link>
		<comments>http://blogs.jetbrains.com/teamcity/2013/06/18/teamcity-8-0-rc-is-available-build-27390/#comments</comments>
		<pubDate>Tue, 18 Jun 2013 12:35:31 +0000</pubDate>
		<dc:creator>pavel.sher</dc:creator>
				<category><![CDATA[EAP]]></category>

		<guid isPermaLink="false">http://blogs.jetbrains.com/teamcity/?p=3171</guid>
		<description><![CDATA[We&#8217;re glad to announce the availability of the TeamCity 8.0 release candidate. We worked hard polishing various rough edges and we hope you&#8217;ll appreciate our efforts.
A significant change in TeamCity licensing is worth mentioning. The change is targeted at the Professional Server license users. Starting from version 8.0, Professional Server users can increase the limit [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;re glad to announce the availability of the TeamCity 8.0 release candidate. We worked hard polishing various <a href="http://youtrack.jetbrains.com/releaseNotes/TW?q=%23fixed+Fix+versions%3A+{Gaya+8.0+EAP6+%2827390%29}+-Task+-{trunk+issue}&amp;title=Gaya+8.0+RC+%2827390%29&amp;showDescription=false&amp;showComments=false">rough edges</a> and we hope you&#8217;ll appreciate our efforts.</p>
<p>A significant change in TeamCity licensing is worth mentioning. The change is targeted at the Professional Server license users. Starting from version 8.0, Professional Server users can increase the limit of build configurations by 10 with each additional Build Agent license. In other words, the maximum number of build configurations in a Professional Server is calculated as follows: the default 20 +10 * &lt;N obtained Build Agent Licenses&gt;.</p>
<p>Note that a Build Agent license does not give access to TeamCity Email support; for this you still need to buy the TeamCity Enterprise Server license.</p>
<p>Please <a href="http://confluence.jetbrains.com/display/TW/Download+Latest">try this RC</a> and give us your feedback.</p>
<p>Happy building!</p>
<img src="http://feeds.feedburner.com/~r/teamcity/~4/N8GEr_JH96o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.jetbrains.com/teamcity/2013/06/18/teamcity-8-0-rc-is-available-build-27390/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blogs.jetbrains.com/teamcity/2013/06/18/teamcity-8-0-rc-is-available-build-27390/</feedburner:origLink></item>
		<item>
		<title>New TeamCity EAP build (27323) is available</title>
		<link>http://feedproxy.google.com/~r/teamcity/~3/KQY3sSkc4mA/</link>
		<comments>http://blogs.jetbrains.com/teamcity/2013/06/05/new-teamcity-eap-build-27323-is-available/#comments</comments>
		<pubDate>Wed, 05 Jun 2013 11:26:25 +0000</pubDate>
		<dc:creator>pavel.sher</dc:creator>
				<category><![CDATA[EAP]]></category>

		<guid isPermaLink="false">http://blogs.jetbrains.com/teamcity/?p=3143</guid>
		<description><![CDATA[TeamCity 8.0 release is close and at the moment we&#8217;re mostly focused on enhancing the currently implemented functionality.
As a result, this EAP build does not have many new features but rather brings with it a number of bug fixes .
Please try it and tell us if some feature does not work for you the way [...]]]></description>
			<content:encoded><![CDATA[<p>TeamCity 8.0 release is close and at the moment we&#8217;re mostly focused on enhancing the currently implemented functionality.<br />
As a result, this EAP build does not have many new features but rather brings with it <a href="http://youtrack.jetbrains.com/releaseNotes/TW?q=%23fixed+Fix+versions%3A+{Gaya+8.0+EAP5+%2827323%29}+-Task+-{trunk+issue}&amp;title=Gaya+8.0+EAP+%2827323%29&amp;showDescription=false&amp;showComments=false">a number of bug fixes </a>.</p>
<p>Please <a href="http://confluence.jetbrains.com/display/TW/Download+Latest">try it</a> and <a href="http://www.jetbrains.net/devnet/community/teamcity">tell us</a> if some feature does not work for you the way it should or if something needs fixing.</p>
<p>Happy building!</p>
<img src="http://feeds.feedburner.com/~r/teamcity/~4/KQY3sSkc4mA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.jetbrains.com/teamcity/2013/06/05/new-teamcity-eap-build-27323-is-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blogs.jetbrains.com/teamcity/2013/06/05/new-teamcity-eap-build-27323-is-available/</feedburner:origLink></item>
		<item>
		<title>Improve Build Times with Compressed Artifacts</title>
		<link>http://feedproxy.google.com/~r/teamcity/~3/YzbKMt_E-CQ/</link>
		<comments>http://blogs.jetbrains.com/teamcity/2013/06/04/improve-build-times-with-compressed-artifacts/#comments</comments>
		<pubDate>Tue, 04 Jun 2013 13:03:18 +0000</pubDate>
		<dc:creator>rdemmer</dc:creator>
				<category><![CDATA[Partner]]></category>
		<category><![CDATA[Tips&Tricks]]></category>
		<category><![CDATA[build artifacts]]></category>
		<category><![CDATA[build time]]></category>
		<category><![CDATA[guest post]]></category>

		<guid isPermaLink="false">http://blogs.jetbrains.com/teamcity/?p=3016</guid>
		<description><![CDATA[This guest blog post is from Philipp Dolder, Software Architect and Continuous Integration Expert at bbv Software Services AG, a new JetBrains Training and Consulting Partner. Philipp is an enthusiastic software architect, agile coach, continuous integration expert and joint-owner of open source projects FakeItEasy and Appccelerate. Follow him on Twitter @philippdolder. 
The views expressed in this blog [...]]]></description>
			<content:encoded><![CDATA[<p><em><img class="alignleft size-full wp-image-3122" style="margin-right: 4px;" title="Philipp Dolder" src="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/05/PhilippDolder_250x250ds.jpg" alt="Philipp Dolder" width="165" height="165" />This guest blog post is from Philipp Dolder, Software Architect and Continuous Integration Expert at <a title="bbv Software Services AG" href="http://www.bbv.ch/en.html" target="_blank">bbv Software Services AG</a>, a new JetBrains Training and Consulting Partner. Philipp is an enthusiastic software architect, agile coach, continuous integration expert and joint-owner of open source projects <a title="FakeItEasy" href="https://github.com/FakeItEasy" target="_blank">FakeItEasy</a> and <a title="Appccelerate" href="http://www.appccelerate.com/" target="_blank">Appccelerate</a>. Follow him on Twitter <a title="Follow Philipp Dolder on Twitter" href="https://twitter.com/philippdolder" target="_blank">@philippdolder</a>. </em></p>
<p><em>The views expressed in this blog post are those of the individual, and do not necessarily represent the views of JetBrains.</em></p>
<p>Do you work with build chains and artifact dependencies? Do you wonder why it takes so much more build time when your artifacts get bigger and bigger?</p>
<p>You probably have the same potential for improvement as I had in my current project. Read on to learn how you can get your builds faster and waste less time waiting for your builds to complete. A fast feedback loop is of major importance, especially in agile software development.</p>
<h3>The issue</h3>
<p>In the project I&#8217;m currently working on, we have a fairly complex build process with many artifact dependencies between the various stages in our build chain. At some time we felt the build started slowing down. In the next retrospective meeting my team decided that I should analyze the build process and implement improvements to get us back to fast build times.</p>
<p>In this post I&#8217;ll only write about how I implemented the improvements. Let&#8217;s have a look at our build chain first:</p>
<p><a href="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/05/BuildChain.png" target="_blank"><img class="size-full wp-image-3017 alignnone" title="BuildChain" src="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/05/BuildChain.png" alt="BuildChain" width="769" height="399" /></a></p>
<p>In the above diagram you see the 4 stages in our build chain: build, test, installer, publish. You can see that the artifacts of the <strong>Integration-build (.NET)</strong> are used in four dependent builds: 3 test runs and the installer. These artifacts are about 1.2 GB in size and consist of thousands of dll’s and other small files. Now, keep in mind that the TeamCity system has to copy those artifacts 5 times per build (e.g. 6 GB in small files). Why 5? &#8211; You got it. Once from the <strong>Integration-build (.NET)</strong> build agent to the TeamCity server (artifact publishing) and 4 times to distribute them to the <strong>3 test run</strong> and the <strong>create installer</strong> agents (artifact resolving).</p>
<p>Remember what you learned about reading and writing very small files from and to a hard disk? It is very slow compared to writing one large file with the same total size. Let&#8217;s have some numbers to see the impact on our build times: Resolving the build artifacts takes about 20 minutes for each of the <strong>4 builds</strong>. So, it takes 80 minutes of CPU time just to resolve the artifacts in our build, which is triggered on every commit. As we are running these 4 builds in parallel, we actually &#8220;only&#8221; lose 20 minutes with artifact resolving, but it&#8217;s still too much. And it causes a higher CPU consumption on our virtualized server environment.</p>
<p>How can we improve and get our build faster?</p>
<h3>The approach</h3>
<p>Obviously we can save CPU time when we change our artifacts to a single large file. Don&#8217;t start changing your build script and use 7-zip command line to achieve that, yet!</p>
<p><img class="size-full wp-image-3020 alignnone" title="MakeAZip" src="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/05/MakeAZip.png" alt="MakeAZip" width="333" height="179" /></p>
<p>Let&#8217;s check out what TeamCity has to offer first. You probably read about it once you created your build configurations for the first time. At least that happened to me. I remember having read about zipping artifacts before but never gave a thought about it until now. Let&#8217;s get started.</p>
<h3>The solution</h3>
<p>In my project we build everything into a folder called <strong>results</strong> inside our working copy. For continuous integration builds we always build in <strong>Release</strong> mode; therefore, we also have a subfolder <strong>Release</strong> in our structure. Every C# project (.csproj) builds into its own subfolder which leads to the following folder structure:</p>
<p><img class="alignnone size-full wp-image-3022" title="resultsFolderStructure" src="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/05/resultsFolderStructure.png" alt="resultsFolderStructure" width="640" height="505" /></p>
<h3>How it was before</h3>
<p>Our build artifacts for the <strong>Integration-build (.NET)</strong> should consist of everything inside the <strong>results</strong> folder. Initially our artifact paths in the <strong>General Settings</strong> looks like this:</p>
<p><a href="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/05/artifactPathsBefore.png" target="_blank"><img class="alignnone size-full wp-image-3024" title="artifactPathsBefore" src="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/05/artifactPathsBefore.png" alt="artifactPathsBefore" width="640" height="143" /></a></p>
<p>That means everything inside the <strong>results</strong> folder and its subfolders will be published as build artifact recursively (excluding the <strong>results</strong> folder itself).</p>
<p><img class="alignnone size-full wp-image-3023" title="artifactDependencyBefore" src="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/05/artifactDependencyBefore.png" alt="artifactDependencyBefore" width="553" height="386" /></p>
<p>That&#8217;s how my build configurations looked like before I started improving build times.</p>
<h3>How it is now</h3>
<p>We simply need to change the <strong>artifact</strong> paths of our <strong>Integration-build (.NET)</strong> build configuration to the following:</p>
<p><a href="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/05/artifactPathsAfter.png" target="_blank"><img class="alignnone size-full wp-image-3026" title="artifactPathsAfter" src="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/05/artifactPathsAfter.png" alt="artifactPathsAfter" width="640" height="145" /></a></p>
<p>This will put everything inside the <strong>results</strong> folder into the <strong>results.zip</strong> file.</p>
<p>And in the build configurations depending on the artifacts we simply change the <strong>Artifacts rules</strong> to the following:</p>
<p><img class="alignnone size-full wp-image-3027" title="artifactDependencyAfter" src="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/05/artifactDependencyAfter.png" alt="artifactDependencyAfter" width="551" height="388" /></p>
<p>And you&#8217;re done.</p>
<h3>What is the impact?</h3>
<p>When it comes to the build time, we improved the artifact resolving part of our build chain drastically. It was definitely more than I would have imagined. Having about 20 minutes to resolve artifacts for one dependent build before, we are down to about 6 to 7 minutes now. So we just cut the resolving time to a third by such a simple change.</p>
<p><a href="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/05/ResolvingTimes.png" target="_blank"><img class="alignnone size-full wp-image-3028" title="ResolvingTimes" src="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/05/ResolvingTimes.png" alt="ResolvingTimes" width="381" height="349" /></a></p>
<p>At the same time our artifact zip file shrank to a third of its initial size resulting in about 400 MB now. We also saved space and network traffic on our server.</p>
<p><a href="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/05/ArtifactSize.png" target="_blank"><img class="alignnone size-full wp-image-3029" title="ArtifactSize" src="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/05/ArtifactSize.png" alt="ArtifactSize" width="382" height="264" /></a></p>
<h3>Conclusion</h3>
<p>We saved a lot of CPU time and network bandwidth with such a simple change in our build configuration without having to change our build script at all. But this is only the beginning of improving our continuous integration builds regarding the time it takes us for a complete cycle.</p>
<p><strong>There is even more</strong></p>
<p>This is just an incomplete list of additional options you should consider when further optimizing your build times.</p>
<p><strong>Chain your build configurations properly&#8230;</strong><br />
to make sure you benefit from maximum parallelization of builds to have the shortest possible feedback time. Add additional build agents if necessary.</p>
<p><strong>Filter unnecessary files from your artifacts&#8230;</strong><br />
when publishing them to minimize overall artifact size. TeamCity documentation provides more details for the configuration of <a title="Artifact Paths" href="http://confluence.jetbrains.com/display/TCD7/Configuring+General+Settings#ConfiguringGeneralSettings-ArtifactPaths" target="_blank">artifact paths</a> and <a title="Artifact Dependencies" href="http://confluence.jetbrains.com/display/TCD7/Artifact+Dependencies" target="_blank">dependencies</a>.</p>
<p><strong>Ensure good network connectivity and use fast hard disks&#8230;</strong><br />
to have shortest file transfer times possible.</p>
<p><strong>Ensure fast unit and integration tests&#8230;</strong><br />
to avoid unnecessary long build times caused by long running tests that connect to real databases, unit tests that access the file system, etc.</p>
<p><strong>Use TeamCity performance monitor&#8230;</strong><br />
to find bottlenecks, understand possible hardware upgrade impact, discover suspicious periods in the build when nothing happens and so on. See Maarten Balliauw&#8217;s <a title="TeamCity Performance Monitor" href="http://blogs.jetbrains.com/teamcity/2013/02/11/teamcity-performance-monitor/" target="_blank">blog post</a> post for more details.</p>
<img src="http://feeds.feedburner.com/~r/teamcity/~4/YzbKMt_E-CQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.jetbrains.com/teamcity/2013/06/04/improve-build-times-with-compressed-artifacts/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://blogs.jetbrains.com/teamcity/2013/06/04/improve-build-times-with-compressed-artifacts/</feedburner:origLink></item>
		<item>
		<title>TeamCity 8.0 EAP (build 27284) with new IDEA make</title>
		<link>http://feedproxy.google.com/~r/teamcity/~3/Lq4ds3tG9ks/</link>
		<comments>http://blogs.jetbrains.com/teamcity/2013/05/24/teamcity-8-0-eap-build-27284-with-new-idea-make/#comments</comments>
		<pubDate>Fri, 24 May 2013 14:02:33 +0000</pubDate>
		<dc:creator>Sergey Kotlov</dc:creator>
				<category><![CDATA[EAP]]></category>

		<guid isPermaLink="false">http://blogs.jetbrains.com/teamcity/?p=2981</guid>
		<description><![CDATA[TeamCity 8.0 is coming and we&#8217;re thrilled to present the next EAP to you! Working hard, we have added several new features and we continue to make improvements of the existing ones.
New make in IDEA Project runner
We integrated a new IntelliJ IDEA external make bringing all of the goodies provided by this tool into TeamCity:

support [...]]]></description>
			<content:encoded><![CDATA[<p>TeamCity 8.0 is coming and we&#8217;re thrilled to present the next EAP to you! Working hard, we have added several new features and we continue to make improvements of the existing ones.</p>
<h2>New make in IDEA Project runner</h2>
<p>We integrated a new IntelliJ IDEA external make bringing all of the goodies provided by this tool into TeamCity:</p>
<ul>
<li>support for different languages like <strong>Groovy</strong>, <strong>Scala</strong>, <strong>Closure</strong>, etc.</li>
<li>ability to build <strong>Android</strong> projects and artifacts, as well as all other types of artifacts supported by IntelliJ IDEA itself</li>
<li>faster compilation thanks to the highly optimized IntelliJ IDEA make tool, plus the ability to build a project <strong>incrementally</strong></li>
</ul>
<h2>Meta-Runner</h2>
<p>All meta-runners are now stored on the project level. In other words, you can create a meta-runner which will be available in your project and its sub-projects only and won&#8217;t be visible outside. Also we have made several important fixes in the Meta-runner itself.</p>
<h2>Other enhancements</h2>
<p>There are other improvements including:</p>
<ul>
<li>human assignable identifiers for VCS roots;</li>
<li>new icons in the web interface and IntelliJ plugin;</li>
<li>and so on.</li>
</ul>
<p>You are most welcome to <a href="http://confluence.jetbrains.net/display/TW/Download+Latest">try new EAP</a> and <a href="http://www.jetbrains.net/devnet/community/teamcity">tell us</a> about your experience. You can find the full list of changes in the <a href="http://confluence.jetbrains.com/display/TW/Gaya+8.0+EAP+%28build+27284%29+Release+Notes">release notes</a>.</p>
<p>Happy building!</p>
<img src="http://feeds.feedburner.com/~r/teamcity/~4/Lq4ds3tG9ks" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.jetbrains.com/teamcity/2013/05/24/teamcity-8-0-eap-build-27284-with-new-idea-make/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blogs.jetbrains.com/teamcity/2013/05/24/teamcity-8-0-eap-build-27284-with-new-idea-make/</feedburner:origLink></item>
		<item>
		<title>Explaining the Shared Resources plugin</title>
		<link>http://feedproxy.google.com/~r/teamcity/~3/zUrv5gISrCs/</link>
		<comments>http://blogs.jetbrains.com/teamcity/2013/05/15/explaining-the-shared-resources-plugin/#comments</comments>
		<pubDate>Wed, 15 May 2013 11:14:26 +0000</pubDate>
		<dc:creator>Maarten.Balliauw</dc:creator>
				<category><![CDATA[EAP]]></category>
		<category><![CDATA[Features]]></category>
		<category><![CDATA[Tips&Tricks]]></category>
		<category><![CDATA[agent pool]]></category>
		<category><![CDATA[build configuration]]></category>
		<category><![CDATA[build feature]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[TeamCity]]></category>

		<guid isPermaLink="false">http://blogs.jetbrains.com/teamcity/?p=2958</guid>
		<description><![CDATA[
This post describes one of the new features in the upcoming TeamCity 8.0

Using TeamCity, we can easily set up a build farm using a central TeamCity server and several connected build agents. By having multiple build agents, we can run builds and build configurations in parallel. Different branches of the same project can build simultaneously [...]]]></description>
			<content:encoded><![CDATA[<blockquote>
<p id="docs-internal-guid-3c4f2670-59cd-3c4f-edc3-89446c5e6be0" dir="ltr">This post describes one of the new features in the upcoming TeamCity 8.0</p>
</blockquote>
<p dir="ltr">Using TeamCity, we can easily set up a build farm using a central TeamCity server and several connected build agents. By having multiple build agents, we can run builds and build configurations in parallel. Different branches of the same project can build simultaneously on different build agents,  personal builds can be run on one build agent while the nightly build is running on another agent and so on.</p>
<p dir="ltr">But what if we have multiple build agents and we want to constrain parallelism for some projects? What if we do want to have parallelism but want to provide different build variables to each build? Good questions, and the Shared Resources plugin is the answer!</p>
<p dir="ltr">The Shared Resources plugin comes bundled with <a href="http://confluence.jetbrains.com/display/TW/TeamCity+EAP+(Latest)">TeamCity 8.0 EAP</a>. In TeamCity 7.1.x it <a href="http://confluence.jetbrains.com/display/TW/TeamCity+Shared+Resources">has to be installed separately</a>. Sources for this plugin are <a href="https://github.com/orybak/TeamCity.SharedResources">available on GitHub</a>.</p>
<h2>Limiting concurrent builds with simple named resources</h2>
<p>The Shared Resources plugin works at the project level. Per project, we can specify one or more shared resources which we can use to decide on the number of concurrent builds for a given project and build configuration.</p>
<p>In the<strong><em> Project Home</em></strong> under the <strong><em>Shared Resources</em></strong> tab, we can specify the resources we want to be able to lock. A shared resource should be given a name which can be used later on in our builds. The resource type can be infinite (effectively <em>not</em> limiting build concurrency), a resource with quota and a resource with custom values. Let’s go with resource with quota.</p>
<p>The resource quota is the number of concurrent read locks that can be acquired on the resource. Or in other words: the maximum number of concurrent builds we want to run. Let’s be restrictive and set the quota to <em>1</em>.</p>
<p><a href="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/05/image.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Add Shared Resource in TeamCity" src="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/05/image_thumb.png" border="0" alt="Add Shared Resource in TeamCity" width="690" height="497" /></a></p>
<p>None of the Build Configurations will obey these quota: we have to add a Shared Resources Build Feature to every Build Configuration we want to subject to these quota. This can be done in the Build Configuration. Under Build Features, we can add a Shared Resources build feature which acquires a read or write lock on the shared resource created earlier.</p>
<p><a href="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/05/image1.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Add Build Feature" src="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/05/image_thumb1.png" border="0" alt="Add Build Feature" width="765" height="514" /></a></p>
<p>Once added, the build configuration will only be run on one build agent at a time. Personal builds as well as regular builds will all be enqueued and wait for the lock on the shared resource to be released, even if one of the build agents is idle.</p>
<p>Note that it is possible to await multiple locks in a build configuration.</p>
<h2>Working with custom resource values</h2>
<p>While working with simple named resources may be useful, it may be worth having a custom resource value for every lock acquired. Imagine we have a build which has a custom build step running load tests on a server. Wouldn’t it be nice if we could limit the number of concurrent build based on the number of load test targets available <em>and</em> be able to get the URL to one of these servers in our build? We can using a set of custom resource values.</p>
<p>When creating a new Shared Resource, we can specify the type as a resource with custom values:</p>
<p><a href="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/05/image2.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Custom resource values" src="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/05/image_thumb2.png" border="0" alt="Custom resource values" width="678" height="524" /></a></p>
<p>In our build, we have several options available to acquire a lock on this shared resource. We can lock on any value that is not locked, we can lock on all values or on a specific value. For our purpose of needing a dedicated load testing machine, we can opt to lock on any available value.</p>
<p><a href="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/05/image3.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="List of resources lock" src="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/05/image_thumb3.png" border="0" alt="List of resources lock" width="767" height="520" /></a></p>
<p>Once added, we will not be able to run more builds concurrently than the number of available values in our custom shared resource. If we need the value of the locked value during our build, we can read it using the <em>%teamcity.locks.&lt;lockType&gt;.&lt;lockName&gt;%</em> variable, <em>%teamcity.locks.readLock.RunTestsAgainstServer% </em>in our case. For example when working with build parameters, we can use the lock value as a custom parameter:</p>
<p><a href="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/05/image4.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Custom parameter based on shared resource lock value" src="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/05/image_thumb4.png" border="0" alt="Custom parameter based on shared resource lock value" width="748" height="434" /></a></p>
<h2>Where can I manage shared resources?</h2>
<p>So far we&#8217;ve seen that shared resources can be added for every project separately and used in that project&#8217;s build configurations. With TeamCity 8.0, <a href="http://blogs.jetbrains.com/teamcity/2013/01/25/teamcity-8-0-code-name-gaya-eap-is-open/">we&#8217;ve introduced project groups</a> which allows us to group several projects under a project group. Shared resources can be added to both the project group as well as the individual projects. Locks can be acquired for every build configuration in a project and/or project group, making it possible to have shared resources across projects as well.</p>
<p dir="ltr">Do let us know your thoughts via the comments below. Dive in, experiment and… happy building!</p>
<img src="http://feeds.feedburner.com/~r/teamcity/~4/zUrv5gISrCs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.jetbrains.com/teamcity/2013/05/15/explaining-the-shared-resources-plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blogs.jetbrains.com/teamcity/2013/05/15/explaining-the-shared-resources-plugin/</feedburner:origLink></item>
		<item>
		<title>TeamCity User Guide Courseware</title>
		<link>http://feedproxy.google.com/~r/teamcity/~3/-x6JP-kpr5U/</link>
		<comments>http://blogs.jetbrains.com/teamcity/2013/05/13/teamcity-user-guide-courseware/#comments</comments>
		<pubDate>Mon, 13 May 2013 18:48:06 +0000</pubDate>
		<dc:creator>Hadi Hariri</dc:creator>
				<category><![CDATA[How-To's]]></category>

		<guid isPermaLink="false">http://blogs.jetbrains.com/teamcity/2013/05/13/teamcity-user-guide-courseware/</guid>
		<description><![CDATA[We have created a TeamCity User Guide as a series of screencasts. 


An outline of the table of contents is:

CI Process and TeamCity
Web Interface Overview
Build Configurations
Build Results	
Working with Tests	
Code Analysis	
Working with Changes
Personal Builds	
Notifications and User Profile


The entire course duration is under an hour. You can view it entirely for free either on JetBrainsTV or on [...]]]></description>
			<content:encoded><![CDATA[<p>We have created a TeamCity User Guide as a series of screencasts. </p>
<p><img src="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/05/TeamCiyUserGuide.png" alt="TeamCity User Guide" title="TeamCiyUserGuide.png" border="0" width="600" height="332"/></p>
<p>
An outline of the table of contents is:</p>
<ul>
<li><a href="http://tv.jetbrains.net/videocontent/teamcity-user-guide-part-1-of-9-introduction">CI Process and TeamCity</a></li>
<li><a href="http://tv.jetbrains.net/videocontent/teamcity-user-guide-part-2-of-9-web-interface-overview">Web Interface Overview</a></li>
<li><a href="http://tv.jetbrains.net/videocontent/teamcity-user-guide-part-3-of-9-build-configurations">Build Configurations</a></li>
<li><a href="http://tv.jetbrains.net/videocontent/teamcity-user-guide-part-4-of-9-build-results">Build Results</a>	</li>
<li><a href="http://tv.jetbrains.net/videocontent/teamcity-user-guide-part-5-of-9-working-with-tests">Working with Tests</a>	</li>
<li><a href="http://tv.jetbrains.net/videocontent/teamcity-user-guide-part-6-of-9-code-analysis">Code Analysis</a>	</li>
<li><a href="http://tv.jetbrains.net/videocontent/teamcity-user-guide-part-7-of-9-working-with-changes">Working with Changes</a></li>
<li><a href="http://tv.jetbrains.net/videocontent/teamcity-user-guide-part-8-of-9-personal-builds">Personal Builds</a>	</li>
<li><a href="http://tv.jetbrains.net/videocontent/teamcity-user-guide-part-9-of-9-notifications-and-user-profiles">Notifications and User Profile</a></li>
</ul>
<p>
The entire course duration is under an hour. You can view it entirely for free either on <a href="http://tv.jetbrains.net/channel/teamcity">JetBrainsTV</a> or on our <a href="http://www.youtube.com/playlist?list=PLQ176FUIyIUZK6_TOTRRlc4w53xjuQlnf">YouTube Channel</a>. Enjoy!</p>
<img src="http://feeds.feedburner.com/~r/teamcity/~4/-x6JP-kpr5U" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.jetbrains.com/teamcity/2013/05/13/teamcity-user-guide-courseware/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blogs.jetbrains.com/teamcity/2013/05/13/teamcity-user-guide-courseware/</feedburner:origLink></item>
		<item>
		<title>Typed Parameters and Continuous Deployment</title>
		<link>http://feedproxy.google.com/~r/teamcity/~3/XIwXoe7YCHY/</link>
		<comments>http://blogs.jetbrains.com/teamcity/2013/05/07/typed-parameters-and-continuous-deployment/#comments</comments>
		<pubDate>Tue, 07 May 2013 11:01:55 +0000</pubDate>
		<dc:creator>Sergey Kotlov</dc:creator>
				<category><![CDATA[Tips&Tricks]]></category>

		<guid isPermaLink="false">http://blogs.jetbrains.com/teamcity/?p=2873</guid>
		<description><![CDATA[As I hope you’ve had a chance to see for yourself, TeamCity is an excellent tool for continuous integration used as a core ingredient in the continuous deployment process by many teams and greatly loved for its cool features, flexibility in customization and plugins. This post doesn’t aim at covering all aspects of continuous deployment [...]]]></description>
			<content:encoded><![CDATA[<p>As I hope you’ve had a chance to see for yourself, TeamCity is an excellent tool for continuous integration used as a core ingredient in the continuous deployment process by many teams and greatly loved for its cool features, flexibility in customization and plugins. This post doesn’t aim at covering all aspects of continuous deployment with TeamCity; today I’d like to focus on a powerful feature and yet not widely known feature:<strong> typed parameters.</strong></p>
<p>Many of you have run a <strong>custom build</strong> at least once. If you’re not sure what a custom build is, you are welcome to visit our <a href="http://confluence.jetbrains.com/display/TCD8/Triggering+a+Custom+Build">documentation</a> for details. In short, a <strong>custom build</strong> is a build with modified parameters; it can be run from the <strong>Custom Build </strong>dialog:</p>
<p><a href="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/04/eclipsis_run_button.png"><img class="alignnone size-medium wp-image-2874" title="Custom build run button" src="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/04/eclipsis_run_button-300x47.png" alt="" width="300" height="47" /></a></p>
<p><a href="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/05/custom-build-dialog.png"><img class="alignnone size-medium wp-image-2936" title="Custom build dialog" src="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/05/custom-build-dialog-300x141.png" alt="" width="300" height="141" /></a></p>
<p><a href="http://confluence.jetbrains.com/display/TCD7/Typed+Parameters">Typed parameters</a> is a simple user-friendly approach to customizing the <strong>Custom Build</strong> dialog behavior. Let’s go over a few scenarios to see how these parameters work.</p>
<h2>Scenario 1: Accidental deployments</h2>
<p>We’ve all had a few cases when we started a deployment process by mistake, accidentally clicking the <strong>Run</strong> button. It’s a good thing these deployments didn’t cause any errors or outages, but how do we prevent such behavior in the future? Just follow the steps below:</p>
<p>Go to the <strong>Build parameters </strong>step:</p>
<p><a href="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/05/build-parameters.png"><img class="alignnone size-medium wp-image-2929" title="Build parameters step" src="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/05/build-parameters-300x137.png" alt="" width="300" height="137" /></a></p>
<p>Click <strong>Add new parameter</strong> and then the <strong>Edit </strong>button:</p>
<p><a href="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/05/areyousure1.png"><img class="alignnone size-medium wp-image-2922" title="Are you sure? Create dialog" src="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/05/areyousure1-300x164.png" alt="" width="300" height="164" /></a></p>
<p>Set <strong>Display </strong>to <em><strong>prompt</strong></em>. In this case TeamCity will always ask to review the value and choose the <strong>Checkbox</strong> type.</p>
<p><a href="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/05/areyousure21.png"><img class="alignnone size-medium wp-image-2927" title="Are you sure? Typed parameter dialog" src="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/05/areyousure21-300x185.png" alt="" width="300" height="185" /></a></p>
<p>Next, modify your deployment script to execute only if the value is <strong>true </strong>and that’s it! No more space for mistakes! Now start a manual build by clicking <strong>Run Build</strong>.</p>
<p><a href="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/05/areyousure31.png"><img class="alignnone size-medium wp-image-2928" title="Are you sure? Run dialog" src="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/05/areyousure31-300x125.png" alt="" width="300" height="125" /></a></p>
<h2>Scenario 2: Authorization by password</h2>
<p>When a third-party provider hosting our service doesn’t provide authentication by key, it means we have to enter the username and password every time we deploy a new version. That&#8217;s a pain, since our internal policies allow us to keep the username in the configuration files but not a password. Moreover, we don’t want the password from the server to appear anywhere in the user interface or build logs. Let’s see how we can we handle this.</p>
<p>Add a new parameter &#8211; <strong>Password</strong>, click <strong>Edit, </strong>choose the <strong>Password</strong> type:</p>
<p><a href="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/05/password1.png"><img class="alignnone size-medium wp-image-2933" title="Password. Typed parameter dialog" src="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/05/password1-300x169.png" alt="" width="300" height="169" /></a></p>
<p>and click <strong>Run.</strong></p>
<p><strong><a href="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/05/password2.png"><img class="alignnone size-medium wp-image-2934" title="Password. Run dialog" src="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/05/password2-300x122.png" alt="" width="300" height="122" /></a></strong></p>
<p>Problem solved!</p>
<blockquote><p>Note: TeamCity tries hard not to reveal the actual value of  the password type parameter by filtering it out from the build log and other places. Check our <a href="http://confluence.jetbrains.com/display/TCD7/Typed+Parameters">documentation</a> for more details.</p></blockquote>
<h2>Scenario 3: Deployment to different servers</h2>
<p>We deploy a new version of our service in three steps:</p>
<ol>
<li>To internal users</li>
<li>To beta testers</li>
<li>To all users</li>
</ol>
<p>Our deployment system accepts the <strong>stage </strong>parameter with the following values: <strong><em>internal</em>, <em>beta</em></strong><em> </em>and <strong><em>all</em></strong>. If the value is not from the described set, the deployment process will fail. Certainly, a person starting the deployment step can change the parameter’s value in <strong>Properties </strong>tab, but what if they make a mistake? Or simply forget to change the value? Here is how we can prevent it:</p>
<p>Add a new parameter - <strong>stage</strong>, click <strong>Edit, </strong>choose the <strong>Select </strong>type and add options.</p>
<p><a href="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/04/edit-typed-parameter.png"><img class="alignnone size-medium wp-image-2896" title="Edit Typed Parameter" src="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/04/edit-typed-parameter-300x229.png" alt="" width="300" height="229" /></a></p>
<p>Click <strong>Save</strong> and start the build.</p>
<p><a href="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/04/custom-build-deployment.png"><img class="alignnone size-medium wp-image-2894" title="Custom Build Deployment" src="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/04/custom-build-deployment-300x142.png" alt="" width="300" height="142" /></a></p>
<p><strong>Select, checkbox</strong> and <strong>password </strong>are not the only possible options:<strong> Text </strong>field with Regexp pattern validation is also available. Read our <a href="http://confluence.jetbrains.com/display/TCD7/Typed+Parameters">documentation</a> to find out the details.<span style="font-size: 13px; line-height: 19px;"> </span></p>
<p>Hopefully, I managed to demonstrate that a custom build backed by typed parameters is indeed a powerful way to set up the process you need. This post is just an introduction which should help you to get to know TeamCity better.</p>
<p>Dig deeper, experiment and … happy building!</p>
<p dir="ltr">
<img src="http://feeds.feedburner.com/~r/teamcity/~4/XIwXoe7YCHY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.jetbrains.com/teamcity/2013/05/07/typed-parameters-and-continuous-deployment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blogs.jetbrains.com/teamcity/2013/05/07/typed-parameters-and-continuous-deployment/</feedburner:origLink></item>
		<item>
		<title>TeamCity 8.0 EAP (build 27147)</title>
		<link>http://feedproxy.google.com/~r/teamcity/~3/Nyp4SUG_PiA/</link>
		<comments>http://blogs.jetbrains.com/teamcity/2013/04/24/teamcity-8-0-eap-build-27147/#comments</comments>
		<pubDate>Wed, 24 Apr 2013 13:32:13 +0000</pubDate>
		<dc:creator>Sergey Kotlov</dc:creator>
				<category><![CDATA[EAP]]></category>

		<guid isPermaLink="false">http://blogs.jetbrains.com/teamcity/?p=2794</guid>
		<description><![CDATA[More than a month passed from last TeamCity EAP and we&#8217;re glad to disclose what have been done. Multiple improvements were made to the functionality we introduced in previous EAPs.
Project groups
We continue to integrate groups of projects into TeamCity. When new version is out we promise you won&#8217;t believe that there was no allusion to [...]]]></description>
			<content:encoded><![CDATA[<p>More than a month passed from last TeamCity EAP and we&#8217;re glad to disclose what have been done. Multiple improvements were made to the functionality we introduced in previous EAPs.</p>
<h2>Project groups</h2>
<p>We continue to integrate groups of projects into TeamCity. When new version is out we promise you won&#8217;t believe that there was no allusion to the groups in TeamCity just a few months before. Check an incomplete list of the places which are aware of sub-projects now:</p>
<ul>
<li>Project hierarchy is shown on <strong>Administration|Projects</strong> page;</li>
<li>Projects hierarchy is shown in all drop downs where a list of projects or configurations is displayed;</li>
<li>Notification rule defined for a project will be effective for sub-projects too;</li>
<li>It is possible to define cleanup rules for projects. These cleanup  rules are default ones for build configurations from this project and its sub-projects.</li>
</ul>
<p><a href="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/04/administration_project_groups.png"><img class="alignnone size-medium wp-image-2835" title="Project Groups in Administration " src="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/04/administration_project_groups-300x170.png" alt="" width="300" height="170" /></a></p>
<p>Get a full list of changes in <a href="http://confluence.jetbrains.com/display/TW/Gaya+8.0+EAP+%28build+27147%29+Release+Notes#Gaya8.0EAP%28build27147%29ReleaseNotes-Projectgroups">release notes</a>.</p>
<h2>Meta-runner</h2>
<p>Meta Runner is a powerful feature providing a promising new way for customizing  TeamCity and making it even more people-oriented. To understand it, let&#8217;s consider an example.</p>
<p>Imagine you have some repeated task used over and over again across different build configurations. The task is defined as one or more build steps, based on built-in runners, like Ant or command line. Most likely you&#8217;d want to reuse this task easily across several build configurations. You can&#8217;t do this with templates because template enforces you to share the same settings across different configurations which is not always possible. A solution which we propose is to extract Meta-runner out of these steps, see how it works in <a href="http://confluence.jetbrains.com/display/TW/Gaya+8.0+EAP+%28build+27147%29+Release+Notes#Gaya8.0EAP%28build27147%29ReleaseNotes-Metarunner">release notes</a>.</p>
<h2>External IDs and projects transfer</h2>
<p>External IDs will help to simplify import/export of projects and build configurations. We introduced them <a title="First TeamCity 8.0 EAP" href="http://blogs.jetbrains.com/teamcity/2013/01/25/teamcity-8-0-code-name-gaya-eap-is-open/">one EAP ago</a> made some improvements from last time:</p>
<ul>
<li>it&#8217;s possible to define external ID for build configuration and template;</li>
<li>external ID can be used in HTTP and REST requests;</li>
<li>external IDs are stored in project configuration files, not internal ones.</li>
</ul>
<p>Read more about external IDs in <a href="http://confluence.jetbrains.com/display/TW/Gaya+8.0+EAP+%28build+27147%29+Release+Notes#Gaya8.0EAP%28build27147%29ReleaseNotes-ExternalIDsforbuildconfigurationandtemplate">release notes</a>.</p>
<h2>Disk Usage Report</h2>
<p>Disk Usage is now integrated with Server Health. New report, based on disk usage, show configurations with large build log files which are rarely useful because it&#8217;s difficult to analyze them. Read more on this report in <a href="http://confluence.jetbrains.com/display/TW/Gaya+8.0+EAP+%28build+27147%29+Release+Notes#Gaya8.0EAP%28build27147%29ReleaseNotes-Largebuildlogs%28basedondiskusagereport%29">release notes</a>.</p>
<h2>Queued Build page</h2>
<p>Dependencies progress has been added and you can see estimates for all dependencies in one place now.</p>
<p><a href="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/04/dependencies_time.png"><img class="alignnone size-medium wp-image-2840" title="Dependencies progress" src="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/04/dependencies_time-300x139.png" alt="" width="300" height="139" /></a></p>
<p>Please, <a href="http://confluence.jetbrains.net/display/TW/Download+Latest">try new EAP</a> and <a href="http://www.jetbrains.net/devnet/community/teamcity">tell us</a> about your experience. You can find a full list of changes in <a href="http://confluence.jetbrains.com/display/TW/Gaya+8.0+EAP+(build+27147)+Release+Notes">release notes</a>.</p>
<p>Happy building!</p>
<img src="http://feeds.feedburner.com/~r/teamcity/~4/Nyp4SUG_PiA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.jetbrains.com/teamcity/2013/04/24/teamcity-8-0-eap-build-27147/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://blogs.jetbrains.com/teamcity/2013/04/24/teamcity-8-0-eap-build-27147/</feedburner:origLink></item>
		<item>
		<title>Mercurial bookmarks</title>
		<link>http://feedproxy.google.com/~r/teamcity/~3/wymUawKGPnI/</link>
		<comments>http://blogs.jetbrains.com/teamcity/2013/04/18/mercurial-bookmarks/#comments</comments>
		<pubDate>Thu, 18 Apr 2013 07:51:11 +0000</pubDate>
		<dc:creator>Dmitry Neverov</dc:creator>
				<category><![CDATA[Tips&Tricks]]></category>

		<guid isPermaLink="false">http://blogs.jetbrains.com/teamcity/?p=2802</guid>
		<description><![CDATA[
First TeamCity 8.0 EAP brought a Mercurial bookmarks support. Let&#8217;s see how you can use them with TeamCity.
Mercurial bookmarks are lightweight branches like those you have in Git. While a regular Mercurial branch is a property of a commit and cannot be changed once commit is published, bookmarks can be changed in any way you [...]]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste">
<p><a title="First TeamCity 8.0 EAP" href="http://blogs.jetbrains.com/teamcity/2013/01/25/teamcity-8-0-code-name-gaya-eap-is-open/">First TeamCity 8.0 EAP</a> brought a Mercurial bookmarks support. Let&#8217;s see how you can use them with TeamCity.</p>
<p>Mercurial bookmarks are lightweight branches like those you have in Git. While a regular Mercurial branch is a property of a commit and cannot be changed once commit is published, bookmarks can be changed in any way you want: you can add bookmarks to existing commit, you can change the commit a bookmark points to, you can easily delete a bookmark and most importantly you can share them with others. If you are new to bookmarks <a href="http://mercurial.aragost.com/kick-start/en/bookmarks/">this tutorial</a> might be useful.</p>
<p>In TeamCity bookmarks can be used in branch and branch specification fields of VCS root settings just like regular branches.</p>
<p>I can see the following uses of bookmarks:</p>
<ul>
<li>feature branches with bookmarks</li>
<li>using bookmarks to narrow changes detected by TeamCity</li>
</ul>
<h3>Feature branches with bookmarks</h3>
<p>You can share you work with others (and with TeamCity) by pushing bookmarks to a Mercurial server. There is one caveat though. Since every commit still has a branch, this branch becomes multiheaded. It doesn&#8217;t make sence to track such a branch in TeamCity since its current revision is the latest pushed head and it constantly changes. It&#8217;s better to create a bookmark, e.g. <code>main</code>, which points to the tip of mainline of development, use it in the branch field and exclude the regular branch in which you create bookmarks from branch specification.</p>
<p><a href="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/04/s11.png"><img class="aligncenter size-full wp-image-2811" title="VCS root settings" src="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/04/s11.png" alt="" width="728" height="200" /></a></p>
<h3>Narrowing detected changes</h3>
<p>Let&#8217;s say you use regular Mercurial branches to share work with your peers and you have several dozens of branches. Let&#8217;s also say that you don&#8217;t work on a single branch until it is completely finished, but frequently switch between branches. You have <code>+:*</code> in your branch specification and TeamCity detected all of your branches.</p>
<p>The problem is: your complete build chain, which tests the product on different platforms under different environments, takes half a day to run and you don&#8217;t want to waste resources by running build on not yet finished work. On the other hand, you want to publish your work so other can use it. Bookmarks to rescue!  All you need is to modify your branch specification to something like <code>+:(*)@ci</code> and publish a bookmark with an appropriate name, such as <code>new.feature@ci</code>, that points to the branch tip once the branch is ready for the build. You can continue to share you work using regular branches and TeamCity will detect only changes you want it to detect.</p>
<p><a href="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/04/s22.png"><img src="http://blogs.jetbrains.com/teamcity/wp-content/uploads/2013/04/s22.png" alt="" title="VCS root settings" width="727" height="200" class="aligncenter size-full wp-image-2853" /></a></p>
<p>As you can see, bookmarks can help to implement some useful workflows. All you need to try them is Mercurial 2.4 installed on TeamCity server and of course your Mercurial server should support bookmarks. If you have any other interesting workflows &#8211; feel free to share them in the comments. Happy branching!</p>
</div>
<img src="http://feeds.feedburner.com/~r/teamcity/~4/wymUawKGPnI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.jetbrains.com/teamcity/2013/04/18/mercurial-bookmarks/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blogs.jetbrains.com/teamcity/2013/04/18/mercurial-bookmarks/</feedburner:origLink></item>
		<item>
		<title>TeamCity 7.1.5 is finally available</title>
		<link>http://feedproxy.google.com/~r/teamcity/~3/TXYIESe8eME/</link>
		<comments>http://blogs.jetbrains.com/teamcity/2013/04/17/teamcity-7-1-5-is-finally-available/#comments</comments>
		<pubDate>Wed, 17 Apr 2013 17:25:43 +0000</pubDate>
		<dc:creator>pavel.sher</dc:creator>
				<category><![CDATA[Tips&Tricks]]></category>

		<guid isPermaLink="false">http://blogs.jetbrains.com/teamcity/?p=2843</guid>
		<description><![CDATA[It took us more than 2 months to prepare one more bugfix release. Most of the team are busy working on TeamCity 8.0 but bugfixing is definitely never ending story   So here is one more bugfix release in 7.1.x branch: 7.1.5 build #24400. As usual there are a lot of bug fixes and [...]]]></description>
			<content:encoded><![CDATA[<p>It took us more than 2 months to prepare one more bugfix release. Most of the team are busy working on TeamCity 8.0 but bugfixing is definitely never ending story <img src='http://blogs.jetbrains.com/teamcity/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  So here is one more bugfix release in 7.1.x branch: 7.1.5 build #24400. As usual there are a lot of <a href="http://confluence.jetbrains.com/display/TW/TeamCity+7.1.5+%28build+24400%29+Release+Notes">bug fixes and several performance improvements</a>. If you&#8217;re using 7.1.x version we recommend to upgrade your server to 7.1.5.</p>
<p><a href="http://confluence.jetbrains.com/display/TW/TeamCity+7.1.5+%28build+24400%29+Release+Notes">Release notes</a><br />
<a href="http://www.jetbrains.com/teamcity/download/index.html">Download page</a></p>
<p>BTW, expect new 8.0 EAP build in a few days with some interesting features!</p>
<p>Happy building!</p>
<img src="http://feeds.feedburner.com/~r/teamcity/~4/TXYIESe8eME" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.jetbrains.com/teamcity/2013/04/17/teamcity-7-1-5-is-finally-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blogs.jetbrains.com/teamcity/2013/04/17/teamcity-7-1-5-is-finally-available/</feedburner:origLink></item>
	</channel>
</rss>
