Desplegar Hugo usando Pipelines en Bitbucket

Estos días atrás los he pasado haciendo un doble desksurfing interno en Redradix para conocer de cerca el rol de DevOps, y para dar a conocer el de maqueta, y ha sido muy gratificante.

Desksurfing es como se llama a la práctica en la que una o varias personas se integran en una empresa ajena con el fin de colaborar durante dos o tres días en sus procesos y dinámicas, para conocer de primera mano otras formas de enfrentarse al día a día, el uso de otras metodologías o tecnologías, favoreciendo así el intercambio de ideas con otros compañeros de profesión y enriqueciéndose mutuamente. Es algo así como el espionaje industrial pero de forma regulada, de provecho para ambas partes y sin jugarse el pellejo.

Así que como visitante, he estado tratando de entender el trabajo de este perfil profesional del que tan poco sabía, y como cabría esperar, he aprendido muchas cosas. Algunas las olvidaré con el tiempo al no poder ponerlas en práctica en el día a día, pero otras habrán calado porque sí las he trasladado a mis proyectos, es así por ejemplo, con la integración continua y despliegue continuo (CI/CD).

El problema

Para el desarrollo del blog utilizamos HUGO por varios motivos: velocidad de renderizado, multi idioma, escritura con markdown… Pero esto nos obliga también a tener que compilar cuando terminamos un artículo y queremos subirlo, ya que son estáticos y no provienen de una base de datos. El proceso apenas es ejecutar un comando en una terminal pero después, tenemos que subir manualmente por sftp a nuestro servidor los archivos generados, y esto sí es un problema.

La solución

Automatización de tareas.

Como parte del trabajo desarrollado estos días, aprendí algunas cosas de CI/CD, tanto usando Github Actions como Pipelines en Bitbucket. Así que vi la oportunidad de llevarme un aprendizaje tangible automatizando estas tareas, que además de ser tediosas, son poco frecuentes, lo que abre la puerta a cometer errores manuales porque olvidamos en cada repetición del proceso cosas a tener en cuenta.

Desplegando en Bitbucket

En Bitbucket, en la pestaña ‘Deployments’ puedes escribir el pipeline para desplegar o automatizar cualquier tarea. Además, puedes usar las plantillas predefinidas del configurador que contemplan un montón de casos, pero también puedes añadir pasos extra usando diferentes integraciones.

Desplegar con cada subida al repositorio

En nuestro caso, con cada subida de código a la rama master, queremos ejecutar este proceso que consta de dos pasos: (1) ejecutar Hugo para compilar el blog y (2) subir al servidor los archivos resultantes.

El código es bastante auto-explicativo y se lee fácilmente pero si tienes dudas deja un comentario debajo o escríbenos a hola@mamutlove.com

image: atlassian/default-image:3

pipelines:
  branches:
    master:
      - step:
          name: Build Hugo
          script:
            - apt-get update -y && apt-get install wget
            - apt-get -y install git
            - wget https://github.com/gohugoio/hugo/releases/download/v0.68.3/hugo_0.68.3_Linux-64bit.deb
            - dpkg -i hugo*.deb
            - hugo --minify
          artifacts:
            - public/es/**
            - public/en/**
      - step:
          name: Deploy artifacts
          deployment: production
          script:
            - pipe: atlassian/sftp-deploy:0.5.8
              variables:
                USER: $USER
                SERVER: $SERVER
                REMOTE_PATH: '/'
                PASSWORD: $PASSWORD
                LOCAL_PATH: 'public/es/**'
            - pipe: atlassian/sftp-deploy:0.5.8
              variables:
                USER: $USER
                SERVER: $SERVER
                REMOTE_PATH: '/'
                PASSWORD: $PASSWORD
                LOCAL_PATH: 'public/en'

Conclusiones

Compatir tu trabajo con otros profesionales es una forma increíble de mejorar a nivel profesional. Generar debate a través del intercambio de ideas, el estar dispuesto a escuchar otros puntos de vista y cuestionarte la forma en la que trabajas es, a la fuerza, ganarse un aprendizaje. Por eso, iniciativas como el desksurfing son tan valiosas, no importa que seas invitado o anfitrión, algo vas a aprender independientemente de cuánto conozcas sobre la disciplina a la que te acerques. A veces, el aprendizaje no es técnico, sino que puede estar relacionado con la organización o priorización de tareas, gestión del tiempo o metodología de trabajo.

Para saber más

comments powered by Disqus

Si te ha parecido interesante

Tanto si tienes alguna duda o quieres charlar sobre este tema, como si el contenido o nuestros perfiles te parecen interesantes y crees que pdemos hacer algo juntos, no dudes en ponerte en contacto con nosotros a través de twitter o en el email hola@mamutlove.com