<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	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/"
	>

<channel>
	<title>Sitecore Xperiences &#187; Team City</title>
	<atom:link href="https://blog.peplau.com.br/category/team-city/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.peplau.com.br</link>
	<description>The things I&#039;ve seen as a Sitecore Professional</description>
	<lastBuildDate>Sun, 09 Mar 2025 21:54:22 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.41</generator>
	<item>
		<title>Health Check builds with Continuous Integration - How big and how often these needs to be?</title>
		<link>https://blog.peplau.com.br/health-check-builds-with-continuous-integration-how-big-and-how-often-these-needs-to-be/</link>
		<comments>https://blog.peplau.com.br/health-check-builds-with-continuous-integration-how-big-and-how-often-these-needs-to-be/#comments</comments>
		<pubDate>Thu, 10 Nov 2016 14:24:51 +0000</pubDate>
		<dc:creator><![CDATA[Rodrigo Peplau]]></dc:creator>
				<category><![CDATA[Continuous Integration]]></category>
		<category><![CDATA[Health Check builds]]></category>
		<category><![CDATA[Team City]]></category>

		<guid isPermaLink="false">http://blog.peplau.com.br/?p=484</guid>
		<description><![CDATA[<div class="lr_horizontal_share" data-share-url="https://blog.peplau.com.br/health-check-builds-with-continuous-integration-how-big-and-how-often-these-needs-to-be/"></div>Background While refactoring the TFS and Continuous Integration struture of a couple projects, one thing toke my attention: Health Check builds were stealing most of the building times, which for me was representing long build queues to wait. The reason they were crowding the queue is because they were taking a long time to complete [&#8230;]]]></description>
				<content:encoded><![CDATA[<h2 dir="ltr">Background</h2>
<p dir="ltr">While refactoring the TFS and Continuous Integration struture of a couple projects, one thing toke my attention: Health Check builds were stealing most of the building times, which for me was representing long build queues to wait. The reason they were crowding the queue is because they were taking a long time to complete (about 10 to 15 minutes), and building too often (every 5 minutes when changes are pending).</p>
<h2 dir="ltr">Strength or kindness?</h2>
<p dir="ltr">Since our CI tool has only two build agents, the obvious answer is to increase this number to properly serve the whole company. But does this tells the whole story? More build agents means more resources (disk space, licenses, etc) and unfortunately we still live in a world of limited resources. This also means we rarely will have resources enough to properly serve everyone at peak times.</p>
<p dir="ltr">Take as comparison the limited space most cities have to make their roads. Most of the time traffic can be ok, but when everyone goes out at same time, like in rushy times, there are no room for all and we have car jams.</p>
<p dir="ltr">Fortunately it&#8217;s easier to interfere and positively affect our Continuous Integration systems, so why not try a thing or two as a sign of civility, just like we do in a Drive Thru not taking too much to order your fast food?</p>
<h2 dir="ltr">Health Check builds, how big?</h2>
<p dir="ltr">Depending on the Solution Architect who setup the project you can have different things, but most cases what I see is Health Checks doing everything but deployments. Since we use TDS in our projects, you can make it build a package of the whole deployment, along with some meta data. But is it really necessary? It&#8217;s a question I made myself, when decided to make it different.</p>
<p dir="ltr">My Health Check ended up being minimalist: just a compilation is executed, while TDS is kept totally off. No packages, nothing. Ended up with builds taking 45 to 90 secs to finish, much better!</p>
<h2 dir="ltr">Health Check builds: how often?</h2>
<p dir="ltr">Being tiny means it can build more often. In my case I have it building after changes are detected, with a 5 minutes latency to avoid subsequent check-ins to causing multiple builds in sequence.</p>
<h2 dir="ltr">Full builds and Health Checks working together</h2>
<p dir="ltr">No doubt the resulting Health Check builds are weaker, as it&#8217;s doing just a tiny part of the integration process. To fill the gaps, I also setup full builds working in conjunction with them. These are also set to run automatically when changes are pending, but with a much longer latency. Having it building each 4 or 8 hours will ensure a full integration is made once or twice in a normal day work.</p>
<p dir="ltr">Let&#8217;s also keep in mind these deploys can and must be manually triggered by developers, no matter the latency, as soon as they finish the user story they are working on, so they can test what they did at the integration servers before considering their work done.</p>
<p dir="ltr">
<p dir="ltr"><strong>In short:</strong> deployments will be made when developers finishes their work, or at minimum once or twice a day if pending changes are to be deployed.</p>
<h2 dir="ltr">Full builds with Asynchronous HTTP calls</h2>
<p dir="ltr">Another improvement I made was replacing at full builds some Synchronous HTTP calls by Asynchronous. They were mainly used to wake up instances after deployments and publishing from CM to CD. Most cases, The build agent doesn&#8217;t really need to wait for these calls to respond before going to the next step, so we can save it&#8217;s precious time to another teams.</p>
<h2 dir="ltr">Your impressions?</h2>
<p>What about your experiences, do you agree and disagree? What other factors are left behind at this analysis? Let me know your thoughts!</p>
<p dir="ltr">
]]></content:encoded>
			<wfw:commentRss>https://blog.peplau.com.br/health-check-builds-with-continuous-integration-how-big-and-how-often-these-needs-to-be/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sitecore 7.5 and MongoDB through different environments</title>
		<link>https://blog.peplau.com.br/sitecore-7-5-and-mongodb-through-different-environments/</link>
		<comments>https://blog.peplau.com.br/sitecore-7-5-and-mongodb-through-different-environments/#comments</comments>
		<pubDate>Mon, 09 Mar 2015 00:58:11 +0000</pubDate>
		<dc:creator><![CDATA[Rodrigo Peplau]]></dc:creator>
				<category><![CDATA[Continuous Integration]]></category>
		<category><![CDATA[Environments]]></category>
		<category><![CDATA[TDS]]></category>
		<category><![CDATA[Team City]]></category>

		<guid isPermaLink="false">http://blog.peplau.com.br/?p=127</guid>
		<description><![CDATA[<div class="lr_horizontal_share" data-share-url="https://blog.peplau.com.br/sitecore-7-5-and-mongodb-through-different-environments/"></div>Jan Löwgren, another Sitecore Consultant, in response to my post &#8220;Sitecore Environments for Dev, QA, UAT and Production&#8221; said It would be interesting to elaborate on how to handle MongoDB though different environments. In the project I am currently working the team was about to upgrade from Sitecore 7.2 to 7.5, so the opportunity to engage into a MongoDB [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Jan Löwgren, another Sitecore Consultant, in response to my post &#8220;<a href="http://blog.peplau.com.br/en_US/sitecore-environments-for-dev-qa-uat-and-production/">Sitecore Environments for Dev, QA, UAT and Production</a>&#8221; said It would be interesting to elaborate on how to handle MongoDB though different environments. In the project I am currently working the team was about to upgrade from Sitecore 7.2 to 7.5, so the opportunity to engage into a MongoDB experience was the excuse I wanted to volunteer myself to the upgrade task.</p>
<p><strong>Trusting your instincts</strong></p>
<p>My first thought before getting my hands on the issue was trying to handle mongo databases as we do with Sql server dbs: each Developer would need to install a MongoDB server at their machines.</p>
<p><strong>Setup before Sitecore 7.5</strong></p>
<p>For the context of the project, our environment&#8217;s setup was pretty similar to what is described in my first article:</p>
<ol>
<li>Developers and front-end devs works at their local machines, with local copies of solution and databases &#8211; everyone has their set of &#8220;master&#8221;, &#8220;core&#8221; and &#8220;web&#8221; databases. TDS is used to syncronize Sitecore data with the team;</li>
<li>We have an integration server Sitecore instance, periodically updated by TeamCity on every build change;</li>
<li>We also have a QA Sitecore instance, updated by the trigger of the QA team;</li>
<li>The last instance is the UAT server, also updated by TeamCity by the trigger of someone with this privilege (usually the Project Owner by request of the client);</li>
</ol>
<p><strong>Solution</strong></p>
<p>The final setup ended up being pretty similar to my first thought. It makes sense if you think that MongoDB is not much different than a normal Database Server. At Sitecore 7.5 MongoDB serves DMS Analytics and access data, so we can safely have separated databases for each Sitecore instance (Dev, CI, QA and UAT).</p>
<p><strong>MongoDB Installation</strong></p>
<p>Since every developer needs a separated MongoDB server, everyone needs to install at their own machines and access using their &#8220;localhost&#8221;. This very easy operation can be made by following the steps of this article (<a href="https://briancaos.wordpress.com/2014/10/01/sitecore-and-xdb-setting-up-mongodb-on-your-developer-machine/" target="_blank">Sitecore and xDB &#8211; Setting up MongoDB on your developer machine</a>).</p>
<blockquote><p><strong>Here is where the developer&#8217;s ConnectionStrings will end up:</strong></p>
<p>&lt;add name=&#8221;analytics&#8221; connectionString=&#8221;mongodb://localhost/dotz_analytics&#8221; /&gt;<br />
&lt;add name=&#8221;tracking.live&#8221; connectionString=&#8221;mongodb://localhost/dotz_tracking_live&#8221; /&gt;<br />
&lt;add name=&#8221;tracking.history&#8221; connectionString=&#8221;mongodb://localhost/dotz_tracking_history&#8221; /&gt;</p></blockquote>
<p><strong>MongoDB server initializing</strong></p>
<p>MongoDB is not a service you can install on Windows &#8211; you must run it manually &#8211; so it&#8217;s recommended to have a batch pinned up at your Windows start button before you launch your development instance.</p>
<div id="attachment_133" style="width: 143px" class="wp-caption alignnone"><img class="wp-image-133 size-medium" src="http://blog.peplau.com.br/wp-content/uploads/Start1-133x300.png" alt="" width="133" height="300" /><p class="wp-caption-text">Windows Start Menu with a link to the batch that starts MongoDB</p></div>
<p>Your batch can simply contain the following:</p>
<blockquote><p>&#8220;C:\Program Files\MongoDB\Server\3.0\bin\mongod.exe&#8221; &#8211;dbpath &#8220;D:\MongoDB&#8221;</p></blockquote>
<ul>
<li><strong>First path </strong>depends on where your MongoDB is installed</li>
<li><strong>Second path</strong> is where MongoDB creates the files to manage databases</li>
</ul>
<p><strong>What about the CI, QA and UAT servers?</strong></p>
<p>At the Continuous Integration servers the installation is pretty much the same, the only difference at our case is that we opted to have a centralized MongoDB server, with separated sets of databases for each Sitecore instance (CI, QA and UAT).</p>
]]></content:encoded>
			<wfw:commentRss>https://blog.peplau.com.br/sitecore-7-5-and-mongodb-through-different-environments/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sitecore Environments for Dev, QA, UAT and Production</title>
		<link>https://blog.peplau.com.br/sitecore-environments-for-dev-qa-uat-and-production/</link>
		<comments>https://blog.peplau.com.br/sitecore-environments-for-dev-qa-uat-and-production/#comments</comments>
		<pubDate>Mon, 02 Feb 2015 21:52:10 +0000</pubDate>
		<dc:creator><![CDATA[Rodrigo Peplau]]></dc:creator>
				<category><![CDATA[Continuous Integration]]></category>
		<category><![CDATA[Environments]]></category>
		<category><![CDATA[TDS]]></category>
		<category><![CDATA[Team City]]></category>
		<category><![CDATA[Team Development for Sitecore]]></category>

		<guid isPermaLink="false">http://blog.peplau.com.br/?p=43</guid>
		<description><![CDATA[<div class="lr_horizontal_share" data-share-url="https://blog.peplau.com.br/sitecore-environments-for-dev-qa-uat-and-production/"></div>Background Some time ago I found this Stack Overflow question discussing multiple aspects of serving a Sitecore solution during different phases of a project life cycle. The question was pretty old but still the only answer was not as good as I know it could be. Due of the relevance of this issue without a good response, I decided to write my [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><strong>Background</strong></p>
<p>Some time ago I found <a href="http://stackoverflow.com/questions/6697346/sitecore-environments/28047176" target="_blank">this Stack Overflow</a> question discussing multiple aspects of serving a Sitecore solution during different phases of a project life cycle. The question was pretty old but still the only answer was not as good as I know it could be. Due of the relevance of this issue without a good response, I decided to write my version of the answer.</p>
<p><strong>Premisses</strong></p>
<p>So the question from <em>Azeem Siddiqui</em> starts by putting some premisses:</p>
<blockquote><p>Our organization&#8217;s website is moving to Sitecore CMS but we are struggling with setting up the environments for Developers (4), Designers (4), QA persons (3), Authors (10-15) and Approvers (4-10) in a way where they can work independently, I know that there will be dependencies but idea is to minimize it.</p>
<p><strong>Here are couple of rules:</strong></p>
<p>1) Whoever is responsible for the change then they should do it everything until and unless there is any dependency.</p>
<p>2) If one team is working on one feature then it shouldn&#8217;t stop or effect other team&#8217;s work. For example, if QA is testing the feature then Derringers and Developers should continue their work on the same feature for new enhancements.</p>
</blockquote>
<p>Common questions for those experienced with another CMS platforms and seeking to know how Sitecore works in the real life.</p>
<p><strong>The Big Picture</strong></p>
<p>I started my reply with a diagram illustrating a way to setup servers for a Sitecore project, allowing the team to work together without interfering each other.</p>
<p><a href="http://blog.peplau.com.br/wp-content/uploads/bjc2P.png"><img class=" size-full wp-image-46 alignnone" src="http://blog.peplau.com.br/wp-content/uploads/bjc2P.png" alt="bjc2P" width="707" height="1008" /></a></p>
<p><strong>How people work together?</strong></p>
<blockquote><p>1) Where the Designers will work? I mean where they will add their html, js and images? On which server? In Sitecore? In Source Control (TFS)?</p>
<p>2) How the Designers and Developers should work together? I know developers will work on their local machine&#8217;s in Sitecore. And will promote their work to Integration server but How they will get the Designers stuff? Let suppose the feature has gone into production successfully now only Graphics Design changes are required, let say font styles and some images then where Designers should make these changes? On which Server? And after that how that Sitecore instance will sync with other Sitecore instances. And for design changes I do not want developers for promoting any code or file.</p>
</blockquote>
<p><strong>Answer:</strong> Both Devs and Designers works at their local machines, using local Sitecore instances. They use TFS as the Source Control system so they can mutually integrate their work. Usually Designers works more in CSS, Javascrips, Images, Sublayouts (markups) and Developers at the code itself. We have a Continuous Integration server in place (Ex: TeamCity) deploying changes to 3 different environments &#8211; CI Server (for build healthcheck), QA Server (For QA) and Prod Server (for content edition and public access). When, for instance, a designer has to fix a layout issue, he will do that at his local machine, then commit changes to TFS. Next step, TeamCity will deploy changes to the CI server, if the build is Ok the QA person can trigger a build and test the fixes. If everything is working as expected, someone can trigger the build to the production server, and the fix goes live.</p>
<p>You have this second diagram showing details on how you can setup your Production server to separate Content Authoring and Content Delivery &#8211; Here is a search I found several blog posts on setting this up: <a href="https://www.google.com.br/webhp?sourceid=chrome-instant&amp;ion=1&amp;espv=2&amp;ie=UTF-8#q=sitecore%20content%20authoring%20delivery" target="_blank" rel="nofollow">sitecore content authoring delivery</a></p>
<p><a href="http://blog.peplau.com.br/wp-content/uploads/MrmYI.png"><img class="alignnone wp-image-48 " src="http://blog.peplau.com.br/wp-content/uploads/MrmYI.png" alt="MrmYI" width="641" height="490" /></a></p>
<p><strong>How to deal with Database changes?</strong></p>
<blockquote><p>3) What is the safest way to sync the Sitecore environment/databases? Means whatever has been published into production website, we will need back in DEV, QA and UAT environments.</p>
<p>We do not want to do any manual promotion of code, html, js and image files. Is there any way to do these kind of things automatically via tool or Sitecore commands. Personally I do not like the Sitecore packages.</p>
</blockquote>
<p><strong>Answer:</strong> You need TDS (Team Development for Sitecore) as shown in the first diagram &#8211; Use this tool to serialize/deserialize items from one Sitecore instance to another. Then you can have the serialized files to TFS and share across the team and environments. The good thing is you can use TeamCity to automatically push items to CI/QA/Prod environments.</p>
<p><strong>Where to find good documentation?</strong></p>
<blockquote><p>4) Do you know any good reference? Where I can find answers of similar questions? Any website, book, blog?</p>
<p>I know one document &#8220;Understanding Sitecore Deployments 6.2&#8243; but designers part and how the different environments will be synchronized are not discussed over there.</p>
</blockquote>
<p><strong>Answer:</strong> The main source for info on Sitecore is their <a href="sdn.sitecore.net" target="_blank">SDN</a> &#8211; You can register free (or have an extended account if you own a sitecore license). Some other blogs were suggested, such as <a href="http://www.sitecore.net/learn/blogs/technical-blogs/john-west-sitecore-blog.aspx" target="_blank">John West&#8217;s</a> and <a href="http://sitecoreblog.alexshyba.com/" target="_blank">Alex Shyba&#8217;s</a>, as well as &#8211; why not &#8211; <a href="http://blog.peplau.com.br" target="_blank">this humble blog</a> I&#8217;m just starting.</p>
]]></content:encoded>
			<wfw:commentRss>https://blog.peplau.com.br/sitecore-environments-for-dev-qa-uat-and-production/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
