martes, 21 de enero de 2014

Aplicaciones para la gestión de la configuración

Aplicaciones para la gestión de la configuración

Infraestructura

  • Accurev: esto se puede ver claramente a través de la web de Deiser - AccuRev. AccuRev es la mejor solución, para gestión de procesos software y gestión de la configuración (SCM), diseñada para modelos de desarrollo ágiles, en cascada e híbridos. Adicionalmente, AccuRev soporta de forma excepcional las necesidades de los complejos entornos de desarrollo en paralelo , geográficamente distribuidos y desarrollos externalizados. La arquitectura basada en streams de AccuRev ha sido diseñada para asegurar la óptima colaboración de equipos, reutilización de software y la apelación en un 30% del proceso de desarrollo de software.
  • Subversion: Subversion (SVN) es un sistema de control de versiones diseñado específicamente para reemplazar al popular CVS. Es software libre bajo una licencia de tipo Apache/BSD y se le conoce también como svn por ser el nombre de la herramienta utilizada en la línea de comando.
  • Git Git es un software de control de versiones diseñado por Linus Torvalds, pensando en la eficiencia y la confiabilidad del mantenimiento de versiones de aplicaciones cuando estas tienen un gran número de archivos de código fuente. Al principio, Git se pensó como un motor de bajo nivel sobre el cual otros pudieran escribir la interfaz de usuario o front end como Cogito o StGIT. 2 Sin embargo, Git se ha convertido desde entonces en un sistema de control de versiones con funcionalidad plena. 3 Hay algunos proyectos de mucha relevancia que ya usan Git, en particular, el grupo de programación del núcleo Linux.
  • Chef: Chef es una herramienta para la gestión de configuraciones. Es decir, se encarga de instalar y configurar las aplicaciones en servidores o incluso estaciones de trabajo. Con él podemos realizar desde configuraciones básicas como establecer la hora del sistema, el idioma… hasta cosas tan complejas como levantar y configurar un cluster entero. Uno de sus objetivos es reemplazar los clásicos scripts hechos en bash por una alternativa más escalable y sencilla de mantener.

