<?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>MDA, MDSD, MDE, MDWhatever! &#187; Intégration continue</title>
	<atom:link href="http://mdwhatever.free.fr/index.php/tag/integration-continue/feed/" rel="self" type="application/rss+xml" />
	<link>http://mdwhatever.free.fr</link>
	<description>About model driven engineering</description>
	<lastBuildDate>Mon, 12 Mar 2012 19:56:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Créer son plugin pour le serveur d&#8217;intégration continue TeamCity</title>
		<link>http://mdwhatever.free.fr/index.php/2010/01/creer-son-plugin-pour-le-serveur-dintegration-continue-teamcity/</link>
		<comments>http://mdwhatever.free.fr/index.php/2010/01/creer-son-plugin-pour-le-serveur-dintegration-continue-teamcity/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 11:55:46 +0000</pubDate>
		<dc:creator>xavier</dc:creator>
				<category><![CDATA[Intégration continue]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[teamCity]]></category>

		<guid isPermaLink="false">http://mdwhatever.free.fr/?p=3</guid>
		<description><![CDATA[Voici un exemple bête et méchant de plugin vous permettant d&#8217;utiliser le pattern {date} dans votre numéro de build. Rien de bien révolutionnaire, mais c&#8217;est un bon point de départ pour apprendre à créer un plugin pour TeamCity. Voici le fichier DateBuildNumber.java package com.sncf.gl.apps.teamcity.plugins.datebuilnnumber; import java.text.SimpleDateFormat; import java.util.Date; import jetbrains.buildServer.serverSide.BuildServerAdapter; import jetbrains.buildServer.serverSide.SBuildServer; import jetbrains.buildServer.serverSide.SRunningBuild; import]]></description>
			<content:encoded><![CDATA[<p>Voici un exemple bête et méchant de plugin vous permettant d&#8217;utiliser le pattern <strong>{date} </strong>dans votre numéro de build.</p>
<p>Rien de bien révolutionnaire, mais c&#8217;est un bon point de départ pour apprendre à créer un plugin pour TeamCity. <span id="more-3"></span>Voici le fichier DateBuildNumber.java</p>
<pre lang="java">
package com.sncf.gl.apps.teamcity.plugins.datebuilnnumber;

import java.text.SimpleDateFormat;
import java.util.Date;

import jetbrains.buildServer.serverSide.BuildServerAdapter;
import jetbrains.buildServer.serverSide.SBuildServer;
import jetbrains.buildServer.serverSide.SRunningBuild;

import com.intellij.openapi.diagnostic.Logger;

public class DateBuildNumber extends BuildServerAdapter
{
   private final static Logger LOG = Logger.getInstance(DateBuildNumber.class.getName());

   private static final String DATE = "{date}"; 

   // Constructor
   public DateBuildNumber(SBuildServer aBuildServer)
   {
       System.out.println( "### DateBuildNumber adding listener=" + this );
       LOG.info("### DateBuildNumber adding listener=" + this);

       // Register with TC
       aBuildServer.addListener(this);
   }

   public void buildStarted(SRunningBuild build)
   {
       String buildNumber = build.getBuildNumber();

       // Logging in "teamcity_install_dir\logs\stdout_XXXX.log"
       System.out.println("### DateBuildNumber plugin : buildStarted");
       LOG.info("### DateBuildNumber plugin : buildStarted");

       // If the build number contains the DATE = "{date}"
       // pattern we replace it by the current date.
       if(buildNumber.lastIndexOf(DATE) > -1)
       {
           build.setBuildNumber(buildNumber.replace(DATE, createBuildNumber()));
       }
       else
       {
           System.out.println("### DateBuildNumber plugin, no {date} pattern found");
           LOG.info("### DateBuildNumber plugin, no {date} pattern found");
       }
   }

   public String createBuildNumber()
   {
       Date currentBuild = new Date();
       // Here you can modify the date format
       // Please refer to the javaDoc :
       // http://java.sun.com/j2se/1.5.0/docs/api/java/text/SimpleDateFormat.html
       SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yy-HH'h'mm");
       return sdf.format(currentBuild);
   }
}
</pre>
<p>Et voici le fichier build-server-plugin.xml :</p>
<pre lang="xml" escaped="true">
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="constructor">
  <bean id="date" class="com.sncf.gl.apps.teamcity.plugins.datebuilnnumber.DateBuildNumber"/>
</beans>
</pre>
<p>Enfin voici une version packagée de ce plugin (pour TeamCity 4.xx) :  <a  href="http://www.jetbrains.net/confluence/download/attachments/9536304/datePlugin.jar?version=1">datePlugin.jar</a></p>
<p>Pour aller plus loin : <a title="http://www.jetbrains.net/confluence/display/TCD5/Developing+TeamCity+Plugins" href="http://www.jetbrains.net/confluence/display/TCD5/Developing+TeamCity+Plugins">Developing TeamCity plugins</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mdwhatever.free.fr/index.php/2010/01/creer-son-plugin-pour-le-serveur-dintegration-continue-teamcity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
