Creando “symlinks” en Windows, muy útiles con Jenkins

El otro día Juanim me comentó que había descubierto que en Windows también se podían generar enlaces tipo “symlinks” (Symbolic Links). Algo muy util en sistemas Ubuntu y Mac… y que en Windows yo no sabía que también existían.

130943902179_1  Esto puede resultar muy util por ejemplo si quieres que Dropbox te sincronice una carpeta que no está dentro de la carpeta “oficial” de Dropbox. Imaginate que tus imágenes las tienes en c:/Mis Fotos… puedes crear un symlink en c:/Dropbox/Fotos que conecte con c:/Fotos… y a partir de ese momento tus fotos estarán a salvo en la nube y a disposición de todo agente de la NSA que lo estime oportuno.

Crear un enlace de este tipo también resuelve un problema que ya os comenté que me había encontrado en Jenkins, ¿cómo conseguir pasar tu repositorio clonado por Jenkins dentro de Program Files a su emplazamiento definitivo en la carpeta de tu sitio web a la que enlaza IIS?

Pues muy sencillo, creando un symlink de tipo “junction”.

  1. cd c:/Program Files (x86)/jobs/my-job/
  2. mklink /J workspace “e:/my-job”

Si todo ha ido bien te devolvera este mensaje:

Unión creada para workspace <<===>> e:/my-job

Este truco no es del todo apto para ser usado en una máquina en producción, ya que Jenkins te puede montar un pitoste de tres pares de narices. Por ejemplo esta mañana falló la conexión con bitbucket ya que me actualicé a la versión 64 bits de Git y se me olvidó actualizar la ruta de GIT en Jenkins.

El resultado fue un job “Finished: FAILURE”:

Captura_de_pantalla_122415_010051_PM

Hasta ahí todo normal… el problema es que cuando esto pasa Jenkins te vacía completamente la carpeta del repositorio, lo que en producción habría supuesto el borrado completo de toda la web.

Pero bueno, para una máquina en desarrollo se puede usar y es muy útil.