Mostrando entradas con la etiqueta travis. Mostrar todas las entradas
Mostrando entradas con la etiqueta travis. Mostrar todas las entradas

6 de abril de 2021

Dependencias del sistema de un módulo Perl

Hola, 

un problema con el que tropecé recientemente al preparar un fichero .travis.yaml para un repositorio en GitHub es que algunos módulos Perl pueden fallar al ser instalados porque dependen de software adicional que no está instalado en el sistema operativo. La solución pasa por instalar esas dependencias antes de los módulos en cuestión, tal como se hace por ejemplo con libgd-dev en https://github.com/eead-csic-compbio/get_homologues/blob/master/.travis.yml

En esta entrada lo que quería compartir es el módulo CPAN-Plugin-Sysdeps, que sirve precisamente para averiguar qué dependencias del sistema tiene cualquier módulo. Un ejemplo vale más que mil palabras:

# instalamos cpan-sysdeps
cpanm CPAN::Plugin::Sysdeps
--> Working on CPAN::Plugin::Sysdeps
Fetching http://www.cpan.org/authors/id/S/SR/SREZIC/CPAN-Plugin-Sysdeps-0.68.tar.gz ... OK
Configuring CPAN-Plugin-Sysdeps-0.68 ... OK
Building and testing CPAN-Plugin-Sysdeps-0.68 ... OK
Successfully installed CPAN-Plugin-Sysdeps-0.68
1 distribution installed

# ahora comprobamos las dependencias de cualquier módulo
cpan-sysdeps --cpanmod DB_File
libdb5.3-dev

# si quieres ver solamente las que faltan por instalar
cpan-sysdeps --cpanmod DB_File --uninstalled

# finalmente, puedes instalar directamente esas dependencias
apt-get install $(cpan-sysdeps --uninstalled --cpanmod DB_File)

Hasta pronto,

Bruno



6 de febrero de 2020

Valida con Travis tu código en un repositorio GitHub

Hola,
tras escuchar un par de charlas en la London Perl Conference 2019 (vídeos aquí) tenía pendiente agregar una validación por integración continua a uno de nuestros repositorios en GitHub. Opté por Travis, aunque otra buena opción si empiezas de cero es https://about.gitlab.com 
https://travis-ci.org



Para qué sirve esto? Pues para no romper nada en bases de código que ya tienen un cierto tamaño cuando haces cambios a lo largo del tiempo. En mi caso, el repositorio https://github.com/eead-csic-compbio/get_homologues tiene más de 20K líneas de código y acumula actualizaciones (commits) desde noviembre de 2016. Al vincular este repositorio a Travis (https://travis-ci.com/eead-csic-compbio/get_homologues) cada vez que hago un nuevo commit/push se lanza una máquina virtual que hace una batería de tests y me informa si va todo bien o si algo se ha roto.

Es sencillo, debes seguir estos pasos:

  1. Vincular tu repositorio GitHub en https://travis-ci.com con el mismo usuario que usas en GitHub.
  2. Agrega al repositorio un fichero .travis.yml con instrucciones para que Travis sepa como instalar correctamente el código del repositorio y sus dependencias. Puedes comprobar mi ejemplo .travis.yml , adecuado para un proyecto en Perl. Verás que las dependencias de Perl están en el fichero cpanfile. Hay documentación para otrs lenguajes, por ejemplo python .
  3. En tu repositorio preparar una batería de tests o pruebas para comprobar que todo funciona cómo esperas. Por defecto Travis hace $ make test, por tanto lo más fácil es crear un fichero Makefile con un objetivo test incluído. Ejemplo: Makefile
  4.  En el fichero markdwon README.md de tu repositorio puedes agregar la siguiente línea, adaptada a tu proyecto, para tener el certificado actualizado de que el repositorio pasa los tests en su estado actual:
    [![Build Status](https://travis-ci.com/eead-csic-compbio/get_homologues.svg?branch=master)](https://travis-ci.com/eead-csic-compbio/get_homologues)
Hasta pronto, Bruno