<?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>Soluciones Open Source</title>
	
	<link>http://oss.ahijado.org</link>
	<description />
	<lastBuildDate>Thu, 12 Aug 2010 07:18:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/iCesofT/oss" /><feedburner:info uri="icesoft/oss" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Apache Continuum</title>
		<link>http://feedproxy.google.com/~r/iCesofT/oss/~3/o2zFo56jeag/</link>
		<comments>http://oss.ahijado.org/2010/apache-continuum/#comments</comments>
		<pubDate>Thu, 12 Aug 2010 07:18:06 +0000</pubDate>
		<dc:creator>iCesofT</dc:creator>
				<category><![CDATA[Control de versiones]]></category>
		<category><![CDATA[Integración Continua]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[ci]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[scm]]></category>

		<guid isPermaLink="false">http://oss.ahijado.org/?p=93</guid>
		<description><![CDATA[Esta vez vamos a ver la instalación y configuración de Apache Continuum, servidor de integración continua. La Integración Continua es una metodología propuesta inicialmente por Martin Fowler consistente en la realización de continuas integraciones automáticas de un proyecto, de forma que sea posible detectar fallos tan rápido como sea posible. Con Apache Continuum tendremos un [...]]]></description>
			<content:encoded><![CDATA[<p>Esta vez vamos a ver la instalación y configuración de <a class="vt-p" title="Apache Continuum" href="http://continuum.apache.org/">Apache Continuum</a>, servidor de integración continua.</p>
<p>La <a class="vt-p" title="Wikipedia: Integración Continua" href="http://es.wikipedia.org/wiki/Integración_continua">Integración Continua</a> es una metodología propuesta inicialmente por <a class="vt-p" title="Continuous Integration by Martin Fowler" href="http://martinfowler.com/articles/continuousIntegration.html">Martin Fowler</a> consistente en la realización de continuas integraciones automáticas de un proyecto, de forma que sea posible detectar fallos tan rápido como sea posible.</p>
<p>Con Apache Continuum tendremos un sitio centralizado para la construcción de nuestros proyectos, así como para la gestión de las releases que vayamos generando.</p>
<p>Asimismo, seguiremos ampliando la infraestructura que hemos ido creando con Apache Archiva y Sonar.</p>
<p><span id="more-93"></span></p>
<h1>Instalación</h1>
<p>En primer lugar debemos descargarnos el paquete que queremos instalar. Para ello, vamos a la página de <a class="vt-p" title="Download Apache Continuum" href="http://continuum.apache.org/download.html">descargas</a> y nos descargamos el archivo &#8220;apache-continuum-1.3.6.war&#8221;.</p>
<p>Creamos los directorios necesarios para Continuum dentro de Tomcat6 y copiamos el archivo .war:</p>
<pre class="brush: bash; title: ; notranslate">
icesoft&gt; sudo su -
root&gt; mkdir /var/lib/tomcat6/continuum
root&gt; cd /var/lib/tomcat6/continuum
root&gt; cp ~icesoft/Descargas/apache-continuum-1.3.6.war  .
root&gt; mkdir -p data/{work,build,release,deploy}
root&gt; mkdir repository
root&gt; chown tomcat6:tomcat6 -R data repository
root&gt; cd ~tomcat6/.m2
root&gt; ln -s /var/lib/tomcat6/continuum/repository
root&gt; chown tomcat6:tomcat6 -R repository
</pre>
<p>Con esto, hemos creado los directorios de trabajo para Continuum en el directorio base (/var/lib/tomcat6/continuum), hemos creado un directorio donde Continuum almacenará el repositorio Maven que utilizará durante las compilaciones y, por último, hemos enlazado a dicho directorio desde el directorio base de Maven para el usuario tomcat6 (directorio ~tomcat6/.m2).</p>
<h1>Configuración</h1>
<p>La configuración es prácticamente idéntica a la de Apache Archiva, por lo que seguiremos los mismos pasos.</p>
<h2>Configuración de la base de datos</h2>
<p>Creamos una base de datos en MySQL llamada &#8220;continuum&#8221; y creamos un usuario con privilegios sobre la misma:</p>
<pre class="brush: bash; title: ; notranslate">
mysql&gt; create database continuum;
mysql&gt; grant all privileges on continuum.* to continuum identified by 'continuump4ss';
mysql&gt; flush privileges;
</pre>
<h2>Configuración de Tomcat6</h2>
<p>Debemos disponer un archivo de contexto para Continuum dentro de Tomcat6, para lo cual, creamos el archivo &#8220;/var/lib/tomcat6/conf/Catalina/localhost/continuum.xml&#8221; con el siguiente contenido:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;Context path=&quot;/continuum&quot;
    docBase=&quot;${catalina.base}/continuum/apache-continuum-1.3.6.war&quot;&gt;

&lt;Resource name=&quot;jdbc/users&quot; auth=&quot;Container&quot; type=&quot;javax.sql.DataSource&quot;
    username=&quot;continuum&quot;
    password=&quot;continuump4ss&quot;
    driverClassName=&quot;com.mysql.jdbc.Driver&quot;
    url=&quot;jdbc:mysql://localhost:3306/continuum?autoReconnect=true&quot; /&gt;

&lt;Resource name=&quot;jdbc/continuum&quot; auth=&quot;Container&quot; type=&quot;javax.sql.DataSource&quot;
    username=&quot;continuum&quot;
    password=&quot;continuump4ss&quot;
    driverClassName=&quot;com.mysql.jdbc.Driver&quot;
    url=&quot;jdbc:mysql://localhost:3306/continuum?autoReconnect=true&quot; /&gt;

&lt;Resource name=&quot;mail/Session&quot; auth=&quot;Container&quot;
    type=&quot;javax.mail.Session&quot;
    mail.smtp.host=&quot;localhost&quot;/&gt;

&lt;/Context&gt;
</pre>
<p>Además, aprovechamos que, en la instalación de Archiva, habíamos incluido las propiedades appserver.home y appserver.base en el archivo catalina.properties de Tomcat6.</p>
<p>Con esto, ya podríamos reiniciar Tomcat, aunque antes, debemos crear un archivo de configuración de Continuum en el directorio de configuración de Tomcat6 y poner al usuario tomcat6 como su propietario:</p>
<pre class="brush: bash; title: ; notranslate">
root&gt; cd /var/lib/tomcat6/conf
root&gt; cat &lt;&lt;- _EOF_ &gt; continuum.conf
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;continuum-configuration /&gt;
_EOF_
root&gt; chown tomcat6:tomcat6 continuum.conf
</pre>
<p>De esta forma, cuando salvemos la configuración de Continuum desde la web, ésta se almacenará en este archivo. También podríamos establecer directamente la configuración que queremos según los directorios que hemos creado previamente, dejando el archivo de este modo:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;continuum-configuration&gt;
  &lt;baseUrl&gt;http://localhost:8080/continuum&lt;/baseUrl&gt;
  &lt;buildOutputDirectory&gt;/var/lib/tomcat6/continuum/build&lt;/buildOutputDirectory&gt;
  &lt;deploymentRepositoryDirectory&gt;/var/lib/tomcat6/continuum/deploy&lt;/deploymentRepositoryDirectory&gt;
  &lt;workingDirectory&gt;/var/lib/tomcat6/continuum/work&lt;/workingDirectory&gt;
  &lt;releaseOutputDirectory&gt;/var/lib/tomcat6/continuum/release&lt;/releaseOutputDirectory&gt;
&lt;/continuum-configuration&gt;
</pre>
<h2>Reinicio de Tomcat6</h2>
<p>Una vez hecha la configuración, reiniciamos Tomcat6:</p>
<pre class="brush: bash; title: ; notranslate">
sudo /etc/init.d/tomcat6 restart
</pre>
<p>Y accedemos a la página principal de Continuum (http://hostname:puerto/continuum). En nuestro caso, http://localhost:8080/continuum.</p>
<p>Al acceder a esta página, al igual que nos pasó con Archiva, se generan las tablas en base de datos y se nos pide la creación de un usuario administrador:</p>
<div id="attachment_100" class="wp-caption aligncenter" style="width: 310px"><a class="vt-p" href="http://oss.ahijado.org/files/2010/08/continuum-create_admin_user.png"><img class="size-medium wp-image-100" title="Apache Continuum - Create Admin User" src="http://oss.ahijado.org/files/2010/08/continuum-create_admin_user-300x159.png" alt="" width="300" height="159" /></a><p class="wp-caption-text">Apache Continuum - Create Admin User</p></div>
<p>Una vez creado el usuario, nos aparecerá la página de configuración:</p>
<div id="attachment_101" class="wp-caption aligncenter" style="width: 310px"><a class="vt-p" href="http://oss.ahijado.org/files/2010/08/continuum-general_configuration.png"><img class="size-medium wp-image-101" title="Apache Continuum - General Configuration" src="http://oss.ahijado.org/files/2010/08/continuum-general_configuration-300x262.png" alt="" width="300" height="262" /></a><p class="wp-caption-text">Apache Continuum - General Configuration</p></div>
<p>Llegados a este punto, ya podemos iniciar nuestro camino con la integración continua y desplegar nuestros proyectos Maven2 con Continuum, aunque primero es necesario añadir nuestras &#8220;instalaciones&#8221;.</p>
<h1>Creación de Instalaciones</h1>
<p>Una vez logados, pulsamos sobre &#8220;Installations&#8221;; a continuación, sobre el botón &#8220;Add&#8221; y estando seleccionado &#8220;Tool&#8221; como Installation Type, pulsamos de nuevo sobre el botón &#8220;Add&#8221;.</p>
<div id="attachment_104" class="wp-caption aligncenter" style="width: 310px"><a href="http://oss.ahijado.org/files/2010/08/continuum-installation.png"><img class="size-medium wp-image-104" title="Apache Continuum - Installation" src="http://oss.ahijado.org/files/2010/08/continuum-installation-300x233.png" alt="" width="300" height="233" /></a><p class="wp-caption-text">Apache Continuum - Installation</p></div>
<p>Debemos asegurarnos de seleccionar el check de &#8220;Create a Build Environment with the Installation name&#8221;. De este modo, tendremos un entorno de construcción basado en esta instalación.</p>
<p>Además de las versiones de Java disponibles, debemos indicar dónde tenemos Maven2 y Ant instalados. Lo más sencillo, es descargarnos el .tar.gz de las páginas de descarga de cada uno de ellos y descomprimirlo en un directorio, por ejemplo, /opt.</p>
<p>Habiendo instalado Maven2 y Ant, dejaríamos las instalaciones de este modo:</p>
<div id="attachment_105" class="wp-caption aligncenter" style="width: 310px"><a href="http://oss.ahijado.org/files/2010/08/continuum-installations.png"><img class="size-medium wp-image-105" title="Apache Continuum - Installations" src="http://oss.ahijado.org/files/2010/08/continuum-installations-300x233.png" alt="" width="300" height="233" /></a><p class="wp-caption-text">Apache Continuum - Installations</p></div>
<p>Y pulsando sobre el enlace &#8220;Build Environments&#8221;, vemos cómo han quedado nuestros entornos de construcción:</p>
<div id="attachment_106" class="wp-caption aligncenter" style="width: 310px"><a href="http://oss.ahijado.org/files/2010/08/continuum-build_environments.png"><img class="size-medium wp-image-106" title="Apache Continuum - Build Environments" src="http://oss.ahijado.org/files/2010/08/continuum-build_environments-300x233.png" alt="" width="300" height="233" /></a><p class="wp-caption-text">Apache Continuum - Build Environments</p></div>
<p>En el siguiente post, veremos cómo utilizar Apache Continuum en nuestros proyectos.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/G2JWtDG8Vt2UzkjZuHMo-dALHMM/0/da"><img src="http://feedads.g.doubleclick.net/~a/G2JWtDG8Vt2UzkjZuHMo-dALHMM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/G2JWtDG8Vt2UzkjZuHMo-dALHMM/1/da"><img src="http://feedads.g.doubleclick.net/~a/G2JWtDG8Vt2UzkjZuHMo-dALHMM/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/iCesofT/oss/~4/o2zFo56jeag" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://oss.ahijado.org/2010/apache-continuum/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://oss.ahijado.org/2010/apache-continuum/</feedburner:origLink></item>
		<item>
		<title>Instalación de Sonar</title>
		<link>http://feedproxy.google.com/~r/iCesofT/oss/~3/5_SfsctkciM/</link>
		<comments>http://oss.ahijado.org/2010/instalacion-de-sonar/#comments</comments>
		<pubDate>Sat, 31 Jul 2010 15:39:17 +0000</pubDate>
		<dc:creator>iCesofT</dc:creator>
				<category><![CDATA[Calidad de software]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[sonar]]></category>

		<guid isPermaLink="false">http://oss.ahijado.org/?p=72</guid>
		<description><![CDATA[Continuando con la instalación de herramientas que nos ayuden a mejorar la productividad y calidad en nuestros desarrollos, esta vez toca Sonar. Sonar es una herramienta open source que nos permite comprobar la calidad de nuestro código. Como en su propia página indican, cubre 7 ejes principales: Además, cuenta con múltiples plugins. Instalación Sonar, al [...]]]></description>
			<content:encoded><![CDATA[<p>Continuando con la instalación de herramientas que nos ayuden a mejorar la productividad y calidad en nuestros desarrollos, esta vez toca <a class="vt-p" title="Sonar" href="http://www.sonarsource.org/">Sonar</a>.</p>
<p>Sonar es una herramienta open source que nos permite comprobar la calidad de nuestro código. Como en su propia página indican, cubre 7 ejes principales:</p>
<div class="wp-caption aligncenter" style="width: 330px"><img title="7 ejes" src="http://www.sonarsource.org/wp-content/themes/sonar/images/7axes.png" alt="" width="320" height="151" /><p class="wp-caption-text">7 ejes</p></div>
<p>Además, cuenta con múltiples <a class="vt-p" title="Sonar Plugin Library" href="http://docs.codehaus.org/display/SONAR/Sonar+Plugin+Library/">plugins</a>.</p>
<p><span id="more-72"></span></p>
<h1>Instalación</h1>
<p>Sonar, al igual que Apache Archiva y Apache Continuum (ya lo veremos más adelante), puede utilizarse independientemente así como incluido en un contenedor de aplicaciones. Asimismo, puede utilizar una base de datos Derby u otra según le indiquemos.</p>
<p>Nuestra instalación la realizaremos sobre un contenedor de aplicaciones y utilizando MySQL como gestor de base de datos.</p>
<h2>Creación de la base de datos</h2>
<p>El siguiente paso es la creación de la base de datos en MySQL:</p>
<pre class="brush: bash; title: ; notranslate">
mysql -u root -p
mysql&gt; create database sonar;
mysql&gt; grant all privileges on sonar.* to sonar identified by 'sonarp4ss';
mysql&gt; exit;
</pre>
<h2>Descarga y descompresión del software</h2>
<p>Nos bajaremos el software a partir de esta <a class="vt-p" title="Sonar Downloads" href="http://sonar.codehaus.org/downloads/">dirección</a>. En nuestro caso, hemos descargado el archivo <a class="vt-p" title="Sonar v2.2" href="http://dist.sonar.codehaus.org/sonar-2.2.zip">sonar-2.2.zip</a>.</p>
<p>A continuación descomprimiremos el software. Hay que tener en cuenta que Sonar almacena la ruta física a partir de la cual hemos generado el archivo war, por lo que esta ruta no se debe eliminar posteriormente (Sonar la utilizará para obtener los plugins que utilizaremos,&#8230;).</p>
<pre class="brush: bash; title: ; notranslate">
cd /srv
sudo mkdir -p webapps/wars
cd webapps
sudo unzip ~icesoft/Descargas/sonar-2.2.zip
sudo mv sonar-2.2 sonar
</pre>
<h2>Generación del archivo .war</h2>
<p>Es necesario, en este punto, modificar la configuración de Sonar antes de generar el archivo war. Para ello, editamos el archivo conf/sonar.properties y comentamos las líneas de configuración de base de datos Derby y descomentamos las de MySQL:</p>
<pre class="brush: plain; title: ; notranslate">
#sonar.jdbc.url:             jdbc:derby://localhost:1527/sonar;create=true
#sonar.jdbc.driverClassName: org.apache.derby.jdbc.ClientDriver
#sonar.jdbc.validationQuery: values(1)

sonar.jdbc.url:              jdbc:mysql://localhost:3306/sonar?useUnicode=true&amp;characterEncoding=utf8
sonar.jdbc.driverClassName:  com.mysql.jdbc.Driver
sonar.jdbc.validationQuery:  select 1
</pre>
<p>También es necesario modificar la configuración del nombre de usuario y contraseña de acceso:</p>
<pre class="brush: plain; title: ; notranslate">
sonar.jdbc.username:         sonar
sonar.jdbc.password:         sonarp4ss
</pre>
<p>Por último, aunque no necesario, descomentamos la línea de JDBC datasource, por si quisiéramos configurar los parámetros de conexión de base de datos mediante JNDI:</p>
<pre class="brush: plain; title: ; notranslate">
sonar.jdbc.jndiName:         jdbc/sonar
</pre>
<p>Ahora, debemos generar el archivo war a desplegar en Tomcat:</p>
<pre class="brush: bash; title: ; notranslate">
cd /srv/webapps/sonar/war
sudo ./build-war.sh
sudo cp sonar.war /srv/webapps/wars/sonar-2.2.war
cd /srv
chown -R tomcat6:tomcat6 webapps
</pre>
<h2>Configuración en Tomcat6</h2>
<p>Únicamente queda disponer el archivo de la aplicación para que Tomcat arranque Sonar, por lo que debemos disponer el siguiente archivo &#8220;sonar.xml&#8221; en el directorio /var/lib/tomcat6/conf/Catalina/localhost:</p>
<pre class="brush: xml; title: ; notranslate">
﻿&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;Context path=&quot;/sonar&quot; docBase=&quot;${catalina.base}/wars/sonar-2.2.war&quot;&gt;

&lt;Resource name=&quot;jdbc/sonar&quot; auth=&quot;Container&quot; type=&quot;javax.sql.DataSource&quot;
    username=&quot;sonar&quot;
    password=&quot;sonarp4ss&quot;
    driverClassName=&quot;com.mysql.jdbc.Driver&quot;
    url=&quot;jdbc:mysql://localhost:3306/sonar?autoReconnect=true;useUnicode=true;characterEncoding=utf8&quot; /&gt;

&lt;/Context&gt;
</pre>
<h2>Instalación de plugins</h2>
<p>Como comentaba al principio, podemos instalar diversos plugins a Sonar. Para ello, dispondremos el archivo .jar correspondiente en el directorio &#8220;/srv/webapps/sonar/extensions/plugins&#8221;, rearrancaremos Tomcat y ya estarían disponibles.</p>
<h2>Acceso a Sonar</h2>
<p>Con estos pasos, ya podríamos acceder a la web de Sonar (http://hostname:8080/sonar), visualizando lo siguiente:</p>
<div id="attachment_82" class="wp-caption aligncenter" style="width: 310px"><a class="vt-p" href="http://oss.ahijado.org/files/2010/07/sonar.png"><img class="size-medium wp-image-82" title="Sonar" src="http://oss.ahijado.org/files/2010/07/sonar-300x159.png" alt="" width="300" height="159" /></a><p class="wp-caption-text">Sonar</p></div>
<h1>Configuración de Maven</h1>
<p>Por último, sólo nos queda configurar Maven para que apunte a la base de datos de Sonar cuando se ejecute el plugin de Maven de Sonar. Tendremos que añadir el siguiente profile a nuestro archivo ~/.m2/settings.xml:</p>
<pre class="brush: xml; title: ; notranslate">
        &lt;profile&gt;
            &lt;id&gt;sonar&lt;/id&gt;
            &lt;activation&gt;
                &lt;activeByDefault&gt;true&lt;/activeByDefault&gt;
            &lt;/activation&gt;
            &lt;properties&gt;
                &lt;sonar.jdbc.url&gt;
                  jdbc:mysql://localhost:3306/sonar?useUnicode=true&amp;amp;characterEncoding=utf8
                &lt;/sonar.jdbc.url&gt;
                &lt;sonar.jdbc.driver&gt;com.mysql.jdbc.Driver&lt;/sonar.jdbc.driver&gt;
                &lt;sonar.jdbc.username&gt;sonar&lt;/sonar.jdbc.username&gt;
                &lt;sonar.jdbc.password&gt;sonarp4ss&lt;/sonar.jdbc.password&gt;

                &lt;sonar.host.url&gt;http://hostname:8080&lt;/sonar.host.url&gt;
            &lt;/properties&gt;
        &lt;/profile&gt;
</pre>
<p>Así, para ejecutar el plugin de Maven2, teclearíamos el siguiente comando:</p>
<pre class="brush: bash; title: ; notranslate">
mvn sonar:sonar
</pre>
<p>Si tenemos Maven3, sería así:</p>
<pre class="brush: bash; title: ; notranslate">
mvn sonar3:sonar
</pre>

<p><a href="http://feedads.g.doubleclick.net/~a/hb9sqXBqIEVuvqOPyjPvWsn24R8/0/da"><img src="http://feedads.g.doubleclick.net/~a/hb9sqXBqIEVuvqOPyjPvWsn24R8/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/hb9sqXBqIEVuvqOPyjPvWsn24R8/1/da"><img src="http://feedads.g.doubleclick.net/~a/hb9sqXBqIEVuvqOPyjPvWsn24R8/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/iCesofT/oss/~4/5_SfsctkciM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://oss.ahijado.org/2010/instalacion-de-sonar/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://oss.ahijado.org/2010/instalacion-de-sonar/</feedburner:origLink></item>
		<item>
		<title>Configuración de Apache Archiva</title>
		<link>http://feedproxy.google.com/~r/iCesofT/oss/~3/OsRVs2cPpCw/</link>
		<comments>http://oss.ahijado.org/2010/configuracion-de-apache-archiva/#comments</comments>
		<pubDate>Tue, 27 Jul 2010 04:30:57 +0000</pubDate>
		<dc:creator>iCesofT</dc:creator>
				<category><![CDATA[Maven]]></category>
		<category><![CDATA[archiva]]></category>
		<category><![CDATA[maven]]></category>

		<guid isPermaLink="false">http://oss.ahijado.org/?p=51</guid>
		<description><![CDATA[En la anterior entrada, decía cómo instalar Apache Archiva bajo Tomcat6 utilizando la base de datos Derby como gestor. En esta entrada, finalizaré la instalación indicando cómo hacer para que Archiva conecte con MySQL y daré los primeros pasos con Apache Archiva. Configuración con MySQL En primer lugar, debemos disponer de un sistema de base [...]]]></description>
			<content:encoded><![CDATA[<p>En la anterior entrada, decía cómo instalar Apache Archiva bajo Tomcat6 utilizando la base de datos Derby como gestor. En esta entrada, finalizaré la instalación indicando cómo hacer para que Archiva conecte con MySQL y daré los primeros pasos con Apache Archiva.</p>
<h1>Configuración con MySQL</h1>
<p>En primer lugar, debemos disponer de un sistema de base de datos MySQL ya instalado. Si no lo tenemos instalado, debemos ejecutar el siguiente comando:</p>
<pre class="brush: bash; title: ; notranslate">$ sudo apt-get install mysql-server-5.1 mysql-client-5.1</pre>
<p>A continuación, creamos una base de datos y un usuario exclusivos para Archiva:</p>
<pre class="brush: bash; title: ; notranslate">
$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 73
Server version: 5.1.41-3ubuntu12.3 (Ubuntu)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&gt; create database archiva;
Query OK, 1 row affected (0.07 sec)

mysql&gt; use archiva;
Database changed

mysql&gt; grant all privileges on archiva.* to archiva identified by 'archivapass';
Query OK, 0 rows affected (0.02 sec)

mysql&gt; exit
Bye
</pre>
<p>Con este paso, tenemos una base de datos &#8220;archiva&#8221; y un usuario &#8220;archiva&#8221; con todos los permisos hacia la misma.</p>
<p><span id="more-51"></span></p>
<p>Por último, necesitamos indicar a Archiva que se conecte con esta nueva tabla, pero previamente debemos instalar el driver JDBC de MySQL:</p>
<pre class="brush: bash; title: ; notranslate">
$ sudo su -
# apt-get install libmysql-java
# cd /usr/share/tomcat6/lib
# ln -s ../../java/mysql-connector-java.jar
</pre>
<p>Editamos la configuración de Archiva en Tomcat6 (archivo &#8220;/var/lib/tomcat6/conf/Catalina/localhost/archiva.xml&#8221;), comentando las entradas correspondientes a la conexión de base de datos Derby e incluyendo la conexión a MySQL. El archivo quedaría como éste:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;Context path=&quot;/archiva&quot;
         docBase=&quot;${catalina.base}/archiva/apache-archiva-1.3.1.war&quot;&gt;

&lt;!--
&lt;Resource name=&quot;jdbc/users&quot; auth=&quot;Container&quot; type=&quot;javax.sql.DataSource&quot;
    username=&quot;sa&quot;
    password=&quot;&quot;
    driverClassName=&quot;org.apache.derby.jdbc.EmbeddedDriver&quot;
    url=&quot;jdbc:derby:${catalina.base}/archiva/database/users;create=true&quot; /&gt;

&lt;Resource name=&quot;jdbc/archiva&quot; auth=&quot;Container&quot; type=&quot;javax.sql.DataSource&quot;
    username=&quot;sa&quot;
    password=&quot;&quot;
    driverClassName=&quot;org.apache.derby.jdbc.EmbeddedDriver&quot;
    url=&quot;jdbc:derby:${catalina.base}/archiva/database/archiva;create=true&quot; /&gt;
--&gt;

&lt;Resource name=&quot;jdbc/users&quot; auth=&quot;Container&quot; type=&quot;javax.sql.DataSource&quot;
    username=&quot;archiva&quot;
    password=&quot;archivapass&quot;
    driverClassName=&quot;com.mysql.jdbc.Driver&quot;
    url=&quot;jdbc:mysql://localhost:3306/archiva?autoReconnect=true&quot; /&gt;

&lt;Resource name=&quot;jdbc/archiva&quot; auth=&quot;Container&quot; type=&quot;javax.sql.DataSource&quot;
    username=&quot;archiva&quot;
    password=&quot;archivapass&quot;
    driverClassName=&quot;com.mysql.jdbc.Driver&quot;
    url=&quot;jdbc:mysql://localhost:3306/archiva?autoReconnect=true&quot; /&gt;

&lt;Resource name=&quot;mail/Session&quot; auth=&quot;Container&quot;
    type=&quot;javax.mail.Session&quot;
    mail.smtp.host=&quot;localhost&quot;/&gt;

&lt;/Context&gt;
</pre>
<p>Para terminar la instalación, debemos crear el directorio .m2 en el directorio del usuario tomcat6, de forma que Archiva la procese (y para que también podamos editarla desde la página de administración Archiva):</p>
<pre class="brush: bash; title: ; notranslate">
$ sudo mkdir ~tomcat6/.m2
$ sudo chown tomcat6:tomcat6 -R ~tomcat6/.m2
</pre>
<p>Ahora podemos reiniciar Tomcat y utilizar Apache Archiva como nuestro servidor de repositorio.</p>
<h1>Conexión a Apache Archiva &#8211; Creación de usuario administrador</h1>
<p>La primera vez que nos conectamos a Apache Archiva, éste genera las tablas necesarias en la base de datos y nos solicita la creación del usuario administrador:</p>
<div id="attachment_59" class="wp-caption aligncenter" style="width: 310px"><a class="vt-p" href="http://oss.ahijado.org/files/2010/07/archiva-create_admin_user-800.png"><img class="size-medium wp-image-59 " title="Apache Archiva - Create Admin User" src="http://oss.ahijado.org/files/2010/07/archiva-create_admin_user-800-300x147.png" alt="" width="300" height="147" /></a><p class="wp-caption-text">Apache Archiva - Create Admin User</p></div>
<p>Una vez creado el usuario, nos aparecerá la página de búsqueda:</p>
<div id="attachment_60" class="wp-caption aligncenter" style="width: 310px"><a class="vt-p" href="http://oss.ahijado.org/files/2010/07/archiva-search-800.png"><img class="size-medium wp-image-60  " title="Apache Archiva: Search" src="http://oss.ahijado.org/files/2010/07/archiva-search-800-300x167.png" alt="" width="300" height="167" /></a><p class="wp-caption-text">Apache Archiva: Search</p></div>
<h1><strong>Configuración de Repositorios</strong></h1>
<p>Una vez finalizada la instalación y configuración &#8220;base&#8221;, debemos incluir algunos repositorios de Maven 2 para que Archiva actúe de &#8220;proxy&#8221; hacia ellos, de forma que nosotros nos conectemos únicamente a Archiva y sea éste el que se encargue de descargar los archivos que necesitemos de los repositorios externos.</p>
<p>Para ello, desde la página de búsqueda, vista anteriormente, pulsaremos sobre el botón de &#8220;Repositories&#8221;. Aquí nos aparecerán los repositorios manejados (&#8220;Managed Repositories&#8221;) por defecto:</p>
<ul>
<li>Archiva Managed Internal Repository.</li>
<li>Archiva Managed Snapshot Repository.</li>
</ul>
<p>y dos repositorios remotos:</p>
<ul>
<li>Central Repository.</li>
<li>Java.net Repository for Maven 2.</li>
</ul>
<p>Lo primero que debemos hacer es modificar la configuración de los directorios dos repositorios manejados, de forma que los directorios estén bajo &#8220;/var/lib/tomcat6/archiva/repositories&#8221;. Para ello, sobre cada uno, pulsamos en el botón &#8220;Edit&#8221; y modificamos el parámetro:</p>
<div id="attachment_62" class="wp-caption aligncenter" style="width: 310px"><a class="vt-p" href="http://oss.ahijado.org/files/2010/07/archiva-admin_edit_managed_repository-800.png"><img class="size-medium wp-image-62" title="Apache Archiva: Admin: Edit Managed Repository" src="http://oss.ahijado.org/files/2010/07/archiva-admin_edit_managed_repository-800-300x167.png" alt="" width="300" height="167" /></a><p class="wp-caption-text">Apache Archiva: Admin: Edit Managed Repository</p></div>
<p>Una vez actualizados, pulsaremos sobre el botón &#8220;Add&#8221; en el apartado de &#8220;Remote Repositories&#8221;, añadiendo nuevos repositorios remotos:</p>
<div id="attachment_64" class="wp-caption aligncenter" style="width: 310px"><a class="vt-p" href="http://oss.ahijado.org/files/2010/07/archiva-admin_add_remote_repository-800.png"><img class="size-medium wp-image-64" title="Apache Archiva: Admin: Add Remote Repository" src="http://oss.ahijado.org/files/2010/07/archiva-admin_add_remote_repository-800-300x167.png" alt="" width="300" height="167" /></a><p class="wp-caption-text">Apache Archiva: Admin: Add Remote Repository</p></div>
<p>Y así, añadimos los siguientes repositorios:</p>
<ul>
<li>Codehaus: http://repository.codehaus.org/.</li>
<li>JBoss: http://repository.jboss.org/maven2/. Actualización (02/08/2010): JBoss ha dispuesto otro repositorio: http://repository.jboss.org/nexus/content/groups/public/.</li>
<li>IBiblio: http://mirrors.ibiblio.org/pub/mirrors/maven2/.</li>
<li>Spring: http://s3.amazonaws.com/maven.springframework.org/release.</li>
</ul>
<p>quedando del siguiente modo:</p>
<div id="attachment_65" class="wp-caption aligncenter" style="width: 222px"><a class="vt-p" href="http://oss.ahijado.org/files/2010/07/archiva-administration_repositories-800.png"><img class="size-medium wp-image-65" title="Apache Archiva: Administration - Repositories" src="http://oss.ahijado.org/files/2010/07/archiva-administration_repositories-800-212x300.png" alt="" width="212" height="300" /></a><p class="wp-caption-text">Apache Archiva: Administration - Repositories</p></div>
<h1>Configuración de conexiones de los repositorios</h1>
<p>Una vez que hemos añadido los repositorios remotos, hemos de indicar para qué paquetes Java utilizaremos cada uno de estos repositorios. Pulsamos sobre el enlace &#8220;Proxy Connectors&#8221; y a continuación sobre el botón &#8220;Add&#8221;. Éste es el ejemplo para añadir el repositorio de Codehaus:</p>
<div id="attachment_67" class="wp-caption aligncenter" style="width: 310px"><a class="vt-p" href="http://oss.ahijado.org/files/2010/07/archiva-admin_add_proxy_connector-800.png"><img class="size-medium wp-image-67" title="Apache Archiva: Admin: Add Proxy Connector" src="http://oss.ahijado.org/files/2010/07/archiva-admin_add_proxy_connector-800-300x167.png" alt="" width="300" height="167" /></a><p class="wp-caption-text">Apache Archiva: Admin: Add Proxy Connector</p></div>
<p>Nótese que hemos indicado el paquete &#8220;org/codehaus/**&#8221; en la &#8220;White List&#8221;, es decir, estamos indicando que se utilizará este repositorio remoto únicamente para descargar &#8220;artefactos&#8221; / librerías que cumplan este formato (cuyo groupId sea éste o esté compuesto por éste).</p>
<p>La configuración completa de todos los repositorios remotos, así como edición del repositorio &#8220;Java.net Repository for Maven 2&#8243; para añadirle en la &#8220;White List&#8221; el paquete &#8220;javolution/**&#8221; es ésta:</p>
<div id="attachment_68" class="wp-caption aligncenter" style="width: 197px"><a class="vt-p" href="http://oss.ahijado.org/files/2010/07/archiva-administration_proxy_connectors-800.png"><img class="size-medium wp-image-68" title="Apache Archiva: Administration - Proxy Connectors" src="http://oss.ahijado.org/files/2010/07/archiva-administration_proxy_connectors-800-187x300.png" alt="" width="187" height="300" /></a><p class="wp-caption-text">Apache Archiva: Administration - Proxy Connectors</p></div>
<h1>Configuración de Maven2 para conexión con Archiva</h1>
<p>Una vez que tenemos Apache Archiva funcionando, podemos configurar Maven2 para que lo utilice como repositorio de todos los paquetes necesarios en nuestros desarrollos, para lo cual, editamos nuestro archivo de configuración de Maven2 situado en nuestro directorio &#8220;.m2&#8243; de nuestro usuario, dejándolo de este modo:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;settings xmlns=&quot;http://maven.apache.org/SETTINGS/1.0.0&quot;
    xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
    xsi:schemaLocation=&quot;http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd&quot;&gt;
&lt;!--
    &lt;localRepository/&gt;
    &lt;interactiveMode&gt;true&lt;/interactiveMode&gt;
    &lt;usePluginRegistry/&gt;
    &lt;offline&gt;false&lt;/offline&gt;
    &lt;pluginGroups/&gt;
    &lt;servers/&gt;
--&gt;
    &lt;mirrors&gt;
        &lt;mirror&gt;
            &lt;id&gt;internal&lt;/id&gt;
            &lt;name&gt;Archiva Managed Internal Repository&lt;/name&gt;
            &lt;url&gt;http://hostname:8080/archiva/repository/internal&lt;/url&gt;
            &lt;mirrorOf&gt;*&lt;/mirrorOf&gt;
        &lt;/mirror&gt;
    &lt;/mirrors&gt;
&lt;!--
    &lt;proxies/&gt;
    &lt;profiles/&gt;
    &lt;activeProfiles/&gt;
--&gt;
&lt;/settings&gt;
</pre>
<p>* Este archivo se muestra a modo de ejemplo ya que, en realidad, únicamente hace falta añadir la parte relativa a &#8220;mirror&#8221;; el resto, debe configurarse en función de las necesidades de cada usuario.<br />
** Se debe sustituir la palabra &#8220;hostname&#8221; por el nombre o IP del servidor real de Apache Archiva.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/84t0tkhFltm8f6AUWyqQQkTOe4w/0/da"><img src="http://feedads.g.doubleclick.net/~a/84t0tkhFltm8f6AUWyqQQkTOe4w/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/84t0tkhFltm8f6AUWyqQQkTOe4w/1/da"><img src="http://feedads.g.doubleclick.net/~a/84t0tkhFltm8f6AUWyqQQkTOe4w/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/iCesofT/oss/~4/OsRVs2cPpCw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://oss.ahijado.org/2010/configuracion-de-apache-archiva/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://oss.ahijado.org/2010/configuracion-de-apache-archiva/</feedburner:origLink></item>
		<item>
		<title>Instalación de Apache Archiva</title>
		<link>http://feedproxy.google.com/~r/iCesofT/oss/~3/Y2rpY4qOgzU/</link>
		<comments>http://oss.ahijado.org/2010/instalacion-de-apache-archiva/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 22:26:13 +0000</pubDate>
		<dc:creator>iCesofT</dc:creator>
				<category><![CDATA[Maven]]></category>
		<category><![CDATA[archiva]]></category>
		<category><![CDATA[maven]]></category>

		<guid isPermaLink="false">http://oss.ahijado.org/?p=25</guid>
		<description><![CDATA[En esta entrada, voy a explicar cómo instalar Apache Archiva. Archiva es un gestor de repositorios para Maven proporciona, entre otras, las siguientes características: proxy para repositorios remotos, gestión de accesos, almacenamiento de los &#8220;artefactos&#8221;, indexación, reporte de utilización,&#8230; Esto nos permite disponer en un único sitio de todas las dependencias en nuestros proyectos. Por ejemplo, en un [...]]]></description>
			<content:encoded><![CDATA[<p>En esta entrada, voy a explicar cómo instalar <a class="vt-p" href="http://archiva.apache.org/">Apache Archiva</a>. Archiva es un gestor de repositorios para <a class="vt-p" href="http://maven.apache.org/">Maven</a> proporciona, entre otras, las siguientes características: proxy para repositorios remotos, gestión de accesos, almacenamiento de los &#8220;artefactos&#8221;, indexación, reporte de utilización,&#8230;</p>
<p>Esto nos permite disponer en un único sitio de todas las dependencias en nuestros proyectos. Por ejemplo, en un proyecto en el que participé, necesitábamos 2 jar de Oracle WebLogic Server. Para ello, cada uno de nosotros tuvimos que instalarlos vía Maven en nuestros respectivos equipos. Sin embargo, si hubiéramos tenido un repositorio Archiva disponible, podríamos haber instalado los jar en este repositorio y, con esto, serían accesibles desde nuestros equipos a la hora de desarrollar.</p>
<p><span id="more-25"></span></p>
<h1>Instalación</h1>
<p>En primer lugar, debemos descargarnos Apache Archiva, para ello, iremos a la <a class="vt-p" href="http://archiva.apache.org/download.html">página de descarga</a>. En este punto, dependiendo de nuestras necesidades, podríamos descargarnos:</p>
<ul>
<li>Si vamos a ejecutar Archiva de forma independiente, nos descargaremos los paquetes .tar.gz (para Unix/Linux) o .zip (para Windows).</li>
<li>Si por el contrario, vamos a ejecutar Archiva bajo un contenedor de aplicaciones, nos descargaremos el paquete .war.</li>
</ul>
<h2>Archiva de forma independiente</h2>
<p>Ésta es la forma más rápida para disponer de esta herramienta. Para instalarlo ejecutaríamos los siguientes pasos:</p>
<ol>
<li>Descomprimir el paquete:
<pre class="brush: bash; title: ; notranslate">$ tar xzf apache-archiva-1.3.1-bin.tar.gz</pre>
</li>
<li>Arrancar Archiva:
<pre class="brush: bash; title: ; notranslate">
$ cd apache-archiva-1.3.1/bin
$ ./archiva start
</pre>
</li>
</ol>
<p>Con estos simples pasos, ya tendríamos arrancada una instancia de Apache Archiva en el puerto 8080 utilizando un contenedor <a class="vt-p" href="http://jetty.codehaus.org/">Jetty</a>.</p>
<h2>Archiva bajo Tomcat6</h2>
<p>A partir de aquí, explicaré cómo configurar Apache Archiva en un <a class="vt-p" href="http://tomcat.apache.org/">Tomcat</a> 6.0 en un <a class="vt-p" href="http://www.ubuntu.com/server">servidor Ubuntu</a>. Estos puntos serán iguales o muy parecidos en otras distribuciones GNU/Linux.</p>
<p>Suponemos que tenemos ya instalado un servidor Tomcat6, si no, lo instalamos:</p>
<pre class="brush: bash; title: ; notranslate">$ sudo apt-get install tomcat6</pre>
<p>Creamos la estructura de directorios de Apache Archiva dentro de Tomcat:</p>
<pre class="brush: bash; title: ; notranslate">
$ sudo su -
# cd /var/lib/tomcat6
# mkdir archiva
# cd archiva
# cp ~icesoft/Descargas/apache-archiva-1.3.1.war .
# mkdir database
# mkdir repositories
# chown tomcat6:tomcat6 database repositories
</pre>
<p>Modificamos el archivo de configuración de Tomcat para incluir unas propiedades necesarias para Archiva:</p>
<pre class="brush: bash; title: ; notranslate">

cd /var/lib/tomcat6/conf

cat &lt;&lt;- _EOF_ &gt;&gt; catalina.properties
# Archiva
appserver.home=\${catalina.home}
appserver.base=\${catalina.base}
_EOF_
</pre>
<p>Creamos el archivo de configuración de la instancia de Archiva en Tomcat, para ello, creamos el archivo</p>
<pre class="brush: plain; title: ; notranslate">/var/lib/tomcat6/conf/Catalina/localhost/archiva.xml</pre>
<p>con el siguiente contenido:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;Context path=&quot;/archiva&quot;
         docBase=&quot;${catalina.base}/archiva/apache-archiva-1.3.1.war&quot;&gt;

&lt;Resource name=&quot;jdbc/users&quot; auth=&quot;Container&quot; type=&quot;javax.sql.DataSource&quot;
    username=&quot;sa&quot;
    password=&quot;&quot;
    driverClassName=&quot;org.apache.derby.jdbc.EmbeddedDriver&quot;
    url=&quot;jdbc:derby:${catalina.base}/archiva/database/users;create=true&quot; /&gt;

&lt;Resource name=&quot;jdbc/archiva&quot; auth=&quot;Container&quot; type=&quot;javax.sql.DataSource&quot;
    username=&quot;sa&quot;
    password=&quot;&quot;
    driverClassName=&quot;org.apache.derby.jdbc.EmbeddedDriver&quot;
    url=&quot;jdbc:derby:${catalina.base}/archiva/database/archiva;create=true&quot; /&gt;

&lt;Resource name=&quot;mail/Session&quot; auth=&quot;Container&quot;
    type=&quot;javax.mail.Session&quot;
    mail.smtp.host=&quot;localhost&quot;/&gt;

&lt;/Context&gt;
</pre>
<p>Por último, es necesario enlazar las librerías Java que necesita Apache Archiva.</p>
<pre class="brush: bash; title: ; notranslate">

# apt-get install sun-javadb-core
# cd /usr/share/tomcat6/lib
# ln -s ../../java/activation.jar
# ln -s ../../java/derby.jar
# ln -s ../../java/gnumail.jar
# ln -s ../../java/gnumail-providers.jar
</pre>
<p>Con todos estos pasos, ya podemos arrancar Tomcat</p>
<pre class="brush: bash; title: ; notranslate">$ sudo /etc/init.d/tomcat6 start</pre>
<p>y acceder a Apache Archiva: http://&lt;hostname&gt;:8080/archiva.</p>
<p>Con esta configuración, Archiva utilizará una base de datos JavaDB (Derby). En la siguiente entrada, pondré cómo configurar Archiva para que utilice MySQL como gestor de base de datos.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/6nm64jAXiAX22JadDEjZV9Wao4s/0/da"><img src="http://feedads.g.doubleclick.net/~a/6nm64jAXiAX22JadDEjZV9Wao4s/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/6nm64jAXiAX22JadDEjZV9Wao4s/1/da"><img src="http://feedads.g.doubleclick.net/~a/6nm64jAXiAX22JadDEjZV9Wao4s/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/iCesofT/oss/~4/Y2rpY4qOgzU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://oss.ahijado.org/2010/instalacion-de-apache-archiva/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://oss.ahijado.org/2010/instalacion-de-apache-archiva/</feedburner:origLink></item>
		<item>
		<title>Control de versiones</title>
		<link>http://feedproxy.google.com/~r/iCesofT/oss/~3/F8tq6YzqyyE/</link>
		<comments>http://oss.ahijado.org/2010/control-de-versiones/#comments</comments>
		<pubDate>Sun, 18 Jul 2010 14:01:48 +0000</pubDate>
		<dc:creator>iCesofT</dc:creator>
				<category><![CDATA[Control de versiones]]></category>
		<category><![CDATA[control versiones]]></category>
		<category><![CDATA[scm]]></category>

		<guid isPermaLink="false">http://www.icesoft.org/?p=7</guid>
		<description><![CDATA[Entendemos como control de versiones a la gestión de las distintas versiones (o revisiones) de los componentes que mantenemos de un determinado proyecto / producto u otro tipo de elemento susceptible de versionado. Puede verse una definición más completa en Control de versiones. Software Para dar soporte al control de versiones hay disponibles múltiples herramientas, tanto [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>Entendemos como control de versiones a la gestión de las distintas versiones (o revisiones) de los componentes que mantenemos de un determinado proyecto / producto u otro tipo de elemento susceptible de versionado.</p>
<p>Puede verse una definición más completa en <a class="vt-p" title="Control de Versiones" href="http://es.wikipedia.org/wiki/Control_de_versiones" target="_blank">Control de versiones</a>.</p>
<h1>Software</h1>
<p>Para dar soporte al control de versiones hay disponibles múltiples herramientas, tanto comerciales, como de libre distribución, como:</p>
<ul>
<li>Comerciales:
<ul>
<li><a class="vt-p" title="http://www.microsoft.com/latam/ssafe/" rel="nofollow" href="http://www.microsoft.com/latam/ssafe/" target="_blank">Microsoft Visual SourceSafe</a>.</li>
<li><a class="vt-p" title="http://www.serenainternational.com/Products/professional/vm/home.asp" rel="nofollow" href="http://www.serenainternational.com/Products/professional/vm/home.asp" target="_blank">PVCS Version Manager</a>.</li>
</ul>
</li>
<li>Gratuitas (GPL y/o Open Source):
<ul>
<li><a class="vt-p" title="http://ximbiot.com/cvs/" rel="nofollow" href="http://ximbiot.com/cvs/" target="_new">CVS</a>.</li>
<li><a class="vt-p" title="http://subversion.tigris.org/" rel="nofollow" href="http://subversion.tigris.org/" target="_new">Subversion</a>.</li>
</ul>
</li>
</ul>
<p>De estas herramientas, utilizaré Subversion, por ser open source y disponer de mejores características que CVS.</p>
<p><span id="more-7"></span></p>
<h1><strong>Instalación</strong></h1>
<p>En primer lugar, instalamos la aplicación:</p>
<p><code>
<pre class="brush: bash; title: ; notranslate">
apt-get install subversion
</pre>
<p></code></p>
<p>Para otros sistemas operativos, será necesario descargar los clientes desde la página principal de Subversion.</p>
<p>Una vez instalada, creamos el grupo y el usuario sobre los que correrá el servicio:</p>
<pre class="brush: bash; title: ; notranslate">
groupadd svn
adduser -c &quot;SVN Owner&quot; --home /srv/svn --ingroup svn --firstuid 100 --lastuid 200 \
--disabled-login --shell /bin/false svn
</pre>
<h1>Configuración</h1>
<p>Ahora generamos el repositorio:</p>
<pre class="brush: bash; title: ; notranslate">
install -v -m 0755 -o svn -g svn -d /srv/svn/repositories
svnadmin create --fs-type fsfs /srv/svn/repositories
chown -R svn:svn /srv/svn/repositories
</pre>
<p>Con el repositorio creado, el siguiente paso es la configuración de Subversion como demonio, creando el archivo /etc/init.d/svnserve:</p>
<pre class="brush: bash; title: ; notranslate">
#!/bin/sh
# start/stop svn (Subversion) server

set -e
NAME=svnserve
DESC=&quot;Subversion server&quot;
DAEMON=/usr/bin/$NAME
PARAMS=&quot;-d -T -r /srv/svn/repositories&quot;
DAEMONUSER=svn
test -x $DAEMON || exit 0
. /lib/lsb/init-functions

start_it_up()
{
log_daemon_msg &quot;Starting $DESC&quot; &quot;$NAME&quot;
start-stop-daemon --start --quiet --chuid $DAEMONUSER:$DAEMONUSER \
--exec $DAEMON -- $PARAMS
log_end_msg $?
}

shut_it_down()
{
log_daemon_msg &quot;Stopping $DESC&quot; &quot;$NAME&quot;
start-stop-daemon --stop --retry 60 --quiet --oknodo --exec $DAEMON
log_end_msg $?
}

case &quot;$1&quot; in
start)
start_it_up
;;
stop)
shut_it_down
;;
restart)
shut_it_down
start_it_up
;;
*)
echo &quot;Usage: /etc/init.d/$NAME {start|stop|restart}&quot; &gt;&amp;2
exit 1
;;
esac

exit 0
</pre>
<p>Ahora sólo queda crear los enlaces simbólicos necesarios en la estructura /etc/rcx.d para que el servicio se arranque y se pare automáticamente al arrancar y parar el servidor. Para ello se ejecutará el siguiente comando:</p>
<p><code>
<pre class="brush: bash; title: ; notranslate">update-rc.d svnserve defaults</pre>
<p></code></p>
<p>A continuación configuramos el servicio (usuarios):</p>
<p><code>
<pre class="brush: bash; title: ; notranslate">cat &lt; /srv/svn/repositories/conf/passwd
[users]
root = root
iCesofT = bar
_EOF_

cat &lt; /srv/svn/repositories/conf/svnserve.conf
[general]
anon-access = none
auth-access = write

password-db = passwd

realm = Subversion Repository
_EOF_

chmod 770 /srv/svn/repositories</pre>
<p></code></p>
<p>(Cambiar las contraseñas a las contraseñas deseadas)</p>
<h1>Creación de un proyecto</h1>
<p>Ahora podemos importar un proyecto de ejemplo, para lo cual, primero creamos la estructura base:</p>
<p><code>
<pre class="brush: bash; title: ; notranslate">cd /tmp
mkdir -p project/{branch,tags,trunk}
cd project/trunk
mkdir dir{1,2,3}</pre>
<p></code></p>
<p>Ahora importamos dicha estructura:</p>
<p><code>
<pre class="brush: bash; title: ; notranslate">cd /tmp
svn import project svn://host/project -m &quot;Initial release&quot;</pre>
<p></code></p>
<p>Y, para comenzar a trabajar sobre este proyecto, hacemos check-out:</p>
<p><span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 18px; font-size: 12px; white-space: pre;"> </span></p>
<pre class="brush: bash; title: ; notranslate">cd
mkdir scm
cd scm
svn checkout svn://host/project/trunk project</pre>
</div>

<p><a href="http://feedads.g.doubleclick.net/~a/OwBD7F-NW90cWu3Khi0UTwtmUBo/0/da"><img src="http://feedads.g.doubleclick.net/~a/OwBD7F-NW90cWu3Khi0UTwtmUBo/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/OwBD7F-NW90cWu3Khi0UTwtmUBo/1/da"><img src="http://feedads.g.doubleclick.net/~a/OwBD7F-NW90cWu3Khi0UTwtmUBo/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/iCesofT/oss/~4/F8tq6YzqyyE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://oss.ahijado.org/2010/control-de-versiones/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://oss.ahijado.org/2010/control-de-versiones/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 1.262 seconds. --><!-- Cached page generated by WP-Super-Cache on 2012-05-02 15:54:24 -->

