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:
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