Automatización en la construcción y despliegue


  • Ant: Apache Ant es una herramienta usada en programación para la realización de tareas mecánicas y repetitivas, normalmente durante la fase de compilación y construcción (build). Es, por tanto, un software para procesos de automatización de compilación, similar a Make pero desarrollado en lenguaje Java y requiere la plataforma Java, así que es más apropiado para la construcción de proyectos Java. Esta herramienta, hecha en el lenguaje de programación Java, tiene la ventaja de no depender de las órdenes del shell de cada sistema operativo, sino que se basa en archivos de configuración XML y clases Java para la realización de las distintas tareas, siendo idónea como solución multi-plataforma.
  • Maven: Maven es una herramienta de software para la gestión y construcción de proyectos Java creada por Jason van Zyl, de Sonatype, en 2002. Es similar en funcionalidad a Apache Ant (y en menor medida a PEAR de PHP y CPAN de Perl), pero tiene un modelo de configuración de construcción más simple, basado en un formato XML. Maven utiliza un Project Object Model (POM) para describir el proyecto de software a construir, sus dependencias de otros módulos y componentes externos, y el orden de construcción de los elementos. Viene con objetivos predefinidos para realizar ciertas tareas claramente definidas, como la compilación del código y su empaquetado. Una característica clave de Maven es que está listo para usar en red. El motor incluido en su núcleo puede dinámicamente descargar plugins de un repositorio, el mismo repositorio que provee acceso a muchas versiones de diferentes proyectos Open Source en Java, de Apache y otras organizaciones y desarrolladores.
  • Gradle: Gradle es una herramienta para automatizar el proceso de construcción de software, o lo que comúnmente se llama, hacer una build. Viene a ser un Maven moderno, donde podemos destacar las siguientes diferencias:
    • Se escribe en un DSL de Groovy en lugar de en XML, por lo que queda mucho más conciso.
    • Al ser Groovy un lenguaje de programación, tenemos mucha más flexibilidad para particularizar el proceso. Ojo porque esto puede ser un arma de doble filo, ya que si nos salimos demasiado del estándar no habrá nadie que entienda nuestro proceso, así que esto tratarlo con cariño.
    • Soporta de manera sencilla el proceso de construcción de otros lenguajes que no sean Java, como Groovy, Scala, ... 
    Por supuesto, y al igual que Maven, tenemos gestión automática de las dependencias de nuestro proyecto, de hecho se conecta a los mismos repositorios de Maven o incluso de Ivy.
  • Continuum: Apache Continuum, un sistema complementario de Apache Maven, es un servidor de integración continua1 que ejecuta compilaciones de acuerdo con una calendarización configurable. De manera semejante a CruiseControl, Continuum envía correos electrónicos a los desarrolladores cuando la compilación arroja fallas, sugiriendo que el responsable subsane el problema. Para agregar un proyecto a Continuum, solo es necesario identificar el pom.xml en el sistema de control de fuentes.
  • Jenkins: Jenkins es un software de Integración continua open source escrito en Java. Está basado en el proyecto Hudson y es, dependiendo de la visión, un fork del proyecto o simplemente un cambio de nombre. Jenkins proporciona integración continua para el desarrollo de software. Es un sistema corriendo en un servidor que es un contenedor de servlets, como Apache Tomcat. Soporta herramientas de control de versiones como CVS, Subversion, Git, Mercurial, Perforce y Clearcase y puede ejecutar proyectos basados en Apache Ant y Apache Maven, así como scripts de shell y programas batch de Windows. El desarrollador principal es Kohsuke Kawaguchi. Liberado bajo licencia MIT, Jenkins es software libre.
  • Bamboo: Bamboo es un servidor de integración continua (CI) de Atlassian que se integra plenamente con Jira y que se paga en función del número de agentes de build que necesitas, lo que hace que la inversión esté alineada con tus necesidades. Incluso hay una versión on demand, es decir, en modalidad SaaS.
  • Cruise Control: CruiseControl es una aplicación de código abierto basado en Java que permite la compilación automática de proyectos Java, utilizando Ant o Maven. Es una herramienta comúnmente utilizada en integración continua que cada cierto tiempo, o cuando hay cambios en el gestor de versiones (por ejemplo CVS o Subversion), hace una compilación y ejecuta tests (más cualquier otra cosa que esté configurada en Ant o Maven) y una vez acaba presenta el resultado. Esta presentación puede ser en HTML, por correo electrónico, RSS, Jabber/XMPP, etcétera. Fue originalmente desarrollado por gente de ThoughtWorks como una manera de conseguir Integración Continua en alguno de sus proyectos. Posteriormente y dada su utilidad, la herramienta fue desarrollada como una aplicación independiente (stand-alone application). Actualmente, existe también una version de CruiseControl para .Net llamada CruiseControl.Net.

Despliegues con Chef

He encontrado una aplicación que sirve para la gestión de la configuración de entornos de prueba y explotación.
Aquí pongo acceso a un tutorial sobre cómo funciona:

  1. Chef: Primeros Pasos
  2. Chef: Desplegando nuestro primer cookbook
  3. Desplegando una aplicación LAMP con Chef
  4. Chef: Estructura del repositorio
  5. Chef: Entendiendo los atributos
  6. Chef: Añadiendo atributos a nuestro cookbook de Wordpress

miércoles, 4 de diciembre de 2013

Maven no accede a repositorios en internet

Maven no accede a repositorios en internet

El problema es debido a la preferencia de IPv4/IPv6 de Java. Java intenta utilizar IPv6 de forma predeterminada (?) y mi ISP no soporta IPV6. Sin embargo, está habilitado en mi Windows 7 de forma predeterminada.
Si estás experimentando un comportamiento similar, se puede verificar esto yendo a "Panel de control / Conexiones de red e Internet / Red", hacemos clic con el botón derecho en su conexión a Internet, y seleccionando "Status" en el menú contextual. El cuadro de diálogo de estado mostrará dos líneas similares a esta:

IPv4 Connectivity: Internet
IPv6 Connectivity: No hay acceso a internet

Esta es la raíz del problema, Java prefiere IPv6, que no puede conectarse a Internet.
Para solucionar este problema, realiza cualquiera de las dos (o ambos) de estas tareas:
  1. Desactivar IPv6 en su caja de Windows 7.
  2. Comience el programa de java utilizando esta opción de línea de comandos: -Djava.net.preferIPv4Stack = true
La realización de cualquiera uno de estos se solucionará el problema.

lunes, 4 de noviembre de 2013

Despliegue de Jenkins en un servidor dedicado



La instalación de jenkins en un servidor de aplicaciones web, como por ejemplo, tomcat, es tan sencillo como poner el fichero jenkins.war en la carpeta $TOMCAT_HOME/webapps. El propio servidor de aplicaciones se encargará de realizar el despliegue y poder acceder desde un navegador.

Pero también se puede realizar un despliegue de Jenkins en un servidor dedicado que lleva intrínseco dentro del war. Se trata de un servidor web llamado winstone, que no consigo encontrar en la web como servidor independiente. De esta manera, no es necesario instalar un tomcat para poder utilizar jenkins.

A continuación se indican los comandos a ejecutar para gestionar la instancia de jenkins con el servidor dedicado:

  • Para realizar el despliegue de jenkins se ejecuta lo siguiente:
    java -jar D:\tomcat\webapps\jenkins.war --httpPort=8082 --controlPort=8001
    
    donde el argumento --controlPort indica el puerto para controlar la instancia. Este parámetro es fundamental para poder reiniciar o para la instancia.
  • Para reiniciar la instancia se ha de ejecutar el siguiente comando:
    java -cp $JENKINS_HOME/war/winstone.jar winstone.tools.WinstoneControl reload: --host=localhost --port=8001
    
  • Para parar la instancia se ha de ejecutar el siguiente comando:
    java -cp $JENKINS_HOME/war/winstone.jar winstone.tools.WinstoneControl shutdown --host=localhost --port=8001
    

Editar un libro en papel

Hay varias páginas para editar un libro, por ejemplo, escrito en word y pasado a pdf o a epub, y contratar los servicios de alguien que se encargue de editarlo.
No hace falta que escribas un best-seller, ni si quiera es necesario ponerlo a la venta. Si estás en un caso como el mío, que quieres editar un libro para tí o para tu familia, entonces, esto te puede interesar.
Existen un par de webs que se dedican a editar libros. También los puedes poner a la venta en internet, pero eso es opcional.

 Las webs son éstas:
Las dos se dedican a casi lo mismo. El siguiente artículo explica las ventajas e inconvenientes de usar uno u otro.
http://www.escritores.org/publicar/articulos-de-interes/1442-lulu-vs-bubok-mi-experiencia-

lunes, 14 de octubre de 2013

Instalación de Wordpress en Ubuntu

Primero hay que instalar wordpress en el sistema a través de paquete synaptic con el siguiente comando:

$ sudo apt-get install wordpress

Después hay que configurar el servidor apache para sea capaz de leer la ubicación de wordpress como recurso. Se supone que wordpress se ha instalado en la carpeta /usr/share/wordpress, entonces lo que hemos de hacer es indicárselo al apache en su fichero de configuración que hay que crear nuevo /etc/apache2/sites-available/wordpress.

    Alias /blog /usr/share/wordpress
    Alias /blog/wp-content /var/lib/wordpress/wp-content
    <Directory /usr/share/wordpress>
        Options FollowSymLinks
        AllowOverride Limit Options FileInfo
        DirectoryIndex index.php
        Order allow,deny
        Allow from all
    </Directory>
    <Directory /var/lib/wordpress/wp-content>
        Options FollowSymLinks
        Order allow,deny
        Allow from all
    </Directory>
Después hay que habilitar este nuevo site dentro del servidor con el siguiente comando:
$ sudo a2ensite wordpress
Y después recargar el servidor apache:
$ sudo service apache2 restart
Este artículo es el oficinal para indicar cómo se instala:
Otro artículo interesante, ya que también utilizo mediaWiki, es este otro donde dice cómo instalar mediaWiki. Para esto dedicaré un artículo entero.