BitBucket Pipeline para desplegar un static site con Hugo

BitBucket Pipeline para desplegar un static site con Hugo

Hoy vengo con un post puramente DevOps y es la automatización de la publicación de los posts de éste blog. Hasta hoy, quizás por pereza, no lo había automatizado y hacía la publicación manualmente. Aquí explicaré como Bitbucket Pipelines me ha ayudado, muy fácilmente, a realizarlo de forma automática cada vez que hago un push a la banch Master y está autorizada. Veamos un poco el diagrama de soporte:

Bitbucket Pipelines

Vamos a realizar dos pasos, los siguientes:

  • Creación del fichero “bitbucket-pipelines.yml” que tendrá la configuración de la Pipeline de Bitbucket.
  • Variables de entorno para conectar la Pipeline de Bitbucket con AWS S3 y hacer su deploy.

NOTA: Cierto es que, anteriormente, creé una imagen Docker que contiene Python 2.7 instalado, las AWS CLI y Hugo. Se llamará su imagen en el fichero “bitbucket-pipelines.yml”.

Configuración de la Pipeline de Bitbucket

Crearemos el fichero “bitbucket-pipelines.yml” con un contenido muy específico, veamos:

image: kimtux/hugo-pipeline

pipelines:
  default:
    - step:
        script:
          - hugo
          - aws s3 sync --delete public s3://bucket-name

La primera línea del fichero image: kimtux/hugo-pipeline es la que despliega, en un Docker, la imagen comentada anteriormente, seguidamente se desplegará nuestro código (git clone) y se publicará mediante el command: hugo. Si pasa los test que ya Hugo contempla de forma automatizada, se continuará sincronizando los cambios aws s3 sync --delete public s3://bucket-name en el contenido en nuestro bucket correspondiente de AWS S3.

Despliegue en AWS S3

Para poder realizar el paso de sincronización a AWS S3 necesitaremos, antes, realizar una configuración en Bitbucket Pipelines. Deberemos ir a: “/Bitbucket/Settings/Environment variables” y añadir tres:

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • AWS_DEFAULT_REGION

Estos datos los podremos localizar cuando, en AWS creamos una Access Key.

Una vez lo tengamos, la Pipeline automáticamente se pondrá en marcha y realizará todas las acciones determinadas en el fichero “bitbucket-pipelines.yml”. Si todo va bien, terminará correctamente y tendremos que, cada vez que haya un cambio en la Branch Master, se pondrá en marcha y ejecutará los pasos.

Autor: Joakim Vivas

comments powered by Disqus