<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Continuous Integration on Marko Apfel</title><link>http://blog.marko-apfel.de/tags/continuous-integration/</link><description>Recent content in Continuous Integration on Marko Apfel</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Thu, 08 Dec 2011 16:46:00 +0100</lastBuildDate><atom:link href="http://blog.marko-apfel.de/tags/continuous-integration/index.xml" rel="self" type="application/rss+xml"/><item><title>Simian counts errors in Jenkins dashboard but shows in details “No violation found”</title><link>http://blog.marko-apfel.de/posts/simian-counts-errors-in-jenkins-dashboard-but-shows-in-details-no-violation-found/</link><pubDate>Thu, 08 Dec 2011 16:46:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/simian-counts-errors-in-jenkins-dashboard-but-shows-in-details-no-violation-found/</guid><description>&lt;h2 id="problem"&gt;Problem&lt;/h2&gt;
&lt;p&gt;Jenkins dashboard shows following simian analysis:&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
 &lt;img src="http://blog.marko-apfel.de/posts/simian-counts-errors-in-jenkins-dashboard-but-shows-in-details-no-violation-found/Simian.NoViolationFound.01.png" alt="Screenshot for Simian counts errors in Jenkins dashboard but shows in details “No violation found”" loading="lazy" decoding="async"&gt;&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;But after clicking one item I get:&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
 &lt;img src="http://blog.marko-apfel.de/posts/simian-counts-errors-in-jenkins-dashboard-but-shows-in-details-no-violation-found/Simian.NoViolationFound.02.png" alt="Screenshot for Simian counts errors in Jenkins dashboard but shows in details “No violation found”" loading="lazy" decoding="async"&gt;&lt;/figure&gt;&lt;/p&gt;</description></item><item><title>Installing of SDKs, Visual Studio and additional toolsets on build machines</title><link>http://blog.marko-apfel.de/posts/installing-of-sdks-visual-studio-and-additional-toolsets-on-build-machines/</link><pubDate>Mon, 05 Dec 2011 15:07:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/installing-of-sdks-visual-studio-and-additional-toolsets-on-build-machines/</guid><description>&lt;p&gt;Last week I get the information directly from Microsoft, that at build machines SDKs must be installed to guarantee that MSBuild works well in some circumstances.&lt;/p&gt;
&lt;p&gt;We have the problem, that a self-containing build should include all necessary build artifacts – particularly Silverlight stuff. I tried to encapsulate the special steps in own targets and a build was finally possible (see my former posts). But at local machines without installed Silverlight stuff it gives problems for problems. Because reason of time finally I decide to go the Microsoft way – they break my volition.&lt;/p&gt;</description></item><item><title>@Microsoft: please provide universal and professional concepts</title><link>http://blog.marko-apfel.de/posts/microsoft-please-provide-universal-and-professional-concepts/</link><pubDate>Sun, 20 Nov 2011 11:35:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/microsoft-please-provide-universal-and-professional-concepts/</guid><description>&lt;p&gt;Why such constructs are included in the &lt;code&gt;.csproj&lt;/code&gt;-Files?&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;CodeAnalysisRuleSetDirectories&amp;gt;&lt;/span&gt;;c:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets&lt;span class="nt"&gt;&amp;lt;/CodeAnalysisRuleSetDirectories&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;CodeAnalysisRuleDirectories&amp;gt;&lt;/span&gt;;c:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules&lt;span class="nt"&gt;&amp;lt;/CodeAnalysisRuleDirectories&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;So it every projects needs some manual steps to clean the project file so the solution could be build on a continuous integration server. That annoying!&lt;/p&gt;</description></item><item><title>Toolset agnostic build server and Silverlight projects</title><link>http://blog.marko-apfel.de/posts/toolset-agnostic-build-server-and-silverlight-projects/</link><pubDate>Thu, 10 Nov 2011 22:42:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/toolset-agnostic-build-server-and-silverlight-projects/</guid><description>&lt;h2 id="problem"&gt;Problem&lt;/h2&gt;
&lt;p&gt;Normally I try to have my continuous integration as most a possible toolset free to ensure that no local stuff could have an impact to my build.&lt;/p&gt;
&lt;p&gt;My Silverlight app references a special compile target in a folder outside my developer tree:&lt;/p&gt;</description></item><item><title>Setup license stuff for PostSharp 2.1</title><link>http://blog.marko-apfel.de/posts/setup-license-stuff-for-postsharp-2-1/</link><pubDate>Tue, 08 Nov 2011 20:03:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/setup-license-stuff-for-postsharp-2-1/</guid><description>&lt;h2 id="problem"&gt;Problem&lt;/h2&gt;
&lt;p&gt;Normally &lt;em&gt;PostSharp&lt;/em&gt; runs fine on unattended build servers. So on our global Jenkins continuous integration server &lt;em&gt;PostSharp&lt;/em&gt; does the job.&lt;/p&gt;
&lt;p&gt;But on my local TeamCity continuous integration server I got the following error:&lt;/p&gt;</description></item><item><title>MSB4067: The element &lt;ImportGroup&gt; beneath element &lt;Project&gt; is unrecognized.</title><link>http://blog.marko-apfel.de/posts/msb4067-the-element-importgroup-beneath-element-project-is-unrecognized/</link><pubDate>Tue, 08 Nov 2011 11:32:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/msb4067-the-element-importgroup-beneath-element-project-is-unrecognized/</guid><description>&lt;h2 id="problem"&gt;Problem&lt;/h2&gt;
&lt;p&gt;Our global Jenkins continuous integration server throws this error during compile step. My local TeamCity continuous integration server runs fine. What is the difference.&lt;/p&gt;
&lt;h2 id="background"&gt;Background&lt;/h2&gt;
&lt;p&gt;I integrate some static code analysis steps via MSBuild-targets in the csproj files.&lt;/p&gt;</description></item><item><title>Running StyleCop without an installation to empower continuous integration</title><link>http://blog.marko-apfel.de/posts/running-stylecop-without-an-installation-to-empower-continuous-integration/</link><pubDate>Mon, 07 Nov 2011 22:32:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/running-stylecop-without-an-installation-to-empower-continuous-integration/</guid><description>&lt;h2 id="problem"&gt;Problem&lt;/h2&gt;
&lt;p&gt;A continuous integration server should only have a minimal toolset installed. This ensures that no unwanted libraries could affect the build and other steps.&lt;/p&gt;
&lt;p&gt;Clearly that with this slogan also &lt;em&gt;StyleCop&lt;/em&gt; should not be installed to the CI server. But we wanna have this analysis as an part of the whole build.&lt;/p&gt;</description></item><item><title>NuGet-Package-Management mit ArcObjects</title><link>http://blog.marko-apfel.de/posts/nuget-package-management-mit-arcobjects/</link><pubDate>Fri, 22 Jul 2011 10:48:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/nuget-package-management-mit-arcobjects/</guid><description>&lt;h2 id="motivation"&gt;Motivation&lt;/h2&gt;
&lt;p&gt;Wie gehen Sie in dieser Situation vor:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Eine von Ihnen verwendete .NET-Drittbibliothek liegt in einer neuen Version vor und Sie müssen die Abhängigkeiten in all Ihren Projekte aktualisieren.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Je nach Projekt und Notwendigkeit hatten wir bei ESRI Deutschland dafür bisher u.a. folgende Lösungs-Szenarien:&lt;/p&gt;</description></item><item><title>Using NuGet in a MSBuild-target to have the packages at the last stand</title><link>http://blog.marko-apfel.de/posts/using-nuget-in-a-msbuild-target-to-have-the-packages-at-the-last-stand/</link><pubDate>Wed, 06 Jul 2011 18:15:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/using-nuget-in-a-msbuild-target-to-have-the-packages-at-the-last-stand/</guid><description>&lt;h2 id="motivation"&gt;Motivation&lt;/h2&gt;
&lt;p&gt;Encouraged from the article “&lt;a href="http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages"&gt;Using NuGet without committing packages to source control&lt;/a&gt;” I decided to wrap the NuGet-call in a MSBuild target instead of using a pre-build event.&lt;/p&gt;
&lt;p&gt;Because we also trigger FxCop and StyleCop via targets this fits better in our project management.&lt;/p&gt;</description></item><item><title>Whitepaper “Aufbau eines pragmatisch smarten DevTree“</title><link>http://blog.marko-apfel.de/posts/whitepaper-aufbau-eines-pragmatisch-smarten-devtree/</link><pubDate>Wed, 15 Jun 2011 11:46:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/whitepaper-aufbau-eines-pragmatisch-smarten-devtree/</guid><description>&lt;h2 id="motivation"&gt;Motivation&lt;/h2&gt;
&lt;p&gt;Kommen Ihnen diese Szenarien bekannt vor:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;der Build scheitert, weil ein Kollege ein 3rd Party Framework eingeführt hat und nur lokal auf seiner Maschine die benötigten Bibliotheken installiert sind&lt;/li&gt;
&lt;li&gt;der Build scheitert weil ein 3rd Party Framework auf einigen Maschinen in anderen Versionen vorhanden ist und sich damit die Datei-Versionen und -Funktionalitäten der Bibliotheken unterscheiden&lt;/li&gt;
&lt;li&gt;das Build-Ergebnis unterscheidet sich auf verschiedenen Maschinen weil jeweils andere Toolsets in die kompilierende Umgebung eingebunden sind (Code-Weaver und -Analysierer, die als Plugin in Visual Studio installiert sind)&lt;/li&gt;
&lt;li&gt;die benötigten Fragmente für ein aktuell benötigtes MSI-Setup (z.B. PDF-Dokumentationen) liegen in der Verantwortlichkeit eines Kollegen, der diese Dateien auf seinem Laptop hat, mit welchem er gerade unterwegs ist&lt;/li&gt;
&lt;li&gt;nach der Inbetriebnahme einer neuen Maschine sind stundenlange Installationsopern notwendig um wieder am Projekt mitarbeiten zu können&lt;/li&gt;
&lt;li&gt;die ausgerollte Software läuft beim Kunden nicht, weil Bibliotheken in der Applikation referenziert wurde, welche nicht im Standard-Installationsumfang beim Kunden sind&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="root-cause-analysis"&gt;Root Cause Analysis&lt;/h2&gt;
&lt;p&gt;Was ist der Grund all dieser und verwandter Probleme?&lt;/p&gt;</description></item><item><title>Calling esriRegasm manually (outside an ArcGIS-installation)</title><link>http://blog.marko-apfel.de/posts/calling-esriregasm-manually-outside-an-arcgis-installation/</link><pubDate>Tue, 26 Apr 2011 20:53:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/calling-esriregasm-manually-outside-an-arcgis-installation/</guid><description>&lt;p&gt;Since &lt;em&gt;ArcGIS 10&lt;/em&gt; during the &lt;em&gt;Visual Studio&lt;/em&gt; build an additional target with the execution of a program named &lt;code&gt;esriRegasm&lt;/code&gt; is called. Amongst other things this program adds the COM-categories in the registry.&lt;/p&gt;</description></item><item><title>Integrate NUnit in Hudson CI-server</title><link>http://blog.marko-apfel.de/posts/integrate-nunit-in-hudson-ci-server/</link><pubDate>Wed, 07 Jul 2010 15:41:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/integrate-nunit-in-hudson-ci-server/</guid><description>&lt;h2 id="precondition"&gt;Precondition&lt;/h2&gt;
&lt;h3 id="naming"&gt;Naming&lt;/h3&gt;
&lt;p&gt;Its a good practice to have a common naming schema for test projects, fixture categories and fixture. Especially to configure automatic runs of unit tests is much more easier with this.&lt;/p&gt;</description></item><item><title>Integrate Simian in Hudson CI-server</title><link>http://blog.marko-apfel.de/posts/integrate-simian-in-hudson-ci-server/</link><pubDate>Wed, 07 Jul 2010 00:04:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/integrate-simian-in-hudson-ci-server/</guid><description>&lt;h2 id="steps-to-integrate-simian"&gt;Steps to integrate simian&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;add simian to VCS&lt;br&gt;
(in our case folder &lt;code&gt;./trunk/build/simian&lt;/code&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;add build step to your Hudson job&lt;br&gt;
(Execute Windows batch command)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;use following two commands&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bat" data-lang="bat"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;.\trunk\build\Simian\bin\simian-2.2.24.exe
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -formatter=xml:.\trunk\bin\Simian.Result.xml
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -excludes=**/*.Test/**/*.cs
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -excludes=**/*.DbFrame/**/*.cs
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -excludes=**/*.DbLayout/**/*.cs
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -excludes=**/*.Designer.cs
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -excludes=**/XServer1\_8.cs
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -threshold=10
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; **/*.cs
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;EXIT&lt;/span&gt; 0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="explanation"&gt;Explanation&lt;/h2&gt;
&lt;p&gt;For better visibility and understanding I have split the first call (simian) over several lines. Needless to say that you must contract all parameters and arguments of the simian call in one line.&lt;/p&gt;</description></item><item><title>Hudson error: could not delete ..config.xml</title><link>http://blog.marko-apfel.de/posts/hudson-error-could-not-delete-config-xml/</link><pubDate>Tue, 06 Jul 2010 16:44:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/hudson-error-could-not-delete-config-xml/</guid><description>&lt;p&gt;Today we updated our &lt;em&gt;Hudson&lt;/em&gt; CI-server. After changing job-configuration &lt;em&gt;Hudson&lt;/em&gt; throws an error, that the &lt;code&gt;config.xml&lt;/code&gt; could not be deleted.&lt;/p&gt;
&lt;p&gt;But the new entries are correct saved.&lt;/p&gt;
&lt;p&gt;Nevertheless such behavior bothers.&lt;/p&gt;
&lt;p&gt;The trick was to update also the plugins. After that all works fine again.&lt;/p&gt;</description></item></channel></rss>