2023/08/05 Actualización: Codeball.ai ya no está disponible. He eliminado las acciones relacionadas con él, pero el post permanecerá tal cual para fines de archivo.
¡Hola a todos!
El otro día me entretuve en revisar información sobre Hugo, Github Actions, etc y decidí cambiar la forma en la que funciona la web porque me parecía que era lo correcto.
El antes
Cuando publiqué por primera vez la web, todo estaba contenido en un solo repositorio.
En este repositorio tenia todo lo relativo a Hugo, y el flujo de trabajo era algo así:
- Arrancaba el servidor de Hugo en mi local, ejecutando
hugo serve
. - Accedía a la url de mi local y veía el servidor.
- Creaba una rama y hacía los cambios necesarios.
- Revisaba los cambios en mi local. Repetir pasos 3 y 4 tantas veces como sea necesario.
- Creaba un commit con los cambios y los pusheaba a origin en Github.
- Creaba una Pull Request.
- Se ejecuta una Github Action de codeball.ai que analiza el código y te da un factor de confianza.
- Se mergea la
PR?
a
main
. - Con cada commit nuevo en main, se ejecuta otra Github Action que hace el build de los archivos estáticos de Hugo. Básicamente ejecuta
hugo
que genera la carpeta depublic
. Una vez generados los archivos, se publican en Github Pages con otra Action.
Lo cierto es que este flujo funciona bien pero tiene varias desventajas. No puedes tener el repositorio en privado si quieres usar Github Pages, tienes en un mismo repositorio mucho codebase y archivos generados, etc.
Con el nuevo flujo, podrías tener el repositorio con los archivos estáticos público, y el original, que hace el build de la web, privado (aunque este no sea mi caso).
Nuevo flujo de trabajo
En este nuevo flujo vamos a tener dos repositorios, uno que es como el antiguo, donde está todo el codebase de Hugo, y otro donde simplemente estarán los estáticos de la web.
Y realmente, una vez implementados los cambios, tampoco cambia mucho el flujo. En el último paso del antiguo flujo es dónde hacemos cambios: ahora generamos la carpeta public
en el repositorio original, pero no la publicamos. Ahora está se sube al repositorio nuevo con una Github Action. Una vez se pushea esta información al nuevo repositorio, se ejecuta la publicación del sitio web estático.
Este gráfico puede explicar un poquito el flujo, aunque estoy seguro que está mal definido porque nunca llegué a aprender diagramas secuenciales 😅:
Esto es útil si por ejemplo queremos ocultar el reposition original. En mi caso, estoy usando codeball.ai y solo es gratis para los repositorios públicos, así que de momento, voy a mantener ambos repos públicos, pero quién sabe.
Eso es todo, ¡muchas gracias por leerme!