Deploy automático con Vercel vía Webhooks

Intro

En el vídeo anterior personalizamos nuestro sitio desarrollado con Astro. Ya está listo para ponerlo en producción. ¿Lo subimos a Vercel?

Aquí hay dos temas importantes:

  • Uno es realizar la primera configuración del proyecto en Vercel.\
  • Otro, como estamos trabajando en modo SSG (es decir, construimos el sitio en tiempo de despliegue y servimos HTML y CSS estático), es cómo hacer para que cuando publiquemos nuevo contenido en Content Island se lance un nuevo despliegue automáticamente.

Si lo prefieres, en este vídeo te explicamos paso a paso como hacerlo.

Vamos a ver como realizar esto paso a paso.

Subida a Github

El primer paso para poder desplegar es tener el proyecto en GitHub. Para ello:

Creamos un repo en github, vamos al apartado de Repositories

repositories

Y le damos al botón de New.

new-github-button.webp

Vamos a llamar a nuestro repositorio mi-sitio.

repository name

Para que veas que lo podemos crear tanto para repositorios públicos como privados, vamos a crearlo como privado.

choose visibility

Y pulsamos sobre el botón de Create repository.

create repository button

En la página principal copiamos la URL del repositorio.

copy link

Nos vamos a nuestro proyecto local, paramos la ejecución e inicializamos un repositorio de Git en nuestra carpeta de proyecto:

git init

init repo

Añadimos los nuevos cambios:

git add .

git add

Hacemos commit:

git commit -m "Subiendo mi sitio a GitHub"

git commit

Vinculamos el repositorio local con el remoto:

git remote add origin

git remote add origin

Creamos la rama main:

git branch -M main

git branch

Y hacemos push:

git push -u origin main

git push

Si vamos a nuestro repositorio y refrescamos, podemos ver que el código ya está subido.

github repo

Desplegando en Vercel

Navegamos a Vercel. En caso de que no tengas cuenta, puedes crear una gratuita.

Pinchamos en Add New...Project.

add new project

Si es la primera vez que usas Vercel, te pedirá que elijas la plataforma donde tienes tus repositorios, ya sea GitHub, Bitbucket o GitLab.

add github account

Seleccionamos nuestra cuenta.

add my account

Si es la primera vez que integramos GitHub con Vercel, tendremos que darle permiso. Le indicamos únicamente el repositorio con el que vamos a trabajar (mi-sitio). Es buena idea, por seguridad, no darle permiso a todos los repositorios, sino solo a los que vayamos a usar.

only select repositories

Instalamos.

install repository

Y confirmamos nuestra contraseña.

confirm password

Aquí ya tenemos nuestro sitio. Ahora pinchamos en Import.

import repository

Vercel detecta automáticamente que es un proyecto de Astro y nos preconfigura los comandos de build y la carpeta de salida. También podemos configurarlo si necesitamos hacer algún ajuste.

IMPORTANTE: En nuestro caso necesitamos configurar la variable de entorno CONTENT_ISLAND_ACCESS_TOKEN con la API Key que hemos generado en Content Island para que Vercel pueda acceder a nuestro contenido.

Nos vamos a nuestro proyecto en Content Island y copiamos el valor de nuestro token.

content island

Y lo añadimos como variable en Vercel. Ojo: no compartas este token con nadie.

add token

Y pinchamos en Deploy.

deploy button

Si esperamos un momento, nuestro sitio estará desplegado.

deployed project

Le damos a Continue to Dashboard.

continue to dashboard

Y aquí podemos ver que se ha generado nuestro dominio.

vercel domain

Si pinchamos sobre la imagen del proyecto, ya estamos live. En mi caso, con un dominio del tipo .vercel.app.

my site

También puedes tener un dominio personalizado, en este post del propio Vercel te explican cómo hacerlo.

Configurando el webhook en Content Island

Todo genial, pero... queremos que cuando publiquemos nuevos posts estos se vean reflejados automáticamente en nuestro sitio web.

Para ello, vamos a configurar un webhook que permita a Content Island notificar a Vercel que debe lanzar un nuevo despliegue cuando se publique contenido.

Nos vamos a los settings del proyecto de Vercel.

vercel settings

Elegimos Git en el sidebar.

selected git

En Deploy Hook, le damos un nombre al webhook (por ejemplo, Content Island Deploy), seleccionamos la rama (main) y pulsamos sobre Create Hook.

create hook

Esto nos dará una URL de webhook.

copy url

Ahora vamos al proyecto de Content Island y, en la pestaña de webhooks, creamos uno nuevo de Vercel.

add new webhook

Le damos un nombre, pegamos la URL del webhook y guardamos.

save new webhook

Volvemos y comprobamos que se ha creado correctamente.

webhook list

A partir de ahora, cada vez que publiquemos nuevas entradas en Content Island, se lanzará automáticamente un nuevo despliegue en Vercel y nuestro sitio web se actualizará con el contenido más reciente.

Probando el webhook

Vamos a hacer una prueba...

Cambiamos el título de un post y lo publicamos.

updated post

Si vamos a la pestaña de Deployments en Vercel, veremos cómo se ha lanzado un nuevo despliegue automáticamente.

deployment status 1

Si esperamos un poco puedes ver que el sitio se ha actualizado con el nuevo título del post.

deployment status 2

Si vamos a vercel vemos que se ha actualizado la web.

new post

Y a partir de ahora, solo tienes que preocuparte de crear buen contenido en Content Island. El resto se hace solo